|
@@ -1,17 +1,83 @@
|
|
|
program nodepas2js;
|
|
|
|
|
|
{$mode objfpc}
|
|
|
+{$I pas2js_defines.inc}
|
|
|
|
|
|
uses
|
|
|
- JS, NodeJS, NodeJSFS, Math,
|
|
|
+ JS, NodeJSApp,
|
|
|
Classes, SysUtils,
|
|
|
- jsbase, jstree, jswriter, JSSrcMap,
|
|
|
- fpjson,
|
|
|
- PasTree, PScanner, PParser, PasResolveEval, PasResolver, PasUseAnalyzer,
|
|
|
- FPPas2Js,
|
|
|
- Pas2jsFileUtils, Pas2jsLogger, Pas2jsPParser, Pas2jsFileCache, Pas2jsCompiler;
|
|
|
+ Pas2jsFileUtils, Pas2jsLogger, Pas2jsCompiler;
|
|
|
|
|
|
+type
|
|
|
+
|
|
|
+ { TPas2jsCLI }
|
|
|
+
|
|
|
+ TPas2jsCLI = class(TNodeJSApplication)
|
|
|
+ private
|
|
|
+ FCompiler: TPas2jsCompiler;
|
|
|
+ protected
|
|
|
+ procedure DoRun; override;
|
|
|
+ public
|
|
|
+ constructor Create(TheOwner: TComponent); override;
|
|
|
+ destructor Destroy; override;
|
|
|
+ property Compiler: TPas2jsCompiler read FCompiler;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TPas2jsCLI.DoRun;
|
|
|
+var
|
|
|
+ ParamList: TStringList;
|
|
|
+ i: Integer;
|
|
|
begin
|
|
|
- // Your code here
|
|
|
+ ParamList:=TStringList.Create;
|
|
|
+ try
|
|
|
+ for i:=1 to ParamCount do
|
|
|
+ ParamList.Add(Params[i]);
|
|
|
+ try
|
|
|
+ Compiler.Run(ParamStr(0),GetCurrentDirPJ,ParamList);
|
|
|
+ except
|
|
|
+ on E: ECompilerTerminate do ;
|
|
|
+ on E: Exception do
|
|
|
+ begin
|
|
|
+ {AllowWriteln}
|
|
|
+ writeln(E.Message);
|
|
|
+ {AllowWriteln-}
|
|
|
+ if ExitCode=0 then
|
|
|
+ ExitCode:=ExitCodeErrorInternal;
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ {AllowWriteln}
|
|
|
+ writeln('ERROR value: ',JSExceptValue);
|
|
|
+ {AllowWriteln-}
|
|
|
+ if ExitCode=0 then
|
|
|
+ ExitCode:=ExitCodeErrorInternal;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ finally
|
|
|
+ ParamList.Free;
|
|
|
+ Compiler.Log.CloseOutputFile;
|
|
|
+ end;
|
|
|
|
|
|
+ // stop program loop
|
|
|
+ Terminate; // Keep ExitCode!
|
|
|
+end;
|
|
|
+
|
|
|
+constructor TPas2jsCLI.Create(TheOwner: TComponent);
|
|
|
+begin
|
|
|
+ inherited Create(TheOwner);
|
|
|
+ StopOnException:=True;
|
|
|
+ FCompiler:=TPas2jsCompiler.Create;
|
|
|
+end;
|
|
|
+
|
|
|
+destructor TPas2jsCLI.Destroy;
|
|
|
+begin
|
|
|
+ FreeAndNil(FCompiler);
|
|
|
+ inherited Destroy;
|
|
|
+end;
|
|
|
+
|
|
|
+var
|
|
|
+ Application: TPas2jsCLI;
|
|
|
+begin
|
|
|
+ Application:=TPas2jsCLI.Create(nil);
|
|
|
+ Application.Run;
|
|
|
+ Application.Free;
|
|
|
end.
|