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

Side by Side Diff: dart/editor/tools/plugins/com.google.dart.tools.debug.ui/src/com/google/dart/tools/debug/ui/launch/DeployPolymerAppHandler.java

Issue 64033002: Version 0.8.10.8 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012, the Dart project authors. 2 * Copyright (c) 2012, the Dart project authors.
3 * 3 *
4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except
5 * in compliance with the License. You may obtain a copy of the License at 5 * in compliance with the License. You may obtain a copy of the License at
6 * 6 *
7 * http://www.eclipse.org/legal/epl-v10.html 7 * http://www.eclipse.org/legal/epl-v10.html
8 * 8 *
9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License 9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express
11 * or implied. See the License for the specific language governing permissions a nd limitations under 11 * or implied. See the License for the specific language governing permissions a nd limitations under
12 * the License. 12 * the License.
13 */ 13 */
14 package com.google.dart.tools.debug.ui.launch; 14 package com.google.dart.tools.debug.ui.launch;
15 15
16 import com.google.dart.tools.core.DartCore; 16 import com.google.dart.tools.core.DartCore;
17 import com.google.dart.tools.core.MessageConsole; 17 import com.google.dart.tools.core.analysis.model.PubFolder;
18 import com.google.dart.tools.core.dart2js.ProcessRunner; 18 import com.google.dart.tools.core.pub.RunPubJob;
19 import com.google.dart.tools.core.model.DartSdkManager;
20 19
21 import org.eclipse.core.commands.AbstractHandler; 20 import org.eclipse.core.commands.AbstractHandler;
22 import org.eclipse.core.commands.ExecutionEvent; 21 import org.eclipse.core.commands.ExecutionEvent;
23 import org.eclipse.core.commands.ExecutionException; 22 import org.eclipse.core.commands.ExecutionException;
24 import org.eclipse.core.resources.IContainer;
25 import org.eclipse.core.resources.IResource; 23 import org.eclipse.core.resources.IResource;
26 import org.eclipse.core.runtime.CoreException;
27 import org.eclipse.core.runtime.NullProgressMonitor;
28 import org.eclipse.jface.viewers.ISelection; 24 import org.eclipse.jface.viewers.ISelection;
29 import org.eclipse.jface.viewers.IStructuredSelection; 25 import org.eclipse.jface.viewers.IStructuredSelection;
30 import org.eclipse.ui.handlers.HandlerUtil; 26 import org.eclipse.ui.handlers.HandlerUtil;
31 27
32 import java.io.File;
33 import java.io.IOException;
34 import java.util.ArrayList;
35 import java.util.List;
36
37 /** 28 /**
38 * Run the build.dart with deploy option which compiles the Polymer app to JavaS cript. 29 * Run the build.dart with deploy option which compiles the Polymer app to JavaS cript.
39 */ 30 */
40 public class DeployPolymerAppHandler extends AbstractHandler { 31 public class DeployPolymerAppHandler extends AbstractHandler {
41 32
42 public DeployPolymerAppHandler() { 33 public DeployPolymerAppHandler() {
43 34
44 } 35 }
45 36
46 @Override 37 @Override
47 public Object execute(ExecutionEvent event) throws ExecutionException { 38 public Object execute(ExecutionEvent event) throws ExecutionException {
48 ISelection selection = HandlerUtil.getActivePart(event).getSite().getSelecti onProvider().getSelection(); 39 ISelection selection = HandlerUtil.getActivePart(event).getSite().getSelecti onProvider().getSelection();
49 if (!selection.isEmpty()) { 40 if (!selection.isEmpty()) {
50 if (selection instanceof IStructuredSelection) { 41 if (selection instanceof IStructuredSelection) {
51 Object selectedObject = ((IStructuredSelection) selection).getFirstEleme nt(); 42 Object selectedObject = ((IStructuredSelection) selection).getFirstEleme nt();
52 if (selectedObject instanceof IResource) { 43 if (selectedObject instanceof IResource) {
53 IContainer parent = ((IResource) selectedObject).getParent(); 44 PubFolder folder = DartCore.getProjectManager().getPubFolder((IResourc e) selectedObject);
54 while (parent != null) { 45 if (folder != null) {
55 IResource buildFile = parent.findMember("build.dart"); 46 RunPubJob job = new RunPubJob(folder.getResource(), RunPubJob.BUILD_ NOMINIFY_COMMAND);
56 if (buildFile != null) { 47 job.schedule(0);
57 runBuildFile(buildFile); 48 return null;
58 return null;
59 }
60 parent = parent.getParent();
61 } 49 }
62 DartCore.getConsole().println( 50 DartCore.getConsole().println(
63 "Error: Could not find build.dart file for " + ((IResource) select edObject).getName()); 51 "Error: Could not run pub build. Use Run Tools > Pub Build to buil d Polymer app");
64 } 52 }
65 } 53 }
66 } 54 }
67 return null; 55 return null;
68 } 56 }
69
70 private void runBuildFile(IResource buildFile) {
71
72 MessageConsole console = DartCore.getConsole();
73
74 ProcessBuilder builder = new ProcessBuilder();
75 builder.redirectErrorStream(true);
76 List<String> args = new ArrayList<String>();
77
78 String vmExecPath = "";
79 if (DartSdkManager.getManager().hasSdk()) {
80 File vmExec = DartSdkManager.getManager().getSdk().getVmExecutable();
81
82 if (vmExec != null) {
83 vmExecPath = vmExec.getAbsolutePath().toString();
84 }
85 }
86
87 if (vmExecPath.length() == 0) {
88 String message = "Could not find the Dart VM executable";
89 console.print(message);
90 DartCore.logError("Deploy Polymer app - " + message);
91 }
92
93 args.add(vmExecPath);
94 args.add(buildFile.getLocation().toFile().getAbsolutePath());
95 args.add("--deploy");
96
97 builder.command(args);
98 builder.directory(buildFile.getParent().getLocation().toFile());
99
100 ProcessRunner runner = new ProcessRunner(builder);
101
102 try {
103 runner.runSync(new NullProgressMonitor());
104 } catch (IOException e) {
105 String message = "Failed to run " + buildFile.getLocation().toString() + e .toString();
106 console.print(message);
107 DartCore.logError(message, e);
108 }
109
110 StringBuilder stringBuilder = new StringBuilder();
111
112 if (!runner.getStdOut().isEmpty()) {
113 stringBuilder.append(runner.getStdOut().trim() + "\n"); //$NON-NLS-1$
114 }
115
116 console.printSeparator("build.dart --deploy");
117 console.print(stringBuilder.toString());
118 try {
119 buildFile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
120 } catch (CoreException e) {
121 // do nothing
122 }
123 }
124
125 } 57 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698