Browse Source

pas2js: started nodepas2js

git-svn-id: trunk@40098 -
Mattias Gaertner 6 years ago
parent
commit
bbb5943fef
2 changed files with 74 additions and 8 deletions
  1. 1 1
      utils/pas2js/nodepas2js.lpi
  2. 73 7
      utils/pas2js/nodepas2js.pp

+ 1 - 1
utils/pas2js/nodepas2js.lpi

@@ -39,7 +39,7 @@
       <Filename Value="nodepas2js.js" ApplyConventions="False"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="$(ProjOutDir)"/>
+      <IncludeFiles Value="$(ProjOutDir);../../packages/pastojs/src"/>
       <OtherUnitFiles Value="../../packages/fcl-js/src;../../packages/fcl-json/src;../../packages/fcl-passrc/src;../../packages/pastojs/src"/>
       <UnitOutputDirectory Value="js"/>
     </SearchPaths>

+ 73 - 7
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.