mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 19:48:01 +02:00
87 lines
1.7 KiB
ObjectPascal
87 lines
1.7 KiB
ObjectPascal
program nodepas2js;
|
|
|
|
{$mode objfpc}
|
|
{$I pas2js_defines.inc}
|
|
|
|
uses
|
|
JS, NodeJSApp,
|
|
Classes, SysUtils,
|
|
Pas2jsFileUtils, Pas2jsLogger, Pas2jsCompiler,
|
|
Pas2JSFSCompiler, {Pas2JSCompilerPP, }Pas2JSCompilerCfg;
|
|
|
|
type
|
|
|
|
{ TPas2jsCLI }
|
|
|
|
TPas2jsCLI = class(TNodeJSApplication)
|
|
private
|
|
FCompiler: TPas2jsFSCompiler;
|
|
protected
|
|
procedure DoRun; override;
|
|
public
|
|
constructor Create(TheOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
property Compiler: TPas2jsFsCompiler read FCompiler;
|
|
end;
|
|
|
|
procedure TPas2jsCLI.DoRun;
|
|
var
|
|
ParamList: TStringList;
|
|
i: Integer;
|
|
begin
|
|
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:=TPas2jsFSCompiler.Create;
|
|
FCompiler.ConfigSupport:=TPas2JSFileConfigSupport.Create(FCompiler);
|
|
end;
|
|
|
|
destructor TPas2jsCLI.Destroy;
|
|
begin
|
|
FreeAndNil(FCompiler);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
var
|
|
Application: TPas2jsCLI;
|
|
begin
|
|
Application:=TPas2jsCLI.Create(nil);
|
|
Application.Run;
|
|
Application.Free;
|
|
end.
|
|
|