ソースを参照

impl run target

ruki 8 年 前
コミット
d7e5940e40

+ 89 - 43
.idea/workspace.xml

@@ -63,8 +63,8 @@
       <file leaf-file-name="XMakeRunConfiguration.kt" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="186">
-              <caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+            <state relative-caret-position="431">
+              <caret line="53" column="5" lean-forward="true" selection-start-line="53" selection-start-column="5" selection-end-line="53" selection-end-column="5" />
               <folding>
                 <element signature="e#29#379#0" expanded="true" />
               </folding>
@@ -72,46 +72,56 @@
           </provider>
         </entry>
       </file>
+      <file leaf-file-name=".gitignore" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/.gitignore">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="0">
+              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file leaf-file-name="SystemUtils.kt" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="45">
-              <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
+            <state relative-caret-position="75">
+              <caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="XMakeRunConfigurationEditor.kt" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationEditor.kt">
+      <file leaf-file-name="XMakeRunState.kt" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="486">
-              <caret line="112" column="0" lean-forward="true" selection-start-line="112" selection-start-column="0" selection-end-line="112" selection-end-column="0" />
+            <state relative-caret-position="78">
+              <caret line="24" column="63" lean-forward="true" selection-start-line="24" selection-start-column="63" selection-end-line="24" selection-end-column="63" />
               <folding>
-                <element signature="e#29#695#0" expanded="true" />
+                <element signature="e#29#444#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
+      <file leaf-file-name="KillableColoredProcessHandler.class" pinned="false" current-in-tab="false">
+        <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/process/KillableColoredProcessHandler.class">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="206">
-              <caret line="22" column="0" lean-forward="false" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
-              <folding>
-                <element signature="e#29#352#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="105">
+              <caret line="14" column="11" lean-forward="false" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="ProjectTask.class" pinned="false" current-in-tab="false">
-        <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/task/ProjectTask.class">
+      <file leaf-file-name="XMakeProjectTasksRunner.kt" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="90">
-              <caret line="9" column="23" lean-forward="false" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
-              <folding />
+            <state relative-caret-position="369">
+              <caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
+              <folding>
+                <element signature="e#29#352#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
@@ -139,6 +149,8 @@
       <find>selected</find>
       <find>myModel</find>
       <find>set</find>
+      <find>withpara</find>
+      <find>forceColors</find>
     </findStrings>
   </component>
   <component name="GradleLocalSettings">
@@ -190,11 +202,12 @@
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/actions/RunAction.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationProducer.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/ui/StringsComboBox.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfigurationEditor.kt" />
-        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunner.kt" />
         <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt" />
+        <option value="$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt" />
       </list>
     </option>
   </component>
@@ -470,10 +483,6 @@
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/xmake-shared/src/org/tboox/xmake/shared/build/XMakeBuildTargetType.java" />
-    <entry file="file://$PROJECT_DIR$/xmake-shared/src/org/tboox/xmake/shared/build/XMakeBuildTarget.java" />
-    <entry file="file://$PROJECT_DIR$/xmake-service/xmake-jps-plugin.iml" />
-    <entry file="file://$PROJECT_DIR$/xmake-service/src/org/tboox/xmake/service/build/XMakeBuilder.java" />
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/build/XMakeBuildTarget.java" />
     <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/build/XMakeBuilderService.java" />
     <entry file="file://$PROJECT_DIR$/xmake-service/src/org/tboox/xmake/service/build/XMakeBuilderService.java" />
@@ -673,14 +682,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/task/ProjectTask.class">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="90">
@@ -717,12 +718,20 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/idea.jar!/com/intellij/execution/process/KillableColoredProcessHandler.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="105">
+          <caret line="14" column="11" lean-forward="false" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="186">
-          <caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+        <state relative-caret-position="369">
+          <caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
           <folding>
-            <element signature="e#29#379#0" expanded="true" />
+            <element signature="e#29#352#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -737,12 +746,49 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt">
+    <entry file="file://$PROJECT_DIR$/.gitignore">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/utils/SystemUtils.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunConfiguration.kt">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="206">
-          <caret line="22" column="0" lean-forward="false" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
+        <state relative-caret-position="431">
+          <caret line="53" column="5" lean-forward="true" selection-start-line="53" selection-start-column="5" selection-end-line="53" selection-end-column="5" />
           <folding>
