Skip to content

Commit f95ac69

Browse files
committed
moved command line and related options into new unit
1 parent e3e63bf commit f95ac69

12 files changed

Lines changed: 449 additions & 204 deletions

File tree

.timestamps

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11129,26 +11129,28 @@
1112911129
1775168885 7d90943f6f0d41d75f9ec12df08c6c7cd0becfac5056efeac8397c947c4565330e3e39d81f8ede4b466dc524508899a4ecf4131c6a34f9509bb0e2ad69722c9d utilities/makehtml/LICENSE
1113011130
1775346744 c39038de71a15fb6b385e0e027f6615ad786a1371808f05917051d9d66acfbdf679514d6d5c88b18d9bf1ead4622ffdb0b9e1df3331250843be121a3b9939b3f utilities/makehtml/bintree.pp
1113111131
1775660894 f1e3f70fbe3269e3147c8800f006afb76fd74f1dc4045afb16e5304537ae03e3d2f21e15b17e59175bce6f55831fe8a879de85270400862e7066e3cd8b6d3a3a utilities/makehtml/build.sh
11132+
1775833427 0469c94084d8e81c7d7db9ef262bdd0051be42beeaf13851bd75a08d0110f360d08752bba2627000760b015ff1d0c10c4094c1b465621b347a01aaf774a27726 utilities/makehtml/cfgopts.pas
1113211133
1775720771 6800769ea5a07a9d7712e84104fb64a789e6d33e434fff4a7fddc6ff1823c9d77c2d83f21006169a582b07bc0c7e93f23c1d48904ace93d71d6d4503e7e657c1 utilities/makehtml/makehtml.lpi
11133-
1775661702 3f3c0cd208d00d37c010b930bfd9ff5d46a3da7dc038f6bbbcec547a81573579d3bf584c443c719c6eee922ddea2f7ef3cc3f773d62c0eb7fa9b572e1d616fcd utilities/makehtml/makehtml.lpr
11134-
1775720771 3679051e65e5ec5dafc79f9d7d04b1bbce922550b645d46a2faf189d808eff0eed237a0323467317a6e0a595a2af96697eb0653425effa1c1702711b24f38773 utilities/makehtml/makehtml.lps
11135-
1775720771 6f5d8b628dd4272a23e2b49ca34481ab4878409a35e76995710ba526fd97a1a4d5e411ffe40f92c3ebb1654f90af20f3bdb3006798444cb83b45843a5ce6c218 utilities/makehtml/makehtml.res
11134+
1775832759 787c285cebbd5afea616243276e221b37907efcb7e899ae42c420e3b3dc58a4058dc32abb81fa7ce0525e3d0825b2a0af9e89d613f853348bce3f78943d8a588 utilities/makehtml/makehtml.lpr
11135+
1775833459 3e5476ee58d5f6bc02c91ed7c4b4a79f35c943d5ed918d93ac80b97bc9de9e692b48764738ae2979fc66351ba446dc2933bbf3f997a5f5c7b1424e24fdcb403e utilities/makehtml/makehtml.lps
11136+
1775828358 e2fa0071d5ffc0ce5064981cfa617f5b2a6108c23ce168fdde3d1b5ac91060cf491cf9d00394dffca9cd1358138299dfdcb0a7bb40f6269c90c193e2cd9b481c utilities/makehtml/makehtml.res
1113611137
1775346672 3b7b7e6edaaf6c9728d260d3ca2bfd3ef4b08615e1f5caa1ca18e44439c85c5b53a445fb2decbf81874f761f4f818e2750e9e2291adc6497f052a7807328aee1 utilities/makehtml/pasext.pp
1113711138
1775168827 6693f98642328f20ac92c57358eb532107f81b00e506b939ffd65dedf03d5baf2b825588128fe00bda86530b130809a7075384df429b9fd86f0ef9ea2db88cb6 utilities/makehtml/patches.pp
1113811139
1775661439 4df3ff269b202a1dac7edad5200ad9ca0fcf6c4fe7614d0df925b1f3d5a1938bb575be93e2a7dade1b5e4b21dd3536181a27357e31b53da2dca25dae234413de utilities/makehtml/version.def
11139-
1775661439 f15b9b05b8d75753a67ef0e67811b05228e8f726b5498055ac1ed083bc1e66d5417deeea1be72fb355014eac9bc546667f501fb1a1e31d952abbdd2a9699abf2 utilities/makehtml/version.pp
11140+
1775833459 6fae8e55c72737ca93164b0390b5947590f53be9accde392c3948add9545161ed1e5b0fd1a48317a6dfa86b1f3275dea1556ecae61621666388327b68d51c984 utilities/makehtml/version.pp
1114011141
1775434032 6df374e7a87c22059bf39cd9ed1614e1af6d785e20c2ec6b386b164b31816462027d0ebfe11ae4ecaa1f6d5bca15d3ab5ad9ff7d14df9ec47bfd13e3d4e0a6d3 utilities/makehtml/version.sh
1114111142
1775168885 7d90943f6f0d41d75f9ec12df08c6c7cd0becfac5056efeac8397c947c4565330e3e39d81f8ede4b466dc524508899a4ecf4131c6a34f9509bb0e2ad69722c9d utilities/makelist/LICENSE
1114211143
1775346744 c39038de71a15fb6b385e0e027f6615ad786a1371808f05917051d9d66acfbdf679514d6d5c88b18d9bf1ead4622ffdb0b9e1df3331250843be121a3b9939b3f utilities/makelist/bintree.pp
1114311144
1775471907 83bab5fe5b3027fc86b404315a63b0eb56b7ed776592138e0adf51a1937fb6201eeddea18ac31b96bbd5f37b75e90caf0114ff6ec6326aa4f29d7cd1afbf4f50 utilities/makelist/build.sh
11144-
1775827798 abcf235f2f1932b5a7142ed5a3d3d98da292a13de9b5db810fedfd12772897d510f0e78fd1f90916294375c86b3c8f282f9ef44770b02d2afdd9fad90b6caee4 utilities/makelist/makelist.lpi
11145-
1775827954 b1d7bb08c4894d2a55d84a19fe19d2404587669ec0b06bc70a7eb83bb89c9bd422df5503e1dae4813071f5086c3879fb30fada3b831187b264b2188477af837b utilities/makelist/makelist.lpr
11146-
1775827979 a2804cea5c3dea94b21d45ca60c16be0890ed8b14db620026f6f403d4b423e89f450008c1cb2d68e3d90939ae2fcf02bf77b53c7f776687704ef7051a8fb07aa utilities/makelist/makelist.lps
11147-
1775827798 3fd511bf8e26bc47bca0d45de701e1b249106700454818006b855cbf78e2622f15ca82c945a37deb539e3357bf50cf2982cedf48d54aa0264101b7841aebeb62 utilities/makelist/makelist.res
11145+
1775833997 17a022f3b636422945b021745a9ea382d64a97388827c1b46c14793801fa05da946e1def46bf9bd57ebdb106ef6911353b14a5e8318a2ef8a3207bf7fa8cc3a7 utilities/makelist/cfgopts.pas
11146+
1775833997 6d342b974787029131eaea09b41555a6337cc76bd4674bda6a93f00c3683fc1472112cc0b0cb1c10c7a902f7e972c280c51b542df28e5de8a071c88a1328ed16 utilities/makelist/makelist.lpi
11147+
1775834031 be72a8e703e093613cc8715f40814cf449ead954f8920feefa3e09329269a77f55696d7779b5a0d321c13c79de7ed33e1114a42b90f8e2fa64b76f85efc8cf69 utilities/makelist/makelist.lpr
11148+
1775834032 da253ee0f13d90061f934738b38811b75147b633ab91b1565d95c7c1f7eced2e7be6d84ddc7c9244382e1eb6c8caf0a3ecd28b7c551eb1fc9fee0fdb2b59034e utilities/makelist/makelist.lps
11149+
1775833969 64c1eb323dff64d6d9f4cc5f6770cd7caf9c336dd80f980c58ec4664534672cc7265a49340d1ce7d73ab23641b2e5aa1f552028cea82f5fc62bbeea57a1bbcbf utilities/makelist/makelist.res
1114811150
1775346672 3b7b7e6edaaf6c9728d260d3ca2bfd3ef4b08615e1f5caa1ca18e44439c85c5b53a445fb2decbf81874f761f4f818e2750e9e2291adc6497f052a7807328aee1 utilities/makelist/pasext.pp
1114911151
1775168827 6693f98642328f20ac92c57358eb532107f81b00e506b939ffd65dedf03d5baf2b825588128fe00bda86530b130809a7075384df429b9fd86f0ef9ea2db88cb6 utilities/makelist/patches.pp
1115011152
1774885828 4df3ff269b202a1dac7edad5200ad9ca0fcf6c4fe7614d0df925b1f3d5a1938bb575be93e2a7dade1b5e4b21dd3536181a27357e31b53da2dca25dae234413de utilities/makelist/version.def
11151-
1775827980 fb26f2476b99ae2ab22491023b1ace427d3b7f43a069ec35534d7bd91c6ce6001c2484dc72131c1130b07e7775306ac4c8902c0aacdc5033de078422b27971b2 utilities/makelist/version.pp
11153+
1775834032 e489c854579d6d968a5b1f0d9dfa75ce92b919831a4fc411b779c3ec6af61d1bfd107d49f9df07aa730435c0628215784ac00bfb60e51c058d792e54a3e11992 utilities/makelist/version.pp
1115211154
1775434032 6df374e7a87c22059bf39cd9ed1614e1af6d785e20c2ec6b386b164b31816462027d0ebfe11ae4ecaa1f6d5bca15d3ab5ad9ff7d14df9ec47bfd13e3d4e0a6d3 utilities/makelist/version.sh
1115311155
1768044299 6d1670f425e5641c713c54e3102ee4627c6b539c84b10e93751f61161c28b672bec484d1add903fa406d5048255b3a10cd65e327346f58c83e273adc78d82bf5 utilities/one-off/breakdown-parser/LICENSE
1115411156
1775169301 f5e24688afba4ab8200d1ebd2b3fe82c836ce5e370fe692a6247ae0ad40580b974674b697ffdfe50284e8d2d479faeff56a3ee7cd0f5e16ff1e9112981ebf805 utilities/one-off/breakdown-parser/build.sh

