program SVNZero; uses {$IFDEF UNIX} cthreads, {$ENDIF} Classes, SysUtils, CustApp, USubversion, UTest, USvnZero { you can add units after this }; type { TSvnZeroApp } TSvnZeroApp = class(TCustomApplication) protected procedure DoRun; override; private procedure NormalRun; public SvnZero: TSvnZero; constructor Create(TheOwner: TComponent); override; destructor Destroy; override; procedure WriteHelp; virtual; end; { TSvnZero } procedure TSvnZeroApp.DoRun; begin if HasOption('t', 'test') then begin with TTest.Create do try Run; finally Free; end; end else begin NormalRun; end; (* // quick check parameters ErrorMsg := CheckOptions('h', 'help'); if ErrorMsg <> '' then begin ShowException(Exception.Create(ErrorMsg)); Terminate; Exit; end; // parse parameters if HasOption('h', 'help') then begin WriteHelp; Terminate; Exit; end; *) // stop program loop Terminate; end; procedure TSvnZeroApp.NormalRun; var Params: TStringArray; I: Integer; begin Params := Default(TStringArray); SetLength(Params, ParamCount); for I := 0 to ParamCount - 1 do Params[I] := GetParams(I + 1); SVNZero.ExecuteOutput(Params); end; constructor TSvnZeroApp.Create(TheOwner: TComponent); begin inherited; StopOnException := True; SvnZero := TSvnZero.Create; end; destructor TSvnZeroApp.Destroy; begin FreeAndNil(SvnZero); inherited; end; procedure TSvnZeroApp.WriteHelp; begin { add your help code here } WriteLn('Usage: ', ExeName, ' -h'); end; {$if declared(UseHeapTrace)} const HeapTraceLog = 'heaptrclog.trc'; {$ENDIF} var Application: TSvnZeroApp; begin {$if declared(UseHeapTrace)} DeleteFile(ExtractFilePath(ParamStr(0)) + HeapTraceLog); SetHeapTraceOutput(ExtractFilePath(ParamStr(0)) + HeapTraceLog); {$ENDIF} Application := TSvnZeroApp.Create(nil); Application.Title := 'SVN Zero'; Application.Run; Application.Free; end.