[vala/staging] compiler: Properly parse arguments for vala interpeter-mode
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] compiler: Properly parse arguments for vala interpeter-mode
- Date: Sun, 19 Nov 2017 14:07:43 +0000 (UTC)
commit 0e45b19dfabce1b2f04733d7ec6eb02d6692b549
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Nov 9 14:33:08 2017 +0100
compiler: Properly parse arguments for vala interpeter-mode
Arguments for the target need to be passed with --run-args from now on.
https://bugzilla.gnome.org/show_bug.cgi?id=663070
compiler/valacompiler.vala | 51 +++++++++++++++++++-------------------------
doc/valac.1 | 3 ++
2 files changed, 25 insertions(+), 29 deletions(-)
---
diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala
index 72bf5b9..1c2b084 100644
--- a/compiler/valacompiler.vala
+++ b/compiler/valacompiler.vala
@@ -97,6 +97,7 @@ class Vala.Compiler {
static string entry_point;
static bool run_output;
+ static string run_args;
private CodeContext context;
@@ -157,6 +158,7 @@ class Vala.Compiler {
{ "gresourcesdir", 0, 0, OptionArg.FILENAME_ARRAY, ref gresources_directories, "Look for
resources in DIRECTORY", "DIRECTORY..." },
{ "enable-version-header", 0, 0, OptionArg.NONE, ref enable_version_header, "Write vala build
version in generated files", null },
{ "disable-version-header", 0, 0, OptionArg.NONE, ref disable_version_header, "Do not write
vala build version in generated files", null },
+ { "run-args", 0, 0, OptionArg.STRING, ref run_args, "Arguments passed to directly compiled
executeable", null },
{ "", 0, 0, OptionArg.FILENAME_ARRAY, ref sources, null, "FILE..." },
{ null }
};
@@ -504,27 +506,15 @@ class Vala.Compiler {
}
static int run_source (string[] args) {
- int i = 1;
- if (args[i] != null && args[i].has_prefix ("-")) {
- try {
- string[] compile_args;
- Shell.parse_argv ("valac " + args[1], out compile_args);
-
- var opt_context = new OptionContext ("- Vala");
- opt_context.set_help_enabled (true);
- opt_context.add_main_entries (options, null);
- unowned string[] temp_args = compile_args;
- opt_context.parse (ref temp_args);
- } catch (ShellError e) {
- stdout.printf ("%s\n", e.message);
- return 1;
- } catch (OptionError e) {
- stdout.printf ("%s\n", e.message);
- stdout.printf ("Run '%s --help' to see a full list of available command line
options.\n", args[0]);
- return 1;
- }
-
- i++;
+ try {
+ var opt_context = new OptionContext ("- Vala Interpreter");
+ opt_context.set_help_enabled (true);
+ opt_context.add_main_entries (options, null);
+ opt_context.parse (ref args);
+ } catch (OptionError e) {
+ stdout.printf ("%s\n", e.message);
+ stdout.printf ("Run '%s --help' to see a full list of available command line
options.\n", args[0]);
+ return 1;
}
if (version) {
@@ -534,22 +524,25 @@ class Vala.Compiler {
stdout.printf ("%s\n", Config.API_VERSION);
return 0;
}
-
- if (args[i] == null) {
+
+ if (sources == null) {
stderr.printf ("No source file specified.\n");
return 1;
}
- sources = { args[i] };
- output = "%s/%s.XXXXXX".printf (Environment.get_tmp_dir (), Path.get_basename (args[i]));
+ output = "%s/%s.XXXXXX".printf (Environment.get_tmp_dir (), Path.get_basename (sources[0]));
int outputfd = FileUtils.mkstemp (output);
if (outputfd < 0) {
return 1;
}
+ ccode_only = false;
+ compile_only = false;
run_output = true;
disable_warnings = true;
quiet_mode = true;
+ library = null;
+ shared_library = null;
var compiler = new Compiler ();
int ret = compiler.run ();
@@ -564,9 +557,9 @@ class Vala.Compiler {
}
string[] target_args = { output };
- while (i < args.length) {
- target_args += args[i];
- i++;
+ string[] target_run_args = run_args.split (" ");
+ foreach (string arg in target_run_args) {
+ target_args += arg;
}
try {
@@ -574,7 +567,7 @@ class Vala.Compiler {
var loop = new MainLoop ();
int child_status = 0;
- Process.spawn_async (null, target_args, null, SpawnFlags.CHILD_INHERITS_STDIN |
SpawnFlags.DO_NOT_REAP_CHILD | SpawnFlags.FILE_AND_ARGV_ZERO, null, out pid);
+ Process.spawn_async (null, target_args, null, SpawnFlags.CHILD_INHERITS_STDIN |
SpawnFlags.DO_NOT_REAP_CHILD, null, out pid);
FileUtils.unlink (output);
ChildWatch.add (pid, (pid, status) => {
diff --git a/doc/valac.1 b/doc/valac.1
index 7f212b4..eb39228 100644
--- a/doc/valac.1
+++ b/doc/valac.1
@@ -196,6 +196,9 @@ Write vala build version in generated files
.TP
\fB\-\-disable\-version\-header\fR
Do not write vala build version in generated files
+.TP
+\fB\-\-run\-args\fR
+Arguments passed to directly compiled executeable
.SH BUGS
https://bugzilla.gnome.org/page.cgi?id=browse.html&product=vala
.SH "HOMEPAGE OR CONTACT"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]