root/branches/0_1_3/ConsUtilServiceClass.pas

Revision 86, 6.0 kB (checked in by sagrer, 1 year ago)

Заготовка уже реально работающей VerRevUpdater?, которая до сих пор использовалась как тестовый полигон. Тесты и все им сопутствующее что нашел - убрал, добавил сервисный класс и класс с логикой. Пока пустые, только дескрипшн вбил. В TConsUtilServiceClass просто чуть-чуть поправил текст справки, никаких значительных изменений.

  • Property svnmailer:content-charset set to cp1251
Line 
1 ///////////////////////////////////////////////////////////
2 //                 TConsUtilServiceClass                 //
3 //   Базовый класс для "интерфейса" консольной утилиты   //
4 //                Copyright (C) 2007 Sagrer              //
5 //              Распространяется на условиях             //
6 //                      LGPL v2.1                        //
7 //                                                       //
8 //                  версия модуля 0.1                    //
9 //                                                       //
10 //                  sagrer@yandex.ru                     //
11 ///////////////////////////////////////////////////////////
12
13 //К работе над данным файлом приложили руки, ноги.... короче аффтары:
14 // 1) Sagrer (sagrer@yandex.ru)
15
16 ////////////////////////////////////////////////////////////////////////
17
18 unit ConsUtilServiceClass;
19
20 {$mode objfpc}{$H+}
21
22 interface
23
24 uses
25   Classes, SysUtils, forms;
26
27 type
28   TConsUtilServiceClass = class        //Базовый класс для "интерфейса" консольной утилиты
29   private
30   protected
31     //Защищенные переменные.
32     ProcessFurther : boolean;          //Продолжать ли выполнение команд.
33     //Защищенные методы.
34   public
35     //Переменные
36     DoShowHelp : boolean;              //Показывать ли справку.
37     DoShowVersion : boolean;           //Выводить ли инфу о версии.
38     DoSilent : boolean;                //Работать ли в тихом режиме.
39     DoPause : boolean;                 //Ждать ли нажатия любой клавиши после завершения всех действий.
40
41     //Конструкторы-деструкторы...
42     constructor Create; virtual;
43     destructor Destroy; override;
44
45     //Другие методы...
46     procedure ProcessParameters;  virtual;     //Проверить параметры командной строки.
47     procedure DoWork;             virtual;     //Выполнить боевую задачу %).
48     procedure ShowHelp;           virtual;     //Вывести справку.
49     procedure ShowVersion;        virtual;     //Вывести версию.
50     procedure ShowOptions;        virtual;     //Перегружается в наследнике, если нужно вывести дополнительные опции в хелпе
51     procedure ShowDescription;    virtual;     //Перегружается в наследнике если нужно вывести дополнительное описание утилиты.
52   end;
53
54 implementation
55
56 /////////////////////////////////////////////
57 //          TConsUtilServiceClass          //
58 /////////////////////////////////////////////
59
60 //-----------------------------------------//
61 //        Конструкторы-деструкторы...      //
62 //-----------------------------------------//
63
64 constructor TConsUtilServiceClass.Create;
65 begin
66   //Проставить дефолтные значения...
67   ProcessFurther := true;
68   DoShowHelp := false;
69   DoShowVersion := false;
70   DoSilent := false;
71   DoPause := false;
72
73   //Создать вложенные объекты классов...
74 end;
75
76 destructor TConsUtilServiceClass.Destroy;
77 begin
78   //Выкидываем мусор
79
80   //Выполнить унаследованный деструктор
81   inherited;
82 end;
83
84 //------------------------------------------//
85 //             Другие методы...             //
86 //------------------------------------------//
87
88 procedure TConsUtilServiceClass.ProcessParameters;
89 //Проверить параметры командной строки.
90 begin
91   //Проверим опции командной строки...
92
93   if Application.HasOption('h') or Application.HasOption('help') or Application.HasOption('?') then begin
94     //Вывести справку.
95     DoShowHelp := true;
96   end;
97
98   if Application.HasOption('v') or Application.HasOption('version') then begin
99     //Выводить инфу о номере версии.
100     DoShowVersion := true;
101   end;
102
103   if Application.HasOption('s') or Application.HasOption('silent') then begin
104     //Работать в тихом режиме.
105     DoSilent := true;
106   end;
107
108   if Application.HasOption('p') or Application.HasOption('pause') then begin
109     //Паузить ли перед завершением работы
110     DoPause := true;
111   end;
112 end;
113
114 procedure TConsUtilServiceClass.DoWork;
115 //Выполнить боевую задачу %).
116 begin
117   //Выполнить нужно одну из задач - по её завершении ProcessFurther := false
118   //и дальше нифига не выполняется.
119
120   //Справка.
121   if (DoShowHelp = true) and (ProcessFurther = true) then begin
122     //Блокировка других веток
123     ProcessFurther := false;
124     //Выводим инфу...
125     ShowHelp;
126   end;
127
128   //Номер версии.
129   if (DoShowVersion = true) and (ProcessFurther = true) then begin
130     //Блокировка других веток
131     ProcessFurther := false;
132     //Выводим инфу...
133     ShowVersion;
134   end;
135
136   //Если ничего до сих пор не выполнилось - то выполняем боевую задачу....
137   //Тут экзампл. По идее вы должны это через override сделать в своем классе.
138   //if ProcessFurther = true then begin
139     ////Блокировка других веток
140     //ProcessFurther := false;
141     ////Работаем....
142
143   //end;
144
145 end;
146
147 procedure TConsUtilServiceClass.ShowHelp;
148 //Вывести справку.
149 begin
150   //Отделяющая строка.
151   Writeln();
152   //Выводим сначала версию...
153   ShowVersion();
154   //Отделяющая строка.
155   Writeln();
156   //Описание
157   ShowDescription();
158   //Отделяющая строка.
159   Writeln();
160   //Теперь выводим собсно справку...
161   Writeln('Usage: '+ExtractFileName(Application.ExeName)+ ' [options]');
162   Writeln();
163   // Показать доступные опции...
164   ShowOptions;
165   //Отделяющая строка.
166   Writeln();
167 end;
168
169 procedure TConsUtilServiceClass.ShowVersion;
170 //Вывести версию.
171 begin
172   //Пусто. Оверрайдте.
173 end;
174
175 procedure TConsUtilServiceClass.ShowOptions;
176 //Перегружается в наследнике, если нужно вывести дополнительные опции в хелпе
177 begin
178   Writeln('Options:');
179   Writeln('          -h, --help, -? : shows this help message.');
180   Writeln('          -v, --version : shows utility''s version number and copyright.');
181   Writeln('          -s, --silent : works in silent mode (without any questions).');
182   Writeln('                         By default works in interactive mode and can ');
183   Writeln('                         ask anything.');
184   Writeln('          -p, --pause : waits until User press Enter after finishing all work.');
185 end;
186
187 procedure TConsUtilServiceClass.ShowDescription;
188 //Перегружается в наследнике если нужно вывести дополнительное описание утилиты.
189 begin
190   //Пусто. Оверрайдте.
191 end;
192
193 end.
194
Note: See TracBrowser for help on using the browser.