srcmapdump.lpr 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. program srcmapdump;
  2. {$mode objfpc}{$H+}
  3. uses
  4. {$IFDEF UNIX}{$IFDEF UseCThreads}
  5. cthreads,
  6. {$ENDIF}{$ENDIF}
  7. Classes, SysUtils, CustApp, JSSrcMap;
  8. type
  9. { TSrcMapDump }
  10. TSrcMapDump = class(TCustomApplication)
  11. protected
  12. procedure DoRun; override;
  13. procedure DumpSrcMap(SrcMapFile, aGeneratedFilename: string);
  14. public
  15. constructor Create(TheOwner: TComponent); override;
  16. destructor Destroy; override;
  17. procedure WriteHelp; virtual;
  18. end;
  19. { TSrcMapDump }
  20. procedure TSrcMapDump.DoRun;
  21. var
  22. ErrorMsg, SrcMapFilename, GeneratedFilename: String;
  23. begin
  24. // quick check parameters
  25. ErrorMsg:=CheckOptions('hs:g:', 'help srcmap: generatedfile:');
  26. if ErrorMsg<>'' then begin
  27. ShowException(Exception.Create(ErrorMsg));
  28. Terminate;
  29. Exit;
  30. end;
  31. // parse parameters
  32. if HasOption('h', 'help') then begin
  33. WriteHelp;
  34. Terminate;
  35. Exit;
  36. end;
  37. if not HasOption('s','srcmap') then begin
  38. writeln('missing -s >srcmap>');
  39. WriteHelp;
  40. Terminate;
  41. Exit;
  42. end;
  43. SrcMapFilename:=ExpandFileName(GetOptionValue('s','srcmap'));
  44. if not HasOption('g','generatedfile') then begin
  45. writeln('missing -g <generatedfile>');
  46. WriteHelp;
  47. Terminate;
  48. Exit;
  49. end;
  50. GeneratedFilename:=ExpandFileName(GetOptionValue('g','generatedfile'));
  51. DumpSrcMap(SrcMapFilename,GeneratedFilename);
  52. // stop program loop
  53. Terminate;
  54. end;
  55. procedure TSrcMapDump.DumpSrcMap(SrcMapFile, aGeneratedFilename: string);
  56. var
  57. SrcMap: TSourceMap;
  58. GenSrc: TStringList;
  59. i: Integer;
  60. GenSrcLine, InfoLine: String;
  61. begin
  62. GenSrc:=TStringList.Create;
  63. SrcMap:=TSourceMap.Create(aGeneratedFilename);
  64. try
  65. SrcMap.LoadFromFile(SrcMapFile);
  66. GenSrc.LoadFromFile(aGeneratedFilename);
  67. for i:=1 to GenSrc.Count do begin
  68. GenSrcLine:=GenSrc[i-1];
  69. DebugSrcMapLine(i,GenSrcLine,SrcMap,InfoLine);
  70. writeln(GenSrcLine);
  71. writeln(InfoLine);
  72. end;
  73. finally
  74. SrcMap.Free;
  75. GenSrc.Free;
  76. end;
  77. end;
  78. constructor TSrcMapDump.Create(TheOwner: TComponent);
  79. begin
  80. inherited Create(TheOwner);
  81. StopOnException:=True;
  82. end;
  83. destructor TSrcMapDump.Destroy;
  84. begin
  85. inherited Destroy;
  86. end;
  87. procedure TSrcMapDump.WriteHelp;
  88. begin
  89. writeln('Usage: ', ExeName, ' -h');
  90. writeln;
  91. writeln('-s <srcmap>');
  92. writeln('-g <generatedfile>');
  93. end;
  94. var
  95. Application: TSrcMapDump;
  96. begin
  97. Application:=TSrcMapDump.Create(nil);
  98. Application.Title:='SrcMapDump';
  99. Application.Run;
  100. Application.Free;
  101. end.