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

Unified Diff: sdk/lib/_internal/pub/lib/src/dart.dart

Issue 14914007: Add a "pub deploy" command. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review changes. Created 7 years, 7 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
Index: sdk/lib/_internal/pub/lib/src/dart.dart
diff --git a/sdk/lib/_internal/pub/lib/src/dart.dart b/sdk/lib/_internal/pub/lib/src/dart.dart
new file mode 100644
index 0000000000000000000000000000000000000000..819053cb8ed637f1b057952fbf0f6f9c5822309c
--- /dev/null
+++ b/sdk/lib/_internal/pub/lib/src/dart.dart
@@ -0,0 +1,71 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// A library for compiling Dart code and manipulating analyzer parse trees.
+library dart;
+
+import 'dart:async';
+import 'dart:io';
+import 'dart:math' as math;
+
+import 'package:analyzer_experimental/analyzer.dart';
+import 'package:pathos/path.dart' as path;
+import '../../../compiler/compiler.dart' as compiler;
+import '../../../compiler/implementation/mirrors/dart2js_mirror.dart' as dart2js
+ show analyze, Dart2JsMirrorSystem;
+import '../../../compiler/implementation/mirrors/mirrors.dart'
+ show MirrorSystem;
+import '../../../compiler/implementation/source_file_provider.dart'
+ show FormattingDiagnosticHandler, SourceFileProvider;
+import '../../../compiler/implementation/filenames.dart'
+ show appendSlash;
+
+import 'io.dart';
+import 'sdk.dart' as sdk;
+import 'utils.dart';
+
+/// Returns [entrypoint] compiled to JavaScript (or to Dart if [toDart] is
+/// true).
+///
+/// By default, the package root is assumed to be adjacent to [entrypoint], but
+/// if [packageRoot] is passed that will be used instead.
+Future<String> compile(String entrypoint, {String packageRoot,
+ bool toDart: false}) {
+ return new Future.sync(() {
+ var provider = new SourceFileProvider();
+ var options = <String>['--categories=Client,Server', '--minify'];
+ if (toDart) options.add('--output-type=dart');
+ if (packageRoot == null) {
+ packageRoot = path.join(path.dirname(entrypoint), 'packages');
+ }
+
+ return compiler.compile(
+ pathToFileUri(entrypoint),
+ pathToFileUri(appendSlash(_libPath)),
+ pathToFileUri(appendSlash(packageRoot)),
+ provider.readStringFromUri,
+ new FormattingDiagnosticHandler(provider).diagnosticHandler,
+ options);
+ }).then((result) {
+ if (result != null) return result;
+ throw new ApplicationException('Failed to compile "$entrypoint".');
+ });
+}
+
+/// Returns the path to the library directory. This corresponds to the "sdk"
+/// directory in the repo and to the root of the compiled SDK.
+String get _libPath {
+ if (runningFromSdk) return sdk.rootDirectory;
+ return path.join(repoRoot, 'sdk');
+}
+
+/// Returns whether [dart] looks like an entrypoint file.
+bool isEntrypoint(CompilationUnit dart) {
+ // TODO(nweiz): this misses the case where a Dart file doesn't contain main(),
+ // but it parts in another file that does.
+ return dart.declarations.any((node) {
+ return node is FunctionDeclaration && node.name.name == "main" &&
+ node.functionExpression.parameters.elements.isEmpty;
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698