-            <element signature="e#29#352#0" expanded="true" />
+            <element signature="e#29#379#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/configurations/GeneralCommandLine.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="281">
+          <caret line="66" column="43" lean-forward="false" selection-start-line="66" selection-start-column="8" selection-end-line="66" selection-end-column="43" />
+          <folding>
+            <element signature="e#2308#2309#0" expanded="true" />
+            <element signature="e#2352#2353#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/org/tboox/xmake/run/XMakeRunState.kt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="78">
+          <caret line="24" column="63" lean-forward="true" selection-start-line="24" selection-start-column="63" selection-end-line="24" selection-end-column="63" />
+          <folding>
+            <element signature="e#29#444#0" expanded="true" />
           </folding>
         </state>
       </provider>

+ 2 - 1
src/org/tboox/xmake/run/XMakeProjectTasksRunner.kt

@@ -23,6 +23,7 @@ class XMakeProjectTasksRunner : ProjectTaskRunner() {
             return true
         }
 
+        /*
         // hook 'Build Artifacts' => package
         if (projectTask is ArtifactBuildTask) {
             return true
@@ -34,7 +35,7 @@ class XMakeProjectTasksRunner : ProjectTaskRunner() {
             if (runProfile is XMakeRunConfiguration) {
                 return true
             }
-        }
+        }*/
 
         return false
     }

+ 1 - 2
src/org/tboox/xmake/run/XMakeRunConfiguration.kt

@@ -59,8 +59,7 @@ class XMakeRunConfiguration(project: Project, name: String, factory: Configurati
     override fun getConfigurationEditor(): SettingsEditor<out RunConfiguration> = XMakeRunConfigurationEditor(project)
 
     override fun getState(executor: Executor, environment: ExecutionEnvironment): RunProfileState? {
-        Log.info("getState")
-        return null
+        return XMakeRunState(environment, currentTarget)
     }
 
     companion object {

+ 54 - 0
src/org/tboox/xmake/run/XMakeRunState.kt

@@ -0,0 +1,54 @@
+package org.tboox.xmake.run
+
+import com.intellij.execution.configurations.CommandLineState
+import com.intellij.execution.configurations.GeneralCommandLine
+import com.intellij.execution.process.KillableColoredProcessHandler
+import com.intellij.execution.process.ProcessHandler
+import com.intellij.execution.process.ProcessTerminatedListener
+import com.intellij.execution.runners.ExecutionEnvironment
+import com.intellij.openapi.diagnostic.Logger
+
+class XMakeRunState(
+        environment: ExecutionEnvironment,
+        target: String
+) : CommandLineState(environment) {
+
+    // the run target
+    val runTarget = target
+
+    override fun startProcess(): ProcessHandler {
+
+        // init parameters
+        val parameters = mutableListOf("run")
+        if (runTarget == "all") {
+            parameters.add("-a")
+        } else if (runTarget != "" && runTarget != "default") {
+            parameters.add(runTarget)
+        }
+
+        // get project directory
+        val projectdir = getEnvironment().getProject().basePath
+
+        // make command
+        val cmd = GeneralCommandLine("xmake")
+                .withParameters(parameters)
+                .withCharset(Charsets.UTF_8)
+                .withWorkDirectory(projectdir)
+                .withRedirectErrorStream(true)
+
+        // make handler
+        val handler = KillableColoredProcessHandler(cmd)
+
+        // shows exit code upon termination
+        ProcessTerminatedListener.attach(handler)
+
+        // start this command
+        return handler
+    }
+
+    companion object {
+
+        // get log
+        private val Log = Logger.getInstance(XMakeRunState::class.java.getName())
+    }
+}

+ 4 - 5
src/org/tboox/xmake/utils/SystemUtils.kt

@@ -1,14 +1,13 @@
 package org.tboox.xmake.utils
 
-object SystemUtils {
+import com.intellij.openapi.util.SystemInfo
 
-    // the operation system
-    private val OS: String = System.getProperty("os.name").toLowerCase()
+object SystemUtils {
 
     // get platform
     fun platform(): String = when {
-        OS.contains("win") -> "windows"
-        OS.contains("mac") -> "macosx"
+        SystemInfo.isWindows -> "windows"
+        SystemInfo.isMac -> "macosx"
         else -> "linux"
     }
 }