fpc/tests/utils/avx/cmpoptions.pas
2014-05-10 15:56:37 +00:00

138 lines
3.8 KiB
ObjectPascal

unit cmpoptions;
{$mode objfpc}
interface
type
{ TOptions }
TOptions = class(TObject)
private
FHelp: boolean;
FNoDestFileExtension: boolean;
FNoSourceFileExtension: boolean;
FSilent: boolean;
FSourceFileExtension: String;
FSourceMask: String;
FDestFileExtension: String;
FDestPath: String;
public
constructor Create;
procedure LoadParams;
property Help : boolean read FHelp write FHelp;
property SourceMask : String read FSourceMask write FSourceMask;
property SourceFileExtension : String read FSourceFileExtension write FSourceFileExtension;
property NoSourceFileExtension: boolean read FNoSourceFileExtension;
property DestPath : String read FDestPath write FDestPath;
property DestFileExtension : String read FDestFileExtension write FDestFileExtension;
property NoDestFileExtension : boolean read FNoDestFileExtension;
property Silent : boolean read FSilent;
end;
implementation
uses SysUtils;
{ TOptions }
constructor TOptions.Create;
begin
FHelp := false;
FSourceMask := '';
FNoSourceFileExtension := false;
FDestFileExtension := '';
FDestPath := '';
FSilent := false;
end;
procedure TOptions.LoadParams;
var
i: integer;
sParam : Char;
sValue : String;
IsInvalidParam: boolean;
begin
if ParamCount = 0 then FHelp := true
else FHelp := false;
FSourceMask := IncludeTrailingBackslash(GetCurrentDir) + '*.*';
FSourceFileExtension := '';
FNoSourceFileExtension := false;
FDestPath := IncludeTrailingBackslash(GetCurrentDir);
FDestFileExtension := '';
FNoDestFileExtension := false;
FSilent := false;
for i := 1 to ParamCount do
begin
if copy(ParamStr(i), 1, 1) = '-' then
begin
sParam := copy(ParamStr(i) + ' ', 2, 1)[1];
sValue := copy(ParamStr(i), 3, length(ParamStr(i)));
IsInvalidParam := false;
case sParam of
'h': FHelp := true;
'm': begin
FSourceMask := sValue;
if copy(FSourceMask, 1, 2) = '\\' then FSourceMask := ExpandUNCFileName(FSourceMask)
else FSourceMask := ExpandFileName(FSourceMask);
if ExtractFileName(FSourceMask) = '' then FSourceMask := FSourceMask + '*';
end;
'n': begin
FSourceFileExtension := sValue;
FNoSourceFileExtension := FSourceFileExtension = '';
end;
'd': begin
FDestPath := sValue;
if copy(FDestPath, 1, 2) = '\\' then FDestPath := ExpandUNCFileName(FDestPath)
else FDestPath := ExpandFileName(FDestPath);
end;
'e': begin
FDestFileExtension := sValue;
FNoDestFileExtension := FDestFileExtension = '';
end;
's': FSilent := true;
else begin
FHelp := true;
writeln(format('invalid param "%s"', [ParamStr(i)]));
end;
end;
end
else IsInvalidParam := true;
if (FNoSourceFileExtension = false) and
(FSourceFileExtension = '') then
begin
FSourceFileExtension := ExtractFileExt(FSourceMask);
end
else if (ExtractFileExt(FSourceMask) <> '') and
(FSourceFileExtension <> '') and
(ExtractFileExt(FSourceMask) <> FSourceFileExtension) then
begin
writeln(format('parameter conflict: different sourcefile extension "%s" and "%s"',
[ExtractFileExt(FSourceMask), FSourceFileExtension]));
FHelp := true;
end;
if IsInvalidParam then
begin
FHelp := true;
writeln(format('invalid param "%s"', [ParamStr(i)]));
end;
end;
end;
end.