utilities/makehtml/cfgopts.pas

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
// Copyright 2026, Jerome Shidel
2+
// The Clear BSD License
3+
// All rights reserved.
4+
5+
unit CfgOpts;
6+
7+
{$mode objfpc}{$H+}
8+
9+
{$I patches.pp} // Various compiler directives to "fix" things.
10+
{$I version.def} // Version information defines
11+
12+
interface
13+
14+
uses
15+
{$IFDEF USES_CWString} cwstring, {$ENDIF}
16+
{$IFDEF UNIX}
17+
cthreads,
18+
{$ENDIF}
19+
SysUtils,
20+
{ you can add units after this }
21+
Version, PasExt;
22+
23+
var
24+
Source : String;
25+
Output : String;
26+
27+
{ Display Program Banner and Version }
28+
procedure Banner;
29+
30+
{ Process Command Line Options }
31+
procedure Options;
32+
33+
{ Display the "See Help" Message and terminate with an error code. }
34+
procedure SeeHelp(Message : String);
35+
36+
{ Display program help and terminate. }
37+
procedure Help;
38+
39+
40+
implementation
41+
42+
procedure Banner;
43+
begin
44+
LogMessage(vbNormal,APP_PRODUCTNAME + ' v' + APP_VERSION);
45+
LogMessage(vbNormal,'Copyright ' + APP_LEGALCOPYRIGHT);
46+
LogMessage(vbNormal,'The Clear BSD License ');
47+
LogMessage(vbNormal, '');
48+
end;
49+
50+
procedure Help;
51+
52+
const
53+
Switches : array of record
54+
S, L, V, M : String;
55+
end = (
56+
(S:''; L:'--version'; V:''; M:'Display version information and exit.'),
57+
(S:'-h'; L:'--help'; V:''; M:'Display command-line help and exit.'),
58+
(S:''; L:''; V:''; M:''),
59+
(S:'-v'; L:'--verbose'; V:'(level)'; M:'Specify a verbosity level (0-4).'),
60+
(S:''; L:''; V:''; M:''),
61+
(S:'-s'; L:'--source'; V:'(path)'; M:'Specify a path that contains "The List" files.'),
62+
(S:'-o'; L:'--output'; V:'(path)'; M:'Specify a path to store the HTML files.')
63+
// (S:''; L:''; V:''; M:''),
64+
// (S:''; L:'--cicd'; V:''; M:'More strict verification for usage with CI/CD.')
65+
// (S:''; L:'--issues'; V:'(file)'; M:'Write a list of the files with issues to a file.')
66+
);
67+
68+
var
69+
I, J, WA, WB : Integer;
70+
S : String;
71+
begin
72+
WriteLn('usage: ', ExtractFileName(ParamStr(0)), ' [option]');
73+
WriteLn;
74+
WA:=0;
75+
WB:=0;
76+
for I := 0 to High(Switches) do begin
77+
J:=Length(Switches[I].S);
78+
if Length(Switches[I].L) > 0 then Inc(J, Length(Switches[I].L) + 3);
79+
if WA < J then WA:=J;
80+
if Length(Switches[I].V) >= WB then WB:=Length(Switches[I].V) + 1;
81+
end;
82+
for I := 0 to High(Switches) do begin
83+
S:=RightPad(Switches[I].S, 2);
84+
if Switches[I].L <> '' then
85+
Cat(S, WhenTrue(Trim(S) <> '', ', ', SPACE2) + Switches[I].L);
86+
if S = '' then begin
87+
WriteLn;
88+
if Switches[I].M <> '' then begin
89+
WriteLn(Switches[I].M);
90+
WriteLn;
91+
end;
92+
continue;
93+
end else
94+
S:=RightPad(S, WA) + RightPad(Switches[I].V, WB) + Switches[I].M;
95+
WriteLn(TrimRight(S));
96+
end;
97+
WriteLn;
98+
Halt(0);
99+
end;
100+
101+
procedure SeeHelp(Message : String);
102+
begin
103+
LogMessage(vbCritical, Message);
104+
LogMessage(vbCritical, 'see: ' + ExtractFileName(ParamStr(0)) + ' --help');
105+
Halt(1);
106+
end;
107+
108+
109+
procedure Options;
110+
var
111+
I : Integer;
112+
Opt : String;
113+
114+
function NextOpt(Required : boolean = true) : string;
115+
begin
116+
if I > ParamCount then
117+
SeeHelp('Missing parameter for command-line option: ' + Opt);
118+
if Required and (Trim(ParamStr(I)) = '') then
119+
SeeHelp('Cannot provide blank parameter for command-line option: ' + Opt);
120+
Result:=ParamStr(I);
121+
Inc(I);
122+
end;
123+
124+
var
125+
V, E : Integer;
126+
127+
begin
128+
I:=1;
129+
While I <= ParamCount do begin
130+
Opt:=NextOpt;
131+
case Opt of
132+
'--version' : begin
133+
Banner;
134+
Halt(0);
135+
end;
136+
'-h', '--help' : begin
137+
Help;
138+
end;
139+
'-v', '--verbose' : begin
140+
Val(NextOpt, V, E);
141+
if (E<>0) then V:=-1;
142+
case V of
143+
0 : VerboseLevel:=vbCritical;
144+
1 : VerboseLevel:=vbMinimal;
145+
2 : VerboseLevel:=vbNormal;
146+
3 : VerboseLevel:=vbVerbose;
147+
4 : VerboseLevel:=vbExcessive;
148+
else
149+
SeeHelp('Invalid verbosity level: ' + IntToStr(V));
150+
end;
151+
end;
152+
// '--cicd' : CICD:=True;
153+
// '--issues' : Issues:=Trim(NextOpt);
154+
'-s', '--source' : Source:=IncludeTrailingPathDelimiter(Trim(NextOpt));
155+
'-o', '--output' : Output:=IncludeTrailingPathDelimiter(Trim(NextOpt));
156+
else
157+
SeeHelp('Invalid command-line option: ' + Opt);
158+
end;
159+
end;
160+
end;
161+
162+
end.

