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.