{ 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, 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:'); 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; end; until ( c = EndOfOptions ); Result := OptInd; end; end.