utilities/makehtml/makehtml.lpr

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@
1414
{$IFDEF UNIX}
1515
cthreads,
1616
{$ENDIF}
17-
Classes, SysUtils, IniFiles
18-
{ you can add units after this },
19-
Version, PasExt, BinTree, StrUtils;
20-
21-
{$R *.res}
17+
Classes, SysUtils, IniFiles, StrUtils,
18+
{ you can add units after this }
19+
Version, PasExt, BinTree, CfgOpts;
2220

2321
begin
24-
22+
Options;
23+
Banner;
2524
end.
2625

utilities/makehtml/makehtml.lps

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,45 @@
77
<Unit>
88
<Filename Value="makehtml.lpr"/>
99
<IsPartOfProject Value="True"/>
10+
<CursorPos X="20" Y="17"/>
11+
<UsageCount Value="56"/>
12+
<Loaded Value="True"/>
13+
</Unit>
14+
<Unit>
15+
<Filename Value="options.pp"/>
16+
<UnitName Value="Options"/>
17+
<EditorIndex Value="-1"/>
18+
<CursorPos X="12" Y="5"/>
19+
<UsageCount Value="10"/>
20+
</Unit>
21+
<Unit>
22+
<Filename Value="cfgopts.pas"/>
23+
<UnitName Value="CfgOpts"/>
1024
<IsVisibleTab Value="True"/>
11-
<CursorPos Y="26"/>
12-
<UsageCount Value="53"/>
25+
<EditorIndex Value="1"/>
26+
<TopLine Value="50"/>
27+
<CursorPos X="46" Y="93"/>
28+
<UsageCount Value="11"/>
1329
<Loaded Value="True"/>
1430
</Unit>
1531
</Units>
16-
<JumpHistory>
32+
<JumpHistory HistoryIndex="3">
1733
<Position>
1834
<Filename Value="makehtml.lpr"/>
1935
<Caret Line="26" Column="10"/>
2036
</Position>
37+
<Position>
38+
<Filename Value="cfgopts.pas"/>
39+
<Caret Line="134" TopLine="112"/>
40+
</Position>
41+
<Position>
42+
<Filename Value="cfgopts.pas"/>
43+
<Caret Line="19" Column="12"/>
44+
</Position>
45+
<Position>
46+
<Filename Value="cfgopts.pas"/>
47+
<Caret Line="25" Column="4"/>
48+
</Position>
2149
</JumpHistory>
2250
<RunParams>
2351
<FormatVersion Value="2"/>

utilities/makehtml/makehtml.res

0 Bytes
Binary file not shown.

utilities/makehtml/version.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ interface
2121
APP_BUILD: String = '0';
2222
APP_TITLE: String = 'makehtml';
2323
APP_LEGALCOPYRIGHT: String = '(c) 2026 Jerome Shidel';
24-
APP_PRODUCTNAME: String = 'The List to HTML convertor';
24+
APP_PRODUCTNAME: String = 'The List to HTML conversion utility';
2525
APP_PRODUCTVERSION: String = '1.0';
2626
APP_YEAR: String = '';
2727

0 commit comments

Comments
 (0)