Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(654)

Unified Diff: runtime/bin/main.cc

Issue 1232593003: - Implement .packages specification. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address review comments. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/bin/isolate_data.h ('k') | runtime/bin/vmservice/loader.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/main.cc
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 5b14dff3ec5c9961d3168e07df1ce9a89931f701..b2c6da5741ef91748129fc45e954e42780d1ab2e 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -60,6 +60,11 @@ static const int DEFAULT_DEBUG_PORT = 5858;
// free'd.)
static const char* commandline_package_root = NULL;
+// Value of the --packages flag.
+// (This pointer points into an argv buffer and does not need to be
+// free'd.)
+static const char* commandline_packages_file = NULL;
+
// Global flag that is used to indicate that we want to compile all the
// dart functions and not run anything.
@@ -169,6 +174,17 @@ static bool ProcessPackageRootOption(const char* arg,
}
+static bool ProcessPackagesOption(const char* arg,
+ CommandLineOptions* vm_options) {
+ ASSERT(arg != NULL);
+ if (*arg == '\0' || *arg == '-') {
+ return false;
+ }
+ commandline_packages_file = arg;
+ return true;
+}
+
+
static void* GetHashmapKeyFromString(char* key) {
return reinterpret_cast<void*>(key);
}
@@ -371,6 +387,7 @@ static struct {
{ "--verbose", ProcessVerboseOption },
{ "-v", ProcessVerboseOption },
{ "--package-root=", ProcessPackageRootOption },
+ { "--packages=", ProcessPackagesOption },
{ "-D", ProcessEnvironmentOption },
// VM specific options to the standalone dart program.
{ "--break-at=", ProcessBreakpointOption },
@@ -489,6 +506,14 @@ static int ParseArguments(int argc,
i++;
}
+ // Verify consistency of arguments.
+ if ((commandline_package_root != NULL) &&
+ (commandline_packages_file != NULL)) {
+ Log::PrintErr("Specifying both a packages directory and a packages "
+ "file is invalid.");
+ return -1;
+ }
+
return 0;
}
@@ -561,11 +586,14 @@ static Dart_Handle EnvironmentCallback(Dart_Handle name) {
static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
const char* main,
const char* package_root,
+ const char* packages_file,
Dart_IsolateFlags* flags,
char** error,
int* exit_code) {
ASSERT(script_uri != NULL);
- IsolateData* isolate_data = new IsolateData(script_uri, package_root);
+ IsolateData* isolate_data = new IsolateData(script_uri,
+ package_root,
+ packages_file);
Dart_Isolate isolate = NULL;
isolate = Dart_CreateIsolate(script_uri,
@@ -618,6 +646,7 @@ static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
// Prepare for script loading by setting up the 'print' and 'timer'
// closures and setting up 'package root' for URI resolution.
result = DartUtils::PrepareForScriptLoading(package_root,
+ packages_file,
false,
has_trace_loading,
builtin_lib);
@@ -675,16 +704,17 @@ static Dart_Isolate CreateIsolateAndSetup(const char* script_uri,
return NULL;
}
}
+ const char* packages_file = NULL;
if (package_root == NULL) {
if (parent_isolate_data != NULL) {
package_root = parent_isolate_data->package_root;
- } else {
- package_root = ".";
+ packages_file = parent_isolate_data->packages_file;
}
}
return CreateIsolateAndSetupHelper(script_uri,
main,
package_root,
+ packages_file,
flags,
error,
&exit_code);
@@ -712,6 +742,8 @@ static void PrintUsage() {
" all VM options).\n"
"--package-root=<path> or -p<path>\n"
" Where to find packages, that is, \"package:...\" imports.\n"
+"--packages=<path>\n"
+" Where to find a package spec file.\n"
"--version\n"
" Print the VM version.\n");
} else {
@@ -989,6 +1021,7 @@ void main(int argc, char** argv) {
Dart_Isolate isolate = CreateIsolateAndSetupHelper(script_name,
"main",
commandline_package_root,
+ commandline_packages_file,
NULL,
&error,
&exit_code);
« no previous file with comments | « runtime/bin/isolate_data.h ('k') | runtime/bin/vmservice/loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698