Inheritance diagram for SequenceRunner


Public Methods | |
| SequenceRunner () | |
| void | begin () |
| void | filter (const cmt_string& line) |
| void | end () |
Private Attributes | |
| bool | started |
| bool | running |
| cmt_string | style |
| cmt_string | vdir |
| cmt_string | package |
| cmt_string | filename |
| cmt_string | buffer |
| cmt_string | pwd |
This is run as follows:
> cd ../demo > cmt run_sequence xxx.cmt
where xxx.cmt is a text file containing descriptions of sequence steps:
sequence_step : package-creation | file-description | package-access | cmt-action | comment
package-creation : "%package" <package-name> requirements-file
This creates a package from the current location, at version v1 structuration style is considered. Requirements file follows the statement.
requirements-file : file-contents
file-description : "%file" <file-path> file-contents
Create a files relatively to the last created package.
package-access : "%cdpackage" <package-name>
Move to the cmt directory of the specified package
cmt-action : "%cmt"
Perform the specified cmt action.
file-contents : line ...
comment : %%% ...
Definition at line 2709 of file cmt_parser.cxx.
|
|
Definition at line 2713 of file cmt_parser.cxx. 02714 {
02715 }
|
|
|
Reimplemented from Awk. Definition at line 2717 of file cmt_parser.cxx. 02718 {
02719 started = false;
02720 running = false;
02721 if (style == CmtSystem::getenv ("CMTSTRUCTURINGSTYLE"))
02722 {
02723 vdir = CmtSystem::file_separator ();
02724 vdir += "v1";
02725 }
02726 else
02727 {
02728 vdir = "";
02729 }
02730 package = "";
02731 filename = "";
02732 buffer = "";
02733 pwd = "";
02734 }
|
|
|
Reimplemented from Awk. Definition at line 2844 of file cmt_parser.cxx. 02845 {
02846 if (running)
02847 {
02848 if (buffer != "")
02849 {
02850 buffer.write (filename);
02851 //cout << "%%Writing file " << filename << endl;
02852 //cout << buffer << endl;
02853 buffer = "";
02854 }
02855 running = false;
02856 }
02857 }
|
|
|
Reimplemented from Awk. Definition at line 2736 of file cmt_parser.cxx. 02737 {
02738 //cout << "line=[" << line << "]" << endl;
02739
02740 CmtSystem::cmt_string_vector words;
02741
02742 CmtSystem::split (line, " \t", words);
02743
02744 cmt_string verb;
02745
02746 if (words.size () > 0) verb = words[0];
02747
02748 if (verb.substr (0, 2) == "%%")
02749 {
02750 if (verb.substr (0, 3) == "%%%") return;
02751
02752 if (running)
02753 {
02754 buffer.write (filename);
02755 //cout << "%%Writing file " << filename << endl;
02756 //cout << buffer << endl;
02757 buffer = "";
02758
02759 running = false;
02760 }
02761 }
02762
02763 if (verb == "%%package")
02764 {
02765 package = words[1];
02766
02767 cmt_string command = "cmt create ";
02768 command += package;
02769 command += " v1";
02770
02771 CmtSystem::execute (command);
02772 //cout << "%% creating package " << package << " with command [" << command << "]" << endl;
02773
02774 filename = package;
02775 filename += vdir;
02776 filename += CmtSystem::file_separator ();
02777 filename += "cmt";
02778 filename += CmtSystem::file_separator ();
02779 filename += "requirements";
02780
02781 started = true;
02782 }
02783 else if (verb == "%%file")
02784 {
02785 cmt_string file = words[1];
02786
02787 cmt_string d = package;
02788 d += vdir;
02789 d += CmtSystem::file_separator ();
02790 d += file;
02791 CmtSystem::dirname (d, d);
02792
02793 CmtSystem::mkdir (d);
02794 //cout << "%% creating directory " << d << endl;
02795
02796 buffer = "";
02797
02798 filename = package;
02799 filename += vdir;
02800 filename += CmtSystem::file_separator ();
02801 filename += file;
02802 started = true;
02803 }
02804 else if (verb == "%%cdpackage")
02805 {
02806 package = words[1];
02807
02808 pwd = package;
02809 pwd += vdir;
02810 pwd += CmtSystem::file_separator ();
02811 pwd += "cmt";
02812 }
02813 else if (verb == "%%cmt")
02814 {
02815 cmt_string command;
02816
02817 if (pwd != "")
02818 {
02819 command = "cd ";
02820 command += pwd;
02821 command += " ";
02822 command += CmtSystem::command_separator ();
02823 command += " ";
02824 }
02825
02826 command += line;
02827 command.replace ("%%", "");
02828
02829 CmtSystem::execute (command);
02830 }
02831 else
02832 {
02833 buffer += line;
02834 buffer += "\n";
02835 }
02836
02837 if (started)
02838 {
02839 started = false;
02840 running = true;
02841 }
02842 }
|
|
|
Definition at line 2866 of file cmt_parser.cxx. |
|
|
Definition at line 2865 of file cmt_parser.cxx. |
|
|
Definition at line 2864 of file cmt_parser.cxx. |
|
|
Definition at line 2867 of file cmt_parser.cxx. |
|
|
Definition at line 2861 of file cmt_parser.cxx. |
|
|
Definition at line 2860 of file cmt_parser.cxx. |
|
|
Definition at line 2862 of file cmt_parser.cxx. |
|
|
Definition at line 2863 of file cmt_parser.cxx. |
1.2.3 written by Dimitri van Heesch,
© 1997-2000