import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.widgets.Display;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.tizen.rt.ide.Activator;
+import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.commands.BuildCommand;
+import org.tizen.rt.ide.commands.CleanCommand;
import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
+import org.tizen.rt.ide.util.ViewUtil;
/**
* RtBuilder
*/
public class RtBuilder extends IncrementalProjectBuilder {
- public static String BUILDER_ID = "org.tizen.rt.ide.builder.RtBuilder";
+ public static String BUILDER_ID = "org.tizen.rt.ide.builder.RtBuilder"; //$NON-NLS-1$
+
+ private static final String PREF_KEY_USE_DISTCLEAN = "PREF_KEY_USE_DISTCLEAN"; //$NON-NLS-1$
private final Logger logger = LoggerFactory.getLogger(RtBuilder.class);
ConsoleManager consoleManager = new ConsoleManager(true);
- boolean result = CommandManager.runBuild(project, consoleManager, monitor);
+ int result = 0;
+ switch (kind) {
+ case FULL_BUILD:
+ BuildCommand buildCommand = new BuildCommand();
+ result = buildCommand.execute(project, consoleManager, monitor);
+ break;
+ }
+
try {
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
} catch (CoreException e) {
forgetLastBuiltState();
- if (result) {
+ if (result == 0) {
return new IProject[] { project };
} else {
return null;
}
}
+ @Override
+ protected void clean(IProgressMonitor monitor) throws CoreException {
+ IProject project = getProject();
+
+ ConsoleManager consoleManager = new ConsoleManager(true);
+
+ CleanCommand cleanCommand = new CleanCommand();
+
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ boolean useDistClean = store.getBoolean(PREF_KEY_USE_DISTCLEAN);
+ if (useDistClean) {
+ cleanCommand.setProperty("distclena", "true");
+ }
+
+ cleanCommand.execute(project, consoleManager, monitor);
+ }
+
public static void addBuilderToProject(IProject fProject) throws CoreException {
IProjectDescription desc = fProject.getDescription();
ICommand[] commands = desc.getBuildSpec();
.size()]));
fProject.setDescription(description, null);
}
-
- public static void scheduleRebuild(final IProject project) {
- WorkspaceJob buildJob = new WorkspaceJob("Building " + project.getName()) {
- @Override
- public boolean belongsTo(Object family) {
- return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
- }
-
- @Override
- public IStatus runInWorkspace(IProgressMonitor monitor)
- throws CoreException {
- project.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
- return Status.OK_STATUS;
- }
- };
-
- buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
- buildJob.setUser(true);
- buildJob.schedule();
- }
}
--- /dev/null
+/*
+* Common
+*
+* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+*
+* Contact:
+* jm.jemin.kim <jm.jemin.kim@samsung.com>
+* Gyeongmin Ju <gyeongmin.ju@samsung.com>
+* Daeryong Park <bdragon.park@samsung.com>
+* Hyeongseok Heo <harry.heo@samsung.com>
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* Contributors:
+* - S-Core Co., Ltd
+*
+*/
+
+package org.tizen.rt.ide.commands;
+
+import java.util.Properties;
+
+/**
+ * @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
+ */
+public abstract class AbstractCommand implements Command {
+ protected Properties properties;
+
+ @Override
+ public void setProperty(String key, String value) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+
+ properties.put(key, value);
+ }
+
+ @Override
+ public String getProperty(String key) {
+ if (properties == null) {
+ return null;
+ }
+
+ return properties.getProperty(key);
+ }
+
+}
import java.io.IOException;
import java.util.Properties;
-import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tizen.rt.ide.Messages;
-import org.tizen.rt.ide.build.builder.RtBuilder;
import org.tizen.rt.ide.commands.model.BuildOption;
import org.tizen.rt.ide.commands.model.BuildScriptData;
import org.tizen.rt.ide.commands.model.BuildSettingData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
import org.tizen.rt.ide.console.ConsoleManager;
-import org.tizen.rt.ide.util.ResourceUtil;
-import org.tizen.rt.ide.util.SDKUtil;
/**
* @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
*/
-public class BuildCommand {
+public class BuildCommand extends AbstractCommand {
private final Logger logger = LoggerFactory.getLogger(BuildCommand.class);
- private static final String PATH_LINUX_BUILD_OUTPUT = "build/output"; //$NON-NLS-1$
+ private static final String PATH_BUILD_OUTPUT = "build/output"; //$NON-NLS-1$
private static final String PROP_NAME_OPTION = "option"; //$NON-NLS-1$
private static final String PROP_NAME_BOARD = "board"; //$NON-NLS-1$
- private static final String FILE_NAME_BUILD_INFO = "build.info"; //$NON-NLS-1$
+ private static final String FILENAME_CONFIG = ".config"; //$NON-NLS-1$
+ private static final String FILENAME_BUILD_INFO = "build.info"; //$NON-NLS-1$
+ private static final String FILENAME_BUILD_SETTING = ".buildSetting"; //$NON-NLS-1$
+ private static final String PROP_COMMENT_DEBUG_INFO = "TizerRT Debug information"; //$NON-NLS-1$
- private static final String PROP_COMMENT_DEBUG_INFO = "TinyARA Debug information"; //$NON-NLS-1$
+ private static final String COMMAND_NAME_BUILD = "build"; //$NON-NLS-1$
+ private static final String COMMAND_NAME_BUILD_WITH_TOOLCHAIN = "buildWithToolchain"; //$NON-NLS-1$
protected String getScriptFileName() {
return ".buildSpec.xml"; //$NON-NLS-1$
}
-
+
protected String getSettingFileName() {
- return ".buildSetting.xml"; //$NON-NLS-1$
+ return FILENAME_BUILD_SETTING; // $NON-NLS-1$
}
-
- public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
- String activeProjectPath = project.getLocation().toString();
-
- String sdkPath = SDKUtil.getSdkPath();
- String homePath = activeProjectPath;
- String outputPath = activeProjectPath + File.separator + PATH_LINUX_BUILD_OUTPUT;
-
- String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
+ private static int doBuilding(String projectPath, String scriptFileName, String settingFileName,
+ ConsoleManager consoleManager, Logger logger) {
+ String osDir = projectPath + File.separator + "os"; //$NON-NLS-1$
+ String outputPath = projectPath + File.separator + PATH_BUILD_OUTPUT;
+
BuildSettingData setting = new BuildSettingData();
String toolchainPath = null;
BuildOption buildOption = null;
- if (setting.load(new File(osDir, getSettingFileName()))) {
+ if (setting.load(new File(osDir, settingFileName))) {
toolchainPath = setting.getToolchainPath();
buildOption = setting.getBuildOption();
}
- File buildScriptFile = null;
- if (buildOption != null) {
- buildScriptFile = new File(activeProjectPath, "build" + File.separator + "configs" + File.separator + buildOption.getBoard() + File.separator + getScriptFileName()); // $NON-NLS-1$ // $NON-NLS-2$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(activeProjectPath, getScriptFileName()); // $NON-NLS-1$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts"
- + File.separator + getScriptFileName()); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- if (buildScriptFile == null || !buildScriptFile.exists()) {
+ File buildScriptFile = ScriptUtil.getScriptFile(projectPath, (buildOption != null) ? buildOption.getBoard() : null, scriptFileName);
+ if (buildScriptFile == null) {
if (consoleManager != null) {
consoleManager.println("Can not found xml file of build spec.");
}
BuildScriptData buildScript = new BuildScriptData(consoleManager);
buildScript.load(buildScriptFile);
- buildScript.addMacro("PROJECT_PATH", activeProjectPath); //$NON-NLS-1$
+ buildScript.addMacro("PROJECT_PATH", projectPath); //$NON-NLS-1$
if (buildOption != null) {
- buildScript.addMacro("BOARD", buildOption.getBoard());
- buildScript.addMacro("BUILD_OPTION", buildOption.getBuildOption());
+ buildScript.addMacro("BOARD", buildOption.getBoard()); //$NON-NLS-1$
+ buildScript.addMacro("BUILD_OPTION", buildOption.getBuildOption()); //$NON-NLS-1$
}
if (toolchainPath != null) {
- buildScript.addMacro("TOOLCHAIN", setting.getToolchainPath());
+ buildScript.addMacro("TOOLCHAIN", setting.getToolchainPath()); //$NON-NLS-1$
}
String buildCmdName;
if (toolchainPath != null && !toolchainPath.isEmpty()) {
- buildCmdName = "buildWithToolchain";
+ buildCmdName = COMMAND_NAME_BUILD_WITH_TOOLCHAIN;
} else {
- buildCmdName = "build";
+ buildCmdName = COMMAND_NAME_BUILD;
}
int result = buildScript.doCommand(buildCmdName, setting.getEnvVariables());
buildInfo.setProperty(PROP_NAME_BOARD, setting.getBuildOption().getBoard());
buildInfo.setProperty(PROP_NAME_OPTION, setting.getBuildOption().getBuildOption());
try {
- buildInfo.store(new FileWriter(new File(outputPath, FILE_NAME_BUILD_INFO)), PROP_COMMENT_DEBUG_INFO);
+ buildInfo.store(new FileWriter(new File(outputPath, FILENAME_BUILD_INFO)), PROP_COMMENT_DEBUG_INFO);
} catch (IOException e) {
logger.error(e.getMessage());
}
}
-
+
return result;
}
- public Object execute(IProject project, ConsoleManager consoleManager) throws ExecutionException {
+// public static void scheduleRebuild(String projectName, String projectPath, String scriptFilename, String settingFilename, ConsoleManager consoleManager, Logger logger) {
+// WorkspaceJob buildJob = new WorkspaceJob("Building " + projectName) {
+// @Override
+// public boolean belongsTo(Object family) {
+// return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
+// }
+//
+// @Override
+// public IStatus runInWorkspace(IProgressMonitor monitor)
+// throws CoreException {
+// String outputPath = projectPath + File.separator + PATH_BUILD_OUTPUT;
+// BuildCommand.doBuilding(projectPath, outputPath, scriptFilename, settingFilename, consoleManager, logger);
+// return Status.OK_STATUS;
+// }
+// };
+//
+// buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+// buildJob.setUser(true);
+// buildJob.schedule();
+// }
+
+ @Override
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
+ String activeProjectPath = project.getLocation().toString();
String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
- if (!new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ if (!new File(osDir, FILENAME_CONFIG).exists()) { // $NON-NLS-1$
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage); //$NON-NLS-1$
- return null;
+ return 1;
}
-
- RtBuilder.scheduleRebuild(project);
-
- return null;
+
+ BuildCommand.doBuilding(activeProjectPath, getScriptFileName(), getSettingFileName(), consoleManager, logger);
+
+ return 0;
}
- public Object execute(ConsoleManager consoleManager) throws ExecutionException {
- IProject project = ResourceUtil.getCurrentProject();
- return execute(project, consoleManager);
- }
}
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Shell;
-import org.tizen.rt.ide.build.ui.BuildConfigureDialog;
import org.tizen.rt.ide.commands.model.BuildOption;
import org.tizen.rt.ide.commands.model.BuildScriptData;
import org.tizen.rt.ide.commands.model.BuildSettingData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
+import org.tizen.rt.ide.commands.ui.BuildConfigureDialog;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
-import org.tizen.rt.ide.util.SDKUtil;
import org.tizen.rt.ide.util.ViewUtil;
/**
* @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
*/
-public class BuildConfigureCommand {
+public class BuildConfigureCommand extends AbstractCommand {
+ private static final String COMMAND_CONFIG = "config"; //$NON-NLS-1$
+
protected String getScriptFileName() {
return ".buildSpec.xml"; //$NON-NLS-1$
}
-
+
protected String getSettingFileName() {
return ".buildSetting.xml"; //$NON-NLS-1$
}
-
+
protected int configure(IProject project, BuildOption buildOption, ConsoleManager consoleManager,
IProgressMonitor monitor) {
if (buildOption == null) {
if (consoleManager != null) {
- consoleManager.println("Build option not selected."); //$NON-NLS-1$
- consoleManager.println("Execute configure before the build operation."); //$NON-NLS-1$
+ consoleManager.println("Build option not selected.");
+ consoleManager.println("Execute configure before the build operation.");
}
return 1;
}
if (consoleManager != null) {
- consoleManager.println("Build Option : " + buildOption.getBuildOption()); //$NON-NLS-1$
+ consoleManager.println("Build Option : " + buildOption.getBuildOption());
}
- String sdkPath = SDKUtil.getSdkPath();
String activeProjectPath = project.getLocation().toString();
-
- File buildScriptFile = null;
- if (buildOption != null) {
- buildScriptFile = new File(activeProjectPath, "build" + File.separator + "configs" + File.separator + buildOption.getBoard() + File.separator + getScriptFileName()); // $NON-NLS-1$ // $NON-NLS-2$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(activeProjectPath, getScriptFileName()); // $NON-NLS-1$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts"
- + File.separator + getScriptFileName()); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- if (buildScriptFile == null || !buildScriptFile.exists()) {
+
+ File buildScriptFile = ScriptUtil.getScriptFile(activeProjectPath, (buildOption != null) ? buildOption.getBoard() : null, getScriptFileName());
+ if (buildScriptFile == null) {
if (consoleManager != null) {
consoleManager.println("Can not found xml file of build spec.");
}
BuildSettingData buildSetting = new BuildSettingData();
buildSetting.load(new File(activeProjectPath, "os" + File.separator + getSettingFileName())); //$NON-NLS-1$
-
- String buildCmdName = "config"; //$NON-NLS-1$
+
+ String buildCmdName = COMMAND_CONFIG;
int result = buildScript.doCommand(buildCmdName);
if (result != 0) {
return result;
}
+ @Override
public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
Shell shell = ViewUtil.getWorkbenchWindow().getShell();
BuildConfigureDialog dialog = new BuildConfigureDialog(shell, ResourceUtil.getCurrentProject());
dialog.create();
int r = dialog.open();
- if (r == Dialog.OK) {
- configure(project, dialog.getBuildOption(), consoleManager, monitor);
+ if (r != Dialog.OK) {
+ return 1;
}
- return 0;
+ return configure(project, dialog.getBuildOption(), consoleManager, monitor);
}
}
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Shell;
-import org.tizen.rt.ide.build.ui.BuildEnvSettingDialog;
import org.tizen.rt.ide.commands.model.BuildSettingData;
+import org.tizen.rt.ide.commands.ui.BuildEnvSettingDialog;
+import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
import org.tizen.rt.ide.util.ViewUtil;
/**
* @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
*/
-public class BuildEnvSettingCommand {
+public class BuildEnvSettingCommand extends AbstractCommand {
- public Object execute(IProject project) throws ExecutionException {
+ @Override
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
String osDir = ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os";
// read setting
setting.write(new File(osDir, ".buildSetting"));
}
- return null;
+ return 0;
}
}
import java.io.IOException;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
/**
* @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
*/
-public class BuildKConfigureCommand {
+public class BuildKConfigureCommand extends AbstractCommand {
// private final Logger logger = LoggerFactory.getLogger(getClass());
public static final String[] KERNEL_CONFIG_CMD = new String[] { "gnome-terminal", "--command", "make menuconfig" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- public Object execute() throws ExecutionException {
- IProject project = ResourceUtil.getCurrentProject();
-
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
String osDir = project.getLocation().toString() + File.separator + "os";
try {
Runtime.getRuntime().exec(KERNEL_CONFIG_CMD, null, new File(osDir)); //$NON-NLS-1$
} catch (IOException e) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage); //$NON-NLS-1$
- return null;
+ return 1;
}
- return null;
+ return 0;
}
}
* Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
- * Daeryong Park <bdragon.park@samsung.com>
+ * Gyeongmin Ju <gyeongmin.ju@samsung.com>
* Hyeongseok Heo <harry.heo@samsung.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
import org.tizen.rt.ide.commands.model.BuildOption;
import org.tizen.rt.ide.commands.model.BuildScriptData;
import org.tizen.rt.ide.commands.model.BuildSettingData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
import org.tizen.rt.ide.console.ConsoleManager;
-import org.tizen.rt.ide.util.SDKUtil;
/**
* @since 2017. 5. 17.
- * @author Daeryong Park {@literal <bdragon.park@samsung.com>}
+ * @author Gyeongmin Ju {@literal <gyeongmin.ju@samsung.com>}
*/
-public class CleanCommand {
+public class CleanCommand extends AbstractCommand {
private static final String COMMAND_NAME_CLEAN = "clean"; //$NON-NLS-1$
private static final String COMMAND_NAME_DISTCLEAN = "distclean"; //$NON-NLS-1$
+ private static final String FILENAME_BUILD_SETTING = ".buildSetting"; //$NON-NLS-1$
protected String getScriptFileName() {
return ".buildSpec.xml"; //$NON-NLS-1$
}
-
- protected int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor, boolean useDistClean) {
- String activeProjectPath = project.getLocation().toString();
- String sdkPath = SDKUtil.getSdkPath();
-
+ @Override
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
+ String activeProjectPath = project.getLocation().toString();
String osDir = project.getLocation().toString() + File.separator + "os";
BuildSettingData setting = new BuildSettingData();
BuildOption buildOption = null;
- if (setting.load(new File(osDir, ".buildSetting"))) {
+ if (setting.load(new File(osDir, FILENAME_BUILD_SETTING))) {
buildOption = setting.getBuildOption();
}
- File buildScriptFile = null;
- if (buildOption != null) {
- buildScriptFile = new File(activeProjectPath, "build" + File.separator + "configs" + File.separator + buildOption.getBoard() + File.separator + getScriptFileName()); // $NON-NLS-1$ // $NON-NLS-2$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(activeProjectPath, getScriptFileName()); // $NON-NLS-1$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts"
- + File.separator + getScriptFileName()); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- if (buildScriptFile == null || !buildScriptFile.exists()) {
+ File buildScriptFile = ScriptUtil.getScriptFile(activeProjectPath, (buildOption != null) ? buildOption.getBoard() : null, getScriptFileName());
+ if (buildScriptFile == null) {
if (consoleManager != null) {
- consoleManager.println("Can not found xml file of build spec."); //$NON-NLS-1$
+ consoleManager.println("Can not found xml file of build spec.");
}
return 1;
}
buildScript.addMacro("PROJECT_PATH", activeProjectPath); //$NON-NLS-1$
+ boolean useDistClean = Boolean.valueOf(getProperty("distclean"));
String buildCmdName = useDistClean ? COMMAND_NAME_DISTCLEAN : COMMAND_NAME_CLEAN;
int result = buildScript.doCommand(buildCmdName);
--- /dev/null
+/*
+* Common
+*
+* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+*
+* Contact:
+* jm.jemin.kim <jm.jemin.kim@samsung.com>
+* Gyeongmin Ju <gyeongmin.ju@samsung.com>
+* Daeryong Park <bdragon.park@samsung.com>
+* Hyeongseok Heo <harry.heo@samsung.com>
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* Contributors:
+* - S-Core Co., Ltd
+*
+*/
+
+package org.tizen.rt.ide.commands;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.tizen.rt.ide.console.ConsoleManager;
+
+/**
+ * @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
+ */
+public interface Command {
+
+ public void setProperty(String key, String value);
+
+ public String getProperty(String key);
+
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor);
+
+}
package org.tizen.rt.ide.commands;
-import java.util.ArrayList;
-import java.util.List;
-
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.tizen.rt.ide.ResourceManager;
-import org.tizen.rt.ide.commands.model.FlashOption;
import org.tizen.rt.ide.console.ConsoleManager;
/**
- * CommandManager
- * @author jm.jaemin.kim{@literal <jm.jaemin.kim>} (S-Core)
+ * @author Gyeongmin Ju{@literal <gyeongmin.ju>} (S-Core)
*/
public class CommandManager {
- private static final String SUCCEED = "SUCCEED"; //$NON-NLS-1$
- private static final String FAILED = "FAILED"; //$NON-NLS-1$
-
- protected static List<FlashOption> flashOptionList = new ArrayList<FlashOption>();
- public static CommandManager rtosCommandManager = null;
- public static String DeviceInfoOnConfiguration = null;
+ public static int doBuildConfigure(IProject project, ConsoleManager consoleManager, Object object) {
+ BuildConfigureCommand cmd = new BuildConfigureCommand();
+ return cmd.execute(project, consoleManager, null);
+ }
- private static final Logger logger = LoggerFactory.getLogger(CommandManager.class);
+ public static int doBuildEnvSetting(IProject project, ConsoleManager consoleManager, Object object) {
+ BuildEnvSettingCommand cmd = new BuildEnvSettingCommand();
+ return cmd.execute(project, null, null);
+ }
- private CommandManager() {
+ public static int doBuildKConfigure(IProject project, ConsoleManager consoleManager, Object object) {
+ BuildKConfigureCommand cmd = new BuildKConfigureCommand();
+ return cmd.execute(project, null, null);
}
- public static CommandManager getDeviceEntryManager() {
- if (rtosCommandManager == null) {
- rtosCommandManager = new CommandManager();
- }
+ public static int doBuild(IProject project, ConsoleManager consoleManager, Logger logger) {
+ WorkspaceJob buildJob = new WorkspaceJob("Building " + project.getName()) {
+ @Override
+ public boolean belongsTo(Object family) {
+ return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
+ }
- return rtosCommandManager;
- }
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor)
+ throws CoreException {
+ project.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
+ // BuildCommand cmd = new BuildCommand();
+ // cmd.execute(project, consoleManager, monitor);
+ return Status.OK_STATUS;
+ }
+ };
- // TODO
- public static List<FlashOption> getFlashOptions(String projectPath, String board) {
- flashOptionListClear();
+ buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+ buildJob.setUser(true);
+ buildJob.schedule();
- List<FlashOption> result = FlashCommand.executeFindFlashOption(projectPath, board);
- return result;
+ return 0;
}
- public static void flashOptionListClear() {
- flashOptionList.clear();
- }
+ public static int doClean(IProject project, boolean useDistClean, ConsoleManager consoleManager, Logger logger) {
+ WorkspaceJob wsJob = new WorkspaceJob("Cleanging " + project.getName()) {
+ @Override
+ public boolean belongsTo(Object family) {
+ return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
+ }
- /**
- * @param project selected project
- * @param option build options
- * @param toolchainPath user's toolchain path
- * @param consoleManager ConsoleManager instance
- * @param monitor progress monitor
- * @return success or not
- */
- public static boolean runBuild(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
- if (consoleManager == null) {
- logger.error("ConsoleManager is null"); //$NON-NLS-1$
- return false;
- }
- BuildCommand buildCommand = new BuildCommand();
- int result = buildCommand.execute(project, consoleManager, monitor);
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor)
+ throws CoreException {
+ project.build(IncrementalProjectBuilder.CLEAN_BUILD, monitor);
+ // CleanCommand cleanCommand = new CleanCommand();
+ // cleanCommand.setProperty("distclean", (useDistClean) ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ // cleanCommand.execute(project, consoleManager, monitor);
+ return Status.OK_STATUS;
+ }
+ };
- return processResult(result, consoleManager);
+ wsJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+ wsJob.setUser(true);
+ wsJob.schedule();
+
+ return 0;
}
- /**
- * @param project selected project
- * @param option flash options
- * @param consoleManager ConsoleManager instance
- * @param monitor progress monitor
- * @return success or not
- */
-// public static boolean runFlash(IProject project, FlashOption option, ConsoleManager consoleManager, IProgressMonitor monitor) {
-// if (consoleManager == null) {
-// logger.error("ConsoleManager is null"); //$NON-NLS-1$
-// return false;
-// }
-// FlashCommand flashCommand = new FlashCommand();
-// int result = flashCommand.execute(project, option, consoleManager, monitor);
-//
-// return processResult(result, consoleManager);
-// }
-
- /**
- * @param project selected project
- * @param consoleManager ConsoleManager instance
- * @param monitor progress monitor
- * @param useDistClean
- * @return success or not
- */
- public static boolean runClean(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor, boolean useDistClean) {
- if (consoleManager == null) {
- logger.error("ConsoleManager is null"); //$NON-NLS-1$
- return false;
+ public static String doFlashCommand(IProject project, ConsoleManager consoleManager, Logger logger) {
+ FlashConfigCommand cmd = new FlashConfigCommand();
+ int result = cmd.execute(project, consoleManager, null);
+ if (result != 0) {
+ return null;
}
- CleanCommand cleanCommand = new CleanCommand();
- int result = cleanCommand.execute(project, consoleManager, monitor, useDistClean);
- return processResult(result, consoleManager);
+ return cmd.getProperty("flashoption"); //$NON-NLS-1$
}
- /**
- * Print success status to the Console and if failed print error messages to the Console
- * @param result
- * @param consoleManager
- * @return success or not
- */
- private static boolean processResult(int result, ConsoleManager consoleManager) {
- boolean success = result == 0;
- if (consoleManager != null) {
- consoleManager.print("[STATUS] ", SWT.BOLD, ResourceManager.INTENSE_BLACK); //$NON-NLS-1$
- if (success) { // success
- consoleManager.println(SUCCEED, SWT.BOLD, ResourceManager.INTENSE_GREEN);
- } else { // fail
- consoleManager.println(FAILED, SWT.BOLD, ResourceManager.INTENSE_RED);
+ public static int doFlash(IProject project, String flashOption, ConsoleManager consoleManager, Logger logger) {
+ WorkspaceJob wsJob = new WorkspaceJob("Flashing " + project.getName()) {
+ @Override
+ public boolean belongsTo(Object family) {
+ return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
}
- } else {
- if (success) { // success
- logger.debug("[STATUS] " + SUCCEED); //$NON-NLS-1$
- } else { // fail
- logger.debug("[STATUS] " + FAILED); //$NON-NLS-1$
+
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor)
+ throws CoreException {
+ FlashCommand cmd = new FlashCommand();
+ if (flashOption != null) {
+ cmd.setProperty("flashoption", flashOption); //$NON-NLS-1$
+ }
+ cmd.execute(project, consoleManager, monitor);
+ return Status.OK_STATUS;
}
- // logger.debug("[RESULT]" + result);
- }
- return success;
- }
+ };
+ wsJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+ wsJob.setUser(true);
+ wsJob.schedule();
+
+ return 0;
+ }
}
import java.io.File;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.resources.WorkspaceJob;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.tizen.rt.ide.Messages;
import org.tizen.rt.ide.commands.model.FlashOption;
import org.tizen.rt.ide.commands.model.FlashScriptData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
+import org.tizen.rt.ide.commands.ui.FlashOptionDialog;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.exception.BuildInfoHandlingException;
-import org.tizen.rt.ide.flash.ui.FlashOptionDialog;
import org.tizen.rt.ide.meta.BuildInfo;
import org.tizen.rt.ide.meta.BuildInfoManager;
-import org.tizen.rt.ide.util.SDKUtil;
import org.tizen.rt.ide.util.ViewUtil;
/**
* FlashCommand
* @author gyeongmin.ju{@literal <gyeongmin.ju>} (S-Core)
*/
-public class FlashCommand {
+public class FlashCommand extends AbstractCommand {
/**
* important PATH
*/
- private static final String PATH_BUILD_CONFIGS = "os"; //$NON-NLS-1$
- private static final String PATH_LINUX_BUILD_OUTPUT = "build/output"; //$NON-NLS-1$
private static final String FILE_NAME_FLASH_SCRIPT = ".flashSpec.xml"; //$NON-NLS-1$
private static final String FILE_NAME_BUILD_INFO = "build.info"; //$NON-NLS-1$
protected static String getScriptFileName() {
- return FILE_NAME_FLASH_SCRIPT; //$NON-NLS-1$
+ return FILE_NAME_FLASH_SCRIPT; // $NON-NLS-1$
}
-
- private static FlashScriptData getScript(String activeProjectPath, String board, ConsoleManager consoleManager) {
- String sdkPath = SDKUtil.getSdkPath();
-
- File buildScriptFile = null;
- if (board != null) {
- buildScriptFile = new File(activeProjectPath, "build" + File.separator + "configs" + File.separator + board + File.separator + getScriptFileName()); // $NON-NLS-1$ // $NON-NLS-2$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(activeProjectPath, getScriptFileName());
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts"
- + File.separator + getScriptFileName()); // $NON-NLS-1$ //$NON-NLS-2$
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
+ private static FlashScriptData getScript(String activeProjectPath, String board, ConsoleManager consoleManager) {
+ File buildScriptFile = ScriptUtil.getScriptFile(activeProjectPath, board, getScriptFileName());
+ if (buildScriptFile == null) {
+ if (consoleManager != null) {
+ consoleManager.println("Can not found xml file of flash spec.");
+ }
return null;
}
- FlashScriptData buildScript = new FlashScriptData(consoleManager);
- buildScript.load(buildScriptFile);
+ FlashScriptData script = new FlashScriptData(consoleManager);
+ script.load(buildScriptFile);
- buildScript.addMacro("PROJECT_PATH", activeProjectPath); //$NON-NLS-1$
+ script.addMacro("PROJECT_PATH", activeProjectPath); //$NON-NLS-1$
if (board != null) {
- buildScript.addMacro("BOARD", board); //$NON-NLS-1$
+ script.addMacro("BOARD", board); //$NON-NLS-1$
}
- return buildScript;
+ return script;
}
- public static List<FlashOption> executeFindFlashOption(String projectPath, String board) {
- FlashScriptData script = getScript(projectPath, board, null);
-
- List<String> cfgs = script.getOptions();
- if (cfgs == null) {
- return null;
- }
-
- List<FlashOption> resultFlashOptionList = new ArrayList<FlashOption>();
- for (String cfg : cfgs) {
- resultFlashOptionList.add(new FlashOption(cfg, cfg));
- }
-
- return resultFlashOptionList;
- }
-
- public static int execute(IProject project, String board, FlashOption flashOption, ConsoleManager consoleManager, IProgressMonitor monitor) {
+ @Override
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
String activeProjectPath = project.getLocation().toString();
-
- FlashScriptData flashScript = getScript(activeProjectPath, board, consoleManager);
- if (flashScript == null) {
- return 1;
- }
-
- String flashCmdName = "flash"; //$NON-NLS-1$
- int result = flashScript.doCommand(flashCmdName, flashOption.getFlashOption(), null);
-
- if (result != 0) {
- return result;
- }
-
- return result;
- }
-
- public Object execute(IProject project, ConsoleManager consoleManager) throws ExecutionException {
- String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
+ String osDir = activeProjectPath + File.separator + "os"; //$NON-NLS-1$
+ String outDir = activeProjectPath + File.separator + "build" + File.separator + "output"; //$NON-NLS-1$ //$NON-NLS-2$
if (!new File(osDir, ".config").exists()) { //$NON-NLS-1$
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage);
- return null;
+ return 1;
}
- String outDir = project.getLocation().toString() + File.separator + "build" + File.separator + "output"; //$NON-NLS-1$ //$NON-NLS-2$
-
if (!new File(outDir, FILE_NAME_BUILD_INFO).exists()) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.FlashHandler_NotFoundBuildInfo);
- return null;
+ return 1;
}
BuildInfo buildInfo = null;
buildInfo = BuildInfoManager.loadBuildInfo(project);
} catch (BuildInfoHandlingException e) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.FlashHandler_BuildInfoIsNotNormal);
- return null;
+ return 1;
}
- Shell shell = ViewUtil.getWorkbenchWindow().getShell();
- FlashOptionDialog dialog = new FlashOptionDialog(shell, project, buildInfo.getBoard());
- dialog.create();
- int r = dialog.open();
-
- if (r == Dialog.OK) {
- String option = dialog.getOption();
- scheduleFlash(project, buildInfo.getBoard(), new FlashOption(option, option), consoleManager);
+ String option = properties.getProperty("flashoption"); //$NON-NLS-1$
+ if (option == null) {
+ return 1;
}
- return null;
- }
-
- public static void scheduleFlash(final IProject project, final String board, final FlashOption flashOption, final ConsoleManager consoleManager) {
- WorkspaceJob wsJob = new WorkspaceJob("Flashing " + project.getName()) {
- @Override
- public boolean belongsTo(Object family) {
- return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
- }
+ FlashScriptData flashScript = getScript(activeProjectPath, buildInfo.getBoard(), consoleManager);
+ if (flashScript == null) {
+ return 1;
+ }
- @Override
- public IStatus runInWorkspace(IProgressMonitor monitor)
- throws CoreException {
- return (FlashCommand.execute(project, board, flashOption, consoleManager, monitor) == 0) ? Status.OK_STATUS : Status.CANCEL_STATUS;
- }
- };
+ String flashCmdName = "flash"; //$NON-NLS-1$
+ int result = flashScript.doCommand(flashCmdName, option, null);
- wsJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
- wsJob.setUser(true);
- wsJob.schedule();
+ return result;
}
}
--- /dev/null
+/*
+* Common
+*
+* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+*
+* Contact:
+* jm.jemin.kim <jm.jemin.kim@samsung.com>
+* Gyeongmin Ju <gyeongmin.ju@samsung.com>
+* Daeryong Park <bdragon.park@samsung.com>
+* Hyeongseok Heo <harry.heo@samsung.com>
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* Contributors:
+* - S-Core Co., Ltd
+*
+*/
+
+package org.tizen.rt.ide.commands;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.commands.model.FlashOption;
+import org.tizen.rt.ide.commands.model.FlashScriptData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
+import org.tizen.rt.ide.commands.ui.FlashOptionDialog;
+import org.tizen.rt.ide.console.ConsoleManager;
+import org.tizen.rt.ide.exception.BuildInfoHandlingException;
+import org.tizen.rt.ide.meta.BuildInfo;
+import org.tizen.rt.ide.meta.BuildInfoManager;
+import org.tizen.rt.ide.util.ViewUtil;
+
+/**
+ * FlashCommand
+ * @author gyeongmin.ju{@literal <gyeongmin.ju>} (S-Core)
+ */
+public class FlashConfigCommand extends AbstractCommand {
+
+ /**
+ * important PATH
+ */
+ private static final String FILE_NAME_FLASH_SCRIPT = ".flashSpec.xml"; //$NON-NLS-1$
+ private static final String FILE_NAME_BUILD_INFO = "build.info"; //$NON-NLS-1$
+
+ protected static String getScriptFileName() {
+ return FILE_NAME_FLASH_SCRIPT; //$NON-NLS-1$
+ }
+
+ private static FlashScriptData getScript(String activeProjectPath, String board, ConsoleManager consoleManager) {
+ File buildScriptFile = ScriptUtil.getScriptFile(activeProjectPath, board, getScriptFileName());
+ if (buildScriptFile == null) {
+ if (consoleManager != null) {
+ consoleManager.println("Can not found xml file of flash spec.");
+ }
+ return null;
+ }
+
+ FlashScriptData script = new FlashScriptData(consoleManager);
+ script.load(buildScriptFile);
+
+ script.addMacro("PROJECT_PATH", activeProjectPath); //$NON-NLS-1$
+ if (board != null) {
+ script.addMacro("BOARD", board); //$NON-NLS-1$
+ }
+
+ return script;
+ }
+
+ private static List<FlashOption> executeFindFlashOption(String projectPath, String board) {
+ FlashScriptData script = getScript(projectPath, board, null);
+
+ List<String> cfgs = script.getOptions();
+ if (cfgs == null) {
+ return null;
+ }
+
+ List<FlashOption> resultFlashOptionList = new ArrayList<FlashOption>();
+ for (String cfg : cfgs) {
+ resultFlashOptionList.add(new FlashOption(cfg, cfg));
+ }
+
+ return resultFlashOptionList;
+ }
+
+ @Override
+ public int execute(IProject project, ConsoleManager consoleManager, IProgressMonitor monitor) {
+ String activeProjectPath = project.getLocation().toString();
+ String osDir = activeProjectPath + File.separator + "os"; //$NON-NLS-1$
+ String outDir = activeProjectPath + File.separator + "build" + File.separator + "output"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ if (!new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage);
+ return 1;
+ }
+
+ if (!new File(outDir, FILE_NAME_BUILD_INFO).exists()) {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.FlashHandler_NotFoundBuildInfo);
+ return 1;
+ }
+
+ BuildInfo buildInfo = null;
+ try {
+ buildInfo = BuildInfoManager.loadBuildInfo(project);
+ } catch (BuildInfoHandlingException e) {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.FlashHandler_BuildInfoIsNotNormal);
+ return 1;
+ }
+
+ List<FlashOption> options = FlashConfigCommand.executeFindFlashOption(activeProjectPath, buildInfo.getBoard());
+
+ Shell shell = ViewUtil.getWorkbenchWindow().getShell();
+ FlashOptionDialog dialog = new FlashOptionDialog(shell, project, options);
+ dialog.create();
+ int r = dialog.open();
+ if (r != Dialog.OK) {
+ return 1;
+ }
+
+ String option = dialog.getOption();
+
+ setProperty("flashoption", option); //$NON-NLS-1$
+
+ return 0;
+ }
+
+}
import javax.xml.bind.JAXBException;
+import org.eclipse.swt.SWT;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.rt.ide.ResourceManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.MacroUtil;
import org.tizen.rt.ide.util.ProcUtil;
*/
public class BuildScriptData {
+ private static final String SUCCEED = "SUCCEED"; //$NON-NLS-1$
+ private static final String FAILED = "FAILED"; //$NON-NLS-1$
+ private static final Logger logger = LoggerFactory.getLogger(BuildScriptData.class);
+
private static class BuildScript {
public String cmdStr;
public String curDir;
macros.put(name, value);
}
+ public void consolePrint(String str) {
+ if (consoleManager != null) {
+ consoleManager.println(str);
+ }
+ }
+
public void consolePrintln(String str) {
if (consoleManager != null) {
consoleManager.println(str);
}
}
+ private boolean processResult(int result, ConsoleManager consoleManager) {
+ boolean success = result == 0;
+ if (consoleManager != null) {
+ consoleManager.print("[STATUS] ", SWT.BOLD, ResourceManager.INTENSE_BLACK); //$NON-NLS-1$
+ if (success) { // success
+ consoleManager.println(SUCCEED, SWT.BOLD, ResourceManager.INTENSE_GREEN);
+ } else { // fail
+ consoleManager.println(FAILED, SWT.BOLD, ResourceManager.INTENSE_RED);
+ }
+ } else {
+ if (success) { // success
+ logger.debug("[STATUS] " + SUCCEED); //$NON-NLS-1$
+ } else { // fail
+ logger.debug("[STATUS] " + FAILED); //$NON-NLS-1$
+ }
+ // logger.debug("[RESULT]" + result);
+ }
+ return success;
+ }
+
public int load(File buildScriptFile) {
consolePrintln("Build project using " + buildScriptFile);
scripts = getBuildScripts(buildScriptFile);
}
cmds[0] = cmdStr;
- return ProcUtil.executeProcess(pb, cmds, script.isShellCmd, script.shell,
+ int result = ProcUtil.executeProcess(pb, cmds, script.isShellCmd, script.shell,
curDir, consoleManager, null);
+ processResult(result, consoleManager);
+
+ return result;
}
public int doCommand(String buildCmdName) {
--- /dev/null
+package org.tizen.rt.ide.commands.model;
+
+import java.io.File;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
+import org.tizen.rt.ide.util.SDKUtil;
+
+public class ScriptUtil {
+ public static File getScriptFile(String homePath, String boardName, String fileName) {
+ File buildScriptFile = null;
+ if (boardName != null) {
+ buildScriptFile = new File(homePath, "build" + File.separator + "configs" + File.separator + boardName + File.separator + fileName); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ if (buildScriptFile == null || !buildScriptFile.exists()) {
+ boolean r = MessageDialog.openQuestion(Display.getDefault().getActiveShell(),
+ "Warning", fileName + " file not found on Board path.\nDo you want use thi default script file?");
+ if (!r) {
+ return null;
+ }
+
+ buildScriptFile = new File(homePath, "build" + File.separator + "configs" + File.separator + fileName); //$NON-NLS-1$ //$NON-NLS-2$
+ if (buildScriptFile == null || !buildScriptFile.exists()) {
+ String sdkPath = SDKUtil.getSdkPath();
+ buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts" + File.separator + fileName); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ }
+
+ if (buildScriptFile == null || !buildScriptFile.exists()) {
+ return null;
+ }
+
+ return buildScriptFile;
+ }
+
+}
-package org.tizen.rt.ide.build.ui;
+package org.tizen.rt.ide.commands.ui;
import java.io.File;
import java.util.List;
-package org.tizen.rt.ide.build.ui;
+package org.tizen.rt.ide.commands.ui;
import java.util.Map;
import java.util.Set;
* - S-Core Co., Ltd
*
*/
-package org.tizen.rt.ide.flash.ui;
+package org.tizen.rt.ide.commands.ui;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.tizen.rt.ide.Messages;
-import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.commands.model.FlashOption;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
public class FlashOptionDialog extends Dialog {
private String projectPath;
- private String board;
+ private List<FlashOption> options;
private String option;
private Table table;
public TableViewer tableViewer;
* Create the dialog.
* @param parentShell
*/
- public FlashOptionDialog(Shell parentShell, IProject project, String board) {
+ public FlashOptionDialog(Shell parentShell, IProject project, List<FlashOption> options) {
super(parentShell);
projectPath = project.getLocation().toString();
- this.board = board;
+ this.options = options;
}
/**
tableViewer.setLabelProvider(new TableViewerProvider());
tableViewer.setContentProvider(new ArrayContentProvider());
- List<FlashOption> opts = CommandManager.getFlashOptions(projectPath, board);
-
- tableViewer.setInput(opts);
+ tableViewer.setInput(options);
return composite;
}
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
-import org.tizen.rt.ide.commands.BuildCommand;
-import org.tizen.rt.ide.commands.BuildConfigureCommand;
+import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
*/
public class BatchBuildHandler extends AbstractHandler {
- // private final Logger logger = LoggerFactory.getLogger(getClass());
-
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
return null;
}
- String osDir = project.getLocation().toString() + File.separator + "os";
+ String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
ConsoleManager consoleManager = new ConsoleManager(true);
- if (!new File(osDir, ".config").exists()) {
- BuildConfigureCommand cmd = new BuildConfigureCommand();
- // cmd.execute(project, consoleManager, monitor);
- cmd.execute(project, consoleManager, null);
+ if (!new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ int result = CommandManager.doBuildConfigure(project, consoleManager, null);
+ if (result != 0) {
+ return null;
+ }
}
- if (new File(osDir, ".config").exists()) {
- BuildCommand cmd = new BuildCommand();
- cmd.execute(project, consoleManager);
+ if (new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ CommandManager.doBuild(project, consoleManager, null);
}
return null;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
-import org.tizen.rt.ide.commands.BuildConfigureCommand;
+import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
- String osDir = ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os";
+ String osDir = ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
- if (new File(osDir, ".config").exists()) {
+ if (new File(osDir, ".config").exists()) { //$NON-NLS-1$
boolean r = MessageDialog.openQuestion(Display.getDefault().getActiveShell(),
- "Warning", "The previous configuration already exist.\nOverwrite it?"); //$NON-NLS-1$
+ "Warning", "The previous configuration already exist.\nOverwrite it?");
if (!r) {
return 1;
}
ConsoleManager consoleManager = new ConsoleManager(true);
- BuildConfigureCommand cmd = new BuildConfigureCommand();
- cmd.execute(project, consoleManager, null);
+ CommandManager.doBuildConfigure(project, consoleManager, null);
return null;
}
*/
package org.tizen.rt.ide.handlers;
-import java.io.File;
-
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.tizen.rt.ide.Messages;
-import org.tizen.rt.ide.commands.BuildEnvSettingCommand;
+import org.tizen.rt.ide.commands.CommandManager;
+import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
-import org.tizen.rt.ide.util.ViewUtil;
/**
* Our sample handler extends AbstractHandler, an IHandler base class.
*/
public class BuildEnvSettingHandler extends AbstractHandler {
- private final Logger logger = LoggerFactory.getLogger(BuildEnvSettingHandler.class);
-
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
- BuildEnvSettingCommand cmd = new BuildEnvSettingCommand();
- cmd.execute(project);
+ ConsoleManager consoleManager = new ConsoleManager(true);
+
+ CommandManager.doBuildEnvSetting(project, consoleManager, null);
return null;
}
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
-import org.tizen.rt.ide.Messages;
-import org.tizen.rt.ide.commands.BuildCommand;
+import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
- String osDir = project.getLocation().toString() + File.separator + "os";
+ String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
- if(!new File(osDir, ".config").exists()) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", "TizenRT has not been configured."); //$NON-NLS-1$
+ if(!new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", "TizenRT has not been configured.");
return null;
}
ConsoleManager consoleManager = new ConsoleManager(true);
- BuildCommand cmd = new BuildCommand();
- cmd.execute(consoleManager);
+ CommandManager.doBuild(project, consoleManager, null);
return null;
}
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
-import org.tizen.rt.ide.commands.BuildKConfigureCommand;
+import org.tizen.rt.ide.commands.CommandManager;
+import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
/**
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
- String osDir = project.getLocation().toString() + File.separator + "os";
+ String osDir = project.getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
- if(!new File(osDir, ".config").exists()) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", "TizenRT has not been configured."); //$NON-NLS-1$
+ if(!new File(osDir, ".config").exists()) { //$NON-NLS-1$
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", "TizenRT has not been configured.");
return null;
}
- BuildKConfigureCommand cmd = new BuildKConfigureCommand();
- cmd.execute();
+ ConsoleManager consoleManager = new ConsoleManager(true);
+
+ CommandManager.doBuildKConfigure(project, consoleManager, null);
return null;
}
import org.slf4j.LoggerFactory;
import org.tizen.rt.ide.Activator;
import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.commands.CleanCommand;
import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
final boolean useDistClean = dialog.getToggleState();
store.setValue(PREF_KEY_USE_DISTCLEAN, useDistClean);
- IWorkbench workbench = Activator.getDefault().getWorkbench();
- IProgressService progressService = workbench.getProgressService();
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Clean Project", 3); //$NON-NLS-1$
-
- CommandManager.runClean(project, new ConsoleManager(true), monitor, useDistClean);
- monitor.worked(1);
-
- try {
- project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
- monitor.worked(1);
- } catch (CoreException e) {
- logger.error(e.getMessage(), e);
- }
-
- monitor.done();
- }
- };
- try {
- progressService.busyCursorWhile(runnable);
- } catch (InvocationTargetException e) {
- logger.error(e.getMessage(), e);
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
-
+ ConsoleManager consoleManager = new ConsoleManager(true);
+
+ CommandManager.doClean(project, useDistClean, consoleManager, logger);
+
return null;
}
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.tizen.rt.ide.Messages;
-import org.tizen.rt.ide.commands.FlashCommand;
+import org.tizen.rt.ide.commands.CommandManager;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.ResourceUtil;
public Object execute(ExecutionEvent event) throws ExecutionException {
IProject project = ResourceUtil.getCurrentProject();
- String osDir = ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os";
+ String osDir = ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os"; //$NON-NLS-1$
- if (!new File(osDir, ".config").exists()) {
+ if (!new File(osDir, ".config").exists()) { //$NON-NLS-1$
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage); //$NON-NLS-1$
return null;
}
ConsoleManager consoleManager = new ConsoleManager(true);
- FlashCommand cmd = new FlashCommand();
- return cmd.execute(project, consoleManager);
+ String option = CommandManager.doFlashCommand(project, consoleManager, null);
+ if (option == null) {
+ return null;
+ }
+
+ CommandManager.doFlash(project, option, consoleManager, null);
+
+ return null;
}
}
import org.slf4j.LoggerFactory;
import org.tizen.rt.ide.Messages;
import org.tizen.rt.ide.commands.model.DebugScriptData;
+import org.tizen.rt.ide.commands.model.ScriptUtil;
import org.tizen.rt.ide.console.ConsoleManager;
import org.tizen.rt.ide.util.MacroUtil;
import org.tizen.rt.ide.util.OSChecker;
private static final Logger logger = LoggerFactory.getLogger(LaunchShortcut.class);
- private static final String PROP_COMMENT_DEBUG_INFO = "TinyARA Debug information"; //$NON-NLS-1$
- private static final String PROP_NAME_SCRIPT = "script"; //$NON-NLS-1$
private static final String PROP_NAME_BOARD = "board"; //$NON-NLS-1$
private static final String FILE_NAME_BUILD_INFO = "build.info"; //$NON-NLS-1$
private static final String PATH_BUILD_OUTPUT = "build/output"; //$NON-NLS-1$
private static final String PATH_BUILD_CONFIGS = "build/configs"; //$NON-NLS-1$
private static final String PROGRAM_NAME = PATH_BUILD_OUTPUT + "/bin/tinyara"; //$NON-NLS-1$
private static final String DEBUGGER_NAME = "arm-none-eabi-gdb"; //$NON-NLS-1$
- private static final String PATH_LINUX_BUILD_OUTPUT = "build/output"; //$NON-NLS-1$
private static final String FILE_NAME_DEBUG_SCRIPT = ".debugSpec.xml"; //$NON-NLS-1$
private final String OPENOCD_LAUNCHTYPE = "ilg.gnuarmeclipse.debug.gdbjtag.openocd.launchConfigurationType"; //$NON-NLS-1$
- private static DebugScriptData getScript(String activeProjectPath, String boardPath, ConsoleManager consoleManager) {
- String sdkPath = SDKUtil.getSdkPath();
-
- File buildScriptFile = null;
- if (boardPath != null) {
- buildScriptFile = new File(boardPath, FILE_NAME_DEBUG_SCRIPT);
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(activeProjectPath, FILE_NAME_DEBUG_SCRIPT);
- }
- if (buildScriptFile == null || !buildScriptFile.exists()) {
- buildScriptFile = new File(sdkPath, "rt-ide" + File.separator + "resources" + File.separator + "scripts"
- + File.separator + FILE_NAME_DEBUG_SCRIPT); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- if (buildScriptFile == null || !buildScriptFile.exists()) {
+ private static DebugScriptData getScript(String activeProjectPath, String boardName, ConsoleManager consoleManager) {
+ File buildScriptFile = ScriptUtil.getScriptFile(activeProjectPath, boardName, FILE_NAME_DEBUG_SCRIPT);
+ if (buildScriptFile == null) {
+ if (consoleManager != null) {
+ consoleManager.println("Can not found xml file of flash spec.");
+ }
return null;
}
}
private ILaunchConfiguration createConfiguration(String projectName, IPath targetPath, String boardName) throws CoreException {
- String sdkPath = SDKUtil.getSdkPath();
String homePath = ResourceUtil.getCurrentProject().getLocation().toString();
- String boardPath = homePath + File.separator + "build" + File.separator + "configs" + File.separator + boardName; //$NON-NLS-1$ //$NON-NLS-2$
-
- DebugScriptData debugScriptData = getScript(homePath, boardPath, null);
+ DebugScriptData debugScriptData = getScript(homePath, boardName, null);
if (debugScriptData == null) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosDebug_ERROR_DEBUGSCRIPT_NOT_EXIST);
return null;