1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
(*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Initial Developer of this code is John Hansen.
* Portions created by John Hansen are Copyright (C) 2009 John Hansen.
* All Rights Reserved.
*
*)
unit uCmdLineUtils;
interface
uses
Classes;
function progName : string;
procedure PrintVersion(const ts : string = '');
procedure PrintUsageError(const ts : string = '');
function redirectErrorsToFile : boolean;
procedure setErrorOutputFile(var F : TextFile);
function getIncludePath : string;
implementation
uses
SysUtils, ParamUtils, uVersionInfo, uLocalizedStrings;
function progName : string;
begin
Result := ExtractFileName(ParamStr(0));
Result := ChangeFileExt(Result, '');
end;
procedure PrintVersion(const ts : string);
var
V : TVersionInfo;
app, tmp : string;
begin
app := ParamStr(0);
V := GetVersionInfo(app);
tmp := V.ProductName + VersionString + V.ProductVersion + ' (' + V.FileVersion;
if ts <> '' then
tmp := tmp + ',' + BuiltString + ts;
tmp := tmp + ')';
Writeln(tmp);
Writeln(' ' + V.LegalCopyright);
end;
procedure PrintUsageError(const ts : string);
begin
PrintVersion(ts);
Writeln(Format(UsageErrorMessage, [progName]));
end;
function redirectErrorsToFile : boolean;
begin
Result := ParamSwitch('-E', false);
end;
procedure setErrorOutputFile(var F : TextFile);
var
val, dir : string;
begin
val := '';
if ParamSwitch('-E', false) then
begin
val := ParamValue('-E', false);
dir := ExtractFilePath(val);
if dir <> '' then
ForceDirectories(dir);
end;
AssignFile(F, val);
Rewrite(F);
end;
function getIncludePath : string;
begin
Result := ExtractFilePath(ParamStr(0));
if ParamSwitch('-I', false) then
begin
Result := ParamValue('-I', false);
end;
end;
end.
|