diff --git a/utils/pas2js/nodepas2js.lpi b/utils/pas2js/nodepas2js.lpi
index 2f7d3d915d..3a8cabc1ac 100644
--- a/utils/pas2js/nodepas2js.lpi
+++ b/utils/pas2js/nodepas2js.lpi
@@ -39,7 +39,7 @@
-
+
diff --git a/utils/pas2js/nodepas2js.pp b/utils/pas2js/nodepas2js.pp
index 579eb604a4..8f4d6c7fd4 100644
--- a/utils/pas2js/nodepas2js.pp
+++ b/utils/pas2js/nodepas2js.pp
@@ -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.