{ This unit is part of the Web Service Toolkit Copyright (c) 2006 by Inoussa OUEDRAOGO This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. 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. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. } {$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 ); 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:'); 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 Include(AAppOptions,cloGenerateObjectCollection); OptionsArgsMAP[cloGenerateObjectCollection] := OptArg; end; end; until ( c = EndOfOptions ); Result := OptInd; end; end.