123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- program srcmapdump;
- {$mode objfpc}{$H+}
- uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, SysUtils, CustApp, JSSrcMap;
- type
- { TSrcMapDump }
- TSrcMapDump = class(TCustomApplication)
- protected
- procedure DoRun; override;
- procedure DumpSrcMap(SrcMapFile, aGeneratedFilename: string);
- public
- constructor Create(TheOwner: TComponent); override;
- destructor Destroy; override;
- procedure WriteHelp; virtual;
- end;
- { TSrcMapDump }
- procedure TSrcMapDump.DoRun;
- var
- ErrorMsg, SrcMapFilename, GeneratedFilename: String;
- begin
- // quick check parameters
- ErrorMsg:=CheckOptions('hs:g:', 'help srcmap: generatedfile:');
- if ErrorMsg<>'' then begin
- ShowException(Exception.Create(ErrorMsg));
- Terminate;
- Exit;
- end;
- // parse parameters
- if HasOption('h', 'help') then begin
- WriteHelp;
- Terminate;
- Exit;
- end;
- if not HasOption('s','srcmap') then begin
- writeln('missing -s >srcmap>');
- WriteHelp;
- Terminate;
- Exit;
- end;
- SrcMapFilename:=ExpandFileName(GetOptionValue('s','srcmap'));
- if not HasOption('g','generatedfile') then begin
- writeln('missing -g <generatedfile>');
- WriteHelp;
- Terminate;
- Exit;
- end;
- GeneratedFilename:=ExpandFileName(GetOptionValue('g','generatedfile'));
- DumpSrcMap(SrcMapFilename,GeneratedFilename);
- // stop program loop
- Terminate;
- end;
- procedure TSrcMapDump.DumpSrcMap(SrcMapFile, aGeneratedFilename: string);
- var
- SrcMap: TSourceMap;
- GenSrc: TStringList;
- i: Integer;
- GenSrcLine, InfoLine: String;
- begin
- GenSrc:=TStringList.Create;
- SrcMap:=TSourceMap.Create(aGeneratedFilename);
- try
- SrcMap.LoadFromFile(SrcMapFile);
- GenSrc.LoadFromFile(aGeneratedFilename);
- for i:=1 to GenSrc.Count do begin
- GenSrcLine:=GenSrc[i-1];
- DebugSrcMapLine(i,GenSrcLine,SrcMap,InfoLine);
- writeln(GenSrcLine);
- writeln(InfoLine);
- end;
- finally
- SrcMap.Free;
- GenSrc.Free;
- end;
- end;
- constructor TSrcMapDump.Create(TheOwner: TComponent);
- begin
- inherited Create(TheOwner);
- StopOnException:=True;
- end;
- destructor TSrcMapDump.Destroy;
- begin
- inherited Destroy;
- end;
- procedure TSrcMapDump.WriteHelp;
- begin
- writeln('Usage: ', ExeName, ' -h');
- writeln;
- writeln('-s <srcmap>');
- writeln('-g <generatedfile>');
- end;
- var
- Application: TSrcMapDump;
- begin
- Application:=TSrcMapDump.Create(nil);
- Application.Title:='SrcMapDump';
- Application.Run;
- Application.Free;
- end.
|