lazarus-ccr/wst/trunk/ws_helper/command_line_parser.pas
inoussa bf962826cf +TypeScript generation.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9600 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2025-01-23 18:13:16 +00:00

113 lines
3.4 KiB
ObjectPascal

{
This file is part of the Web Service Toolkit
Copyright (c) 2006-2014 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit command_line_parser;
interface
uses
Classes, SysUtils;
Type
TComandLineOption = (
cloInterface, cloProxy, cloImp, cloBinder, cloWsdl, cloXsd, cloJava,
cloTypeScript,
cloOutPutDirRelative, cloOutPutDirAbsolute, cloHandleWrappedParameters,
cloGenerateDocAsComments, cloGenerateObjectCollection,
cloFileRenaming, cloPrefixEnum, cloParserCaseSensitive,
cloStringMaping, cloCreateChoiceFields
);
TComandLineOptions = set of TComandLineOption;
function ParseCmdLineOptions(out AAppOptions : TComandLineOptions):Integer;
function GetOptionArg(const AOption : TComandLineOption):string;
implementation
uses getopts;
Var
OptionsArgsMAP : Array[TComandLineOption] of string;
function GetOptionArg(const AOption : TComandLineOption):string;
begin
Result := OptionsArgsMAP[AOption];
end;
function ParseCmdLineOptions(out AAppOptions : TComandLineOptions):Integer;
var
c : Char;
begin
AAppOptions := [];
c := #0;
repeat
c := GetOpt('u:pibo:a:wxydg:f:c:jt');
case c of
'u' :
begin
Include(AAppOptions,cloInterface);
OptionsArgsMAP[cloInterface] := OptArg;
end;
'p' : Include(AAppOptions,cloProxy);
'i' : Include(AAppOptions,cloImp);
'b' : Include(AAppOptions,cloBinder);
'o' :
Begin
Include(AAppOptions,cloOutPutDirRelative);
OptionsArgsMAP[cloOutPutDirRelative] := OptArg;
End;
'a' :
Begin
Include(AAppOptions,cloOutPutDirAbsolute);
OptionsArgsMAP[cloOutPutDirAbsolute] := OptArg;
End;
'w' : Include(AAppOptions,cloWsdl);
'x' : Include(AAppOptions,cloXsd);
'y' : Include(AAppOptions,cloHandleWrappedParameters);
'd' : Include(AAppOptions,cloGenerateDocAsComments);
'g' :
begin
if ( Pos('A',OptArg) = 1 ) or ( Pos('C',OptArg) = 1 ) then begin
Include(AAppOptions,cloGenerateObjectCollection);
OptionsArgsMAP[cloGenerateObjectCollection] := OptArg;
end else if ( Pos('E',OptArg) = 1 ) then begin
Include(AAppOptions,cloPrefixEnum);
OptionsArgsMAP[cloPrefixEnum] := OptArg;
end else if ( Pos('S',OptArg) = 1 ) then begin
Include(AAppOptions,cloStringMaping);
OptionsArgsMAP[cloStringMaping] := OptArg;
end else if ( Pos('F',OptArg) = 1 ) then begin
Include(AAppOptions,cloCreateChoiceFields);
OptionsArgsMAP[cloCreateChoiceFields] := OptArg;
end;
end;
'f' :
begin
Include(AAppOptions,cloFileRenaming);
OptionsArgsMAP[cloFileRenaming] := OptArg;
end;
'c' :
begin
Include(AAppOptions,cloParserCaseSensitive);
OptionsArgsMAP[cloParserCaseSensitive] := OptArg;
end;
'j' : Include(AAppOptions,cloJava);
't' : Include(AAppOptions,cloTypeScript);
end;
until ( c = EndOfOptions );
Result := OptInd;
end;
end.