mirror of https://gitlab.com/basile.b/dexed.git
implemented first script line used to pass dmd switch, close #36
- optional - support for symbolic strings
This commit is contained in:
parent
0aaebbb4e7
commit
1b357826ee
|
@ -0,0 +1,19 @@
|
||||||
|
#!runnable-flags: -version=a -version=b
|
||||||
|
module runnable;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
compile fine and run, feature #36:
|
||||||
|
- see specs at https://github.com/BBasile/Coedit/issues/36
|
||||||
|
- dmd switches can be passed in the script line
|
||||||
|
- dups are automatically eliminated.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
import std.stdio;
|
||||||
|
|
||||||
|
void main(string[] args)
|
||||||
|
{
|
||||||
|
version(a) "a".writeln;
|
||||||
|
version(b) "b".writeln;
|
||||||
|
}
|
|
@ -1515,13 +1515,25 @@ end;
|
||||||
procedure TCEMainForm.compileAndRunFile(unittest: boolean = false; redirect: boolean = true;
|
procedure TCEMainForm.compileAndRunFile(unittest: boolean = false; redirect: boolean = true;
|
||||||
const runArgs: string = '');
|
const runArgs: string = '');
|
||||||
var
|
var
|
||||||
|
i: integer;
|
||||||
dmdproc: TCEProcess;
|
dmdproc: TCEProcess;
|
||||||
fname: string;
|
extraArgs: TStringList;
|
||||||
|
fname, firstlineFlags: string;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
fMsgs.clearByData(fDoc);
|
fMsgs.clearByData(fDoc);
|
||||||
FreeRunnableProc;
|
FreeRunnableProc;
|
||||||
if fDoc = nil then exit;
|
if fDoc = nil then exit;
|
||||||
|
if fDoc.Lines.Count = 0 then exit;
|
||||||
|
|
||||||
|
firstlineFlags := fDoc.Lines[0];
|
||||||
|
i := length(firstlineFlags);
|
||||||
|
if ( i > 18) then
|
||||||
|
begin
|
||||||
|
if UpperCase(firstlineFlags[1..17]) = '#!RUNNABLE-FLAGS:' then
|
||||||
|
firstlineFlags := symbolExpander.get(firstlineFlags[18..i])
|
||||||
|
else firstlineFlags:= '';
|
||||||
|
end else firstlineFlags:= '';
|
||||||
|
|
||||||
fRunProc := TCEProcess.Create(nil);
|
fRunProc := TCEProcess.Create(nil);
|
||||||
if redirect then
|
if redirect then
|
||||||
|
@ -1537,6 +1549,7 @@ begin
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
extraArgs := TStringList.Create;
|
||||||
dmdproc := TCEProcess.Create(nil);
|
dmdproc := TCEProcess.Create(nil);
|
||||||
try
|
try
|
||||||
|
|
||||||
|
@ -1558,6 +1571,8 @@ begin
|
||||||
dmdproc.Parameters.Add(fDoc.fileName);
|
dmdproc.Parameters.Add(fDoc.fileName);
|
||||||
dmdproc.Parameters.Add('-J' + ExtractFilePath(fDoc.fileName));
|
dmdproc.Parameters.Add('-J' + ExtractFilePath(fDoc.fileName));
|
||||||
dmdproc.Parameters.AddText(fRunnableSw);
|
dmdproc.Parameters.AddText(fRunnableSw);
|
||||||
|
CommandToList(firstlineFlags, extraArgs);
|
||||||
|
dmdproc.Parameters.AddStrings(extraArgs);
|
||||||
if unittest then
|
if unittest then
|
||||||
begin
|
begin
|
||||||
dmdproc.Parameters.Add('-main');
|
dmdproc.Parameters.Add('-main');
|
||||||
|
@ -1567,6 +1582,7 @@ begin
|
||||||
dmdproc.Parameters.Add('-of' + fname + exeExt);
|
dmdproc.Parameters.Add('-of' + fname + exeExt);
|
||||||
LibMan.getLibFiles(nil, dmdproc.Parameters);
|
LibMan.getLibFiles(nil, dmdproc.Parameters);
|
||||||
LibMan.getLibSources(nil, dmdproc.Parameters);
|
LibMan.getLibSources(nil, dmdproc.Parameters);
|
||||||
|
deleteDups(dmdproc.Parameters);
|
||||||
dmdproc.Execute;
|
dmdproc.Execute;
|
||||||
while dmdproc.Running do
|
while dmdproc.Running do
|
||||||
application.ProcessMessages;
|
application.ProcessMessages;
|
||||||
|
@ -1577,7 +1593,11 @@ begin
|
||||||
fDoc, amcEdit, amkInf);
|
fDoc, amcEdit, amkInf);
|
||||||
fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable);
|
fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable);
|
||||||
if runArgs <> '' then
|
if runArgs <> '' then
|
||||||
fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs);
|
begin
|
||||||
|
extraArgs.Clear;
|
||||||
|
CommandToList(symbolExpander.get(runArgs), extraArgs);
|
||||||
|
fRunProc.Parameters.AddStrings(extraArgs);
|
||||||
|
end;
|
||||||
fRunProc.Executable := fname + exeExt;
|
fRunProc.Executable := fname + exeExt;
|
||||||
if redirect then
|
if redirect then
|
||||||
getprocInputHandler.addProcess(fRunProc);
|
getprocInputHandler.addProcess(fRunProc);
|
||||||
|
@ -1591,6 +1611,7 @@ begin
|
||||||
|
|
||||||
finally
|
finally
|
||||||
dmdproc.Free;
|
dmdproc.Free;
|
||||||
|
extraArgs.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue