mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-05 22:28:13 +02:00
138 lines
3.8 KiB
ObjectPascal
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.
|