This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new a5c16bda2b Issue #5981 (Hop Doc bug fix) (#6173)
a5c16bda2b is described below

commit a5c16bda2b6469609f5a671e3bdbdcde74246290
Author: Matt Casters <[email protected]>
AuthorDate: Fri Dec 12 05:03:58 2025 +0100

    Issue #5981 (Hop Doc bug fix) (#6173)
    
    * Issue #5981 (Hop Doc bug fix)
    
    * Issue #5981 (Hop Doc integration test)
    
    ---------
    
    Co-authored-by: Matt Casters <[email protected]>
---
 .../org/apache/hop/config/HopCommandConfig.java    |   7 +
 .../apache/hop/encryption/HopCommandEncrypt.java   |   2 +
 .../java/org/apache/hop/run/HopCommandRun.java     |   7 +
 .../main/java/org/apache/hop/search/HopSearch.java |   1 +
 .../main/java/org/apache/hop/www/HopServer.java    |   1 +
 .../actions/0009-build-documentation-check.hpl     | 373 +++++++++++++++++++++
 .../actions/main-0009-build-documentation.hwf      | 212 ++++++++++++
 .../org/apache/hop/documentation/ActionDoc.java    |   2 +-
 .../org/apache/hop/documentation/DocBuilder.java   |   1 +
 .../org/apache/hop/ui/hopgui/HopCommandGui.java    |   2 +-
 10 files changed, 606 insertions(+), 2 deletions(-)

diff --git a/engine/src/main/java/org/apache/hop/config/HopCommandConfig.java 
b/engine/src/main/java/org/apache/hop/config/HopCommandConfig.java
index 7a5051d37a..1f547a681d 100644
--- a/engine/src/main/java/org/apache/hop/config/HopCommandConfig.java
+++ b/engine/src/main/java/org/apache/hop/config/HopCommandConfig.java
@@ -20,6 +20,7 @@ package org.apache.hop.config;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.hop.core.Const;
 import org.apache.hop.core.config.plugin.ConfigPlugin;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.variables.IVariables;
@@ -53,4 +54,10 @@ public class HopCommandConfig extends HopConfigBase
 
     Hop.addMixinPlugins(cmd, ConfigPlugin.CATEGORY_CONFIG);
   }
+
+  @Override
+  public void run() {
+    System.setProperty(Const.HOP_PLATFORM_RUNTIME, "CONF");
+    super.run();
+  }
 }
diff --git 
a/engine/src/main/java/org/apache/hop/encryption/HopCommandEncrypt.java 
b/engine/src/main/java/org/apache/hop/encryption/HopCommandEncrypt.java
index f03fde9ebc..e30f92f31b 100644
--- a/engine/src/main/java/org/apache/hop/encryption/HopCommandEncrypt.java
+++ b/engine/src/main/java/org/apache/hop/encryption/HopCommandEncrypt.java
@@ -20,6 +20,7 @@ package org.apache.hop.encryption;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.hop.core.Const;
 import org.apache.hop.core.encryption.Encr;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.variables.IVariables;
@@ -62,6 +63,7 @@ public class HopCommandEncrypt implements Runnable, 
IHopCommand {
   @Override
   public void run() {
     try {
+      System.setProperty(Const.HOP_PLATFORM_RUNTIME, "ENCRYPT");
       if (passwords == null || passwords.length == 0) {
         System.exit(1);
       }
diff --git a/engine/src/main/java/org/apache/hop/run/HopCommandRun.java 
b/engine/src/main/java/org/apache/hop/run/HopCommandRun.java
index 783edf5998..be1543d674 100644
--- a/engine/src/main/java/org/apache/hop/run/HopCommandRun.java
+++ b/engine/src/main/java/org/apache/hop/run/HopCommandRun.java
@@ -20,6 +20,7 @@ package org.apache.hop.run;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.hop.core.Const;
 import org.apache.hop.core.config.plugin.ConfigPlugin;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.variables.IVariables;
@@ -52,4 +53,10 @@ public class HopCommandRun extends HopRunBase
 
     Hop.addMixinPlugins(cmd, ConfigPlugin.CATEGORY_RUN);
   }
+
+  @Override
+  public void run() {
+    System.setProperty(Const.HOP_PLATFORM_RUNTIME, "RUN");
+    super.run();
+  }
 }
diff --git a/engine/src/main/java/org/apache/hop/search/HopSearch.java 
b/engine/src/main/java/org/apache/hop/search/HopSearch.java
index 1acb6ef215..fb93a263ef 100644
--- a/engine/src/main/java/org/apache/hop/search/HopSearch.java
+++ b/engine/src/main/java/org/apache/hop/search/HopSearch.java
@@ -118,6 +118,7 @@ public class HopSearch implements Runnable, 
IHasHopMetadataProvider, IHopCommand
   @Override
   public void run() {
     try {
+      System.setProperty(Const.HOP_PLATFORM_RUNTIME, "SEARCH");
       LogChannel logChannel = new LogChannel("hop-search");
       logChannel.setSimplified(true);
       ILogChannel log = logChannel;
diff --git a/engine/src/main/java/org/apache/hop/www/HopServer.java 
b/engine/src/main/java/org/apache/hop/www/HopServer.java
index ff2ab19888..f8882fe7d9 100644
--- a/engine/src/main/java/org/apache/hop/www/HopServer.java
+++ b/engine/src/main/java/org/apache/hop/www/HopServer.java
@@ -256,6 +256,7 @@ public class HopServer implements Runnable, 
IHasHopMetadataProvider, IHopCommand
   @Override
   public void run() {
     try {
+      System.setProperty(Const.HOP_PLATFORM_RUNTIME, "SERVER");
       log = new LogChannel("HopServer");
       log.setLogLevel(determineLogLevel());
       log.logDetailed("Start of Hop Server");
diff --git a/integration-tests/actions/0009-build-documentation-check.hpl 
b/integration-tests/actions/0009-build-documentation-check.hpl
new file mode 100644
index 0000000000..03ea13b2b2
--- /dev/null
+++ b/integration-tests/actions/0009-build-documentation-check.hpl
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+
+-->
+<pipeline>
+  <info>
+    <name>0009-build-documentation-check</name>
+    <name_sync_with_filename>Y</name_sync_with_filename>
+    <description/>
+    <extended_description/>
+    <pipeline_version/>
+    <pipeline_type>Normal</pipeline_type>
+    <parameters>
+    </parameters>
+    <capture_transform_performance>N</capture_transform_performance>
+    
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
+    
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
+    <created_user>-</created_user>
+    <created_date>2025/12/11 10:30:25.056</created_date>
+    <modified_user>-</modified_user>
+    <modified_date>2025/12/11 10:30:25.056</modified_date>
+  </info>
+  <notepads>
+    <notepad>
+      <backgroundcolorblue>251</backgroundcolorblue>
+      <backgroundcolorgreen>232</backgroundcolorgreen>
+      <backgroundcolorred>201</backgroundcolorred>
+      <bordercolorblue>90</bordercolorblue>
+      <bordercolorgreen>58</bordercolorgreen>
+      <bordercolorred>14</bordercolorred>
+      <fontbold>N</fontbold>
+      <fontcolorblue>90</fontcolorblue>
+      <fontcolorgreen>58</fontcolorgreen>
+      <fontcolorred>14</fontcolorred>
+      <fontitalic>N</fontitalic>
+      <fontname>Cantarell</fontname>
+      <fontsize>11</fontsize>
+      <height>32</height>
+      <xloc>432</xloc>
+      <yloc>208</yloc>
+      <note>We expect one svg file per pipeline or workflow in this project:
+We expect 2 extra md files for the index and metadata.</note>
+      <width>32</width>
+    </notepad>
+  </notepads>
+  <order>
+    <hop>
+      <from>get md files</from>
+      <to>count md files</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>get svg files</from>
+      <to>count svg files</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>get pipelines/workflows</from>
+      <to>count hop files</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>count md files</from>
+      <to>X</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>count svg files</from>
+      <to>X</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>count hop files</from>
+      <to>X</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>X</from>
+      <to>Check Hop Doc files</to>
+      <enabled>Y</enabled>
+    </hop>
+  </order>
+  <transform>
+    <name>Check Hop Doc files</name>
+    <type>ScriptValueMod</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <optimizationLevel>9</optimizationLevel>
+    <jsScripts>
+      <jsScript>
+        <jsScript_type>0</jsScript_type>
+        <jsScript_name>Script 1</jsScript_name>
+        <jsScript_script>/*
+    We expect one svg file per pipeline or workflow in this project:
+    We expect 2 extra md files for the index and metadata.
+*/
+
+if (nrMd-nrHop != 2) {
+  throw new Error("We expected to find "+(nrHop+2)+" .md files, but only found 
"+nrMd);
+}
+
+if (nrSvg-nrHop != 0) {
+  throw new Error("We expected to find "+nrHop+" .svg files, but only found 
"+nrSvg);
+}
+</jsScript_script>
+      </jsScript>
+    </jsScripts>
+    <fields>    </fields>
+    <attributes/>
+    <GUI>
+      <xloc>512</xloc>
+      <yloc>144</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>X</name>
+    <type>JoinRows</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <cache_size>500</cache_size>
+    <compare>
+      <condition>
+        <conditions>
+</conditions>
+        <function>=</function>
+        <negated>N</negated>
+        <operator>-</operator>
+      </condition>
+    </compare>
+    <directory>%%java.io.tmpdir%%</directory>
+    <prefix>out</prefix>
+    <attributes/>
+    <GUI>
+      <xloc>368</xloc>
+      <yloc>144</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>count hop files</name>
+    <type>GroupBy</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <add_linenr>N</add_linenr>
+    <all_rows>N</all_rows>
+    <directory>${java.io.tmpdir}</directory>
+    <fields>
+      <field>
+        <aggregate>nrHop</aggregate>
+        <subject>filename</subject>
+        <type>COUNT_ALL</type>
+      </field>
+    </fields>
+    <give_back_row>Y</give_back_row>
+    <group>
+</group>
+    <ignore_aggregate>N</ignore_aggregate>
+    <prefix>grp</prefix>
+    <attributes/>
+    <GUI>
+      <xloc>240</xloc>
+      <yloc>224</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>count md files</name>
+    <type>GroupBy</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <add_linenr>N</add_linenr>
+    <all_rows>N</all_rows>
+    <directory>${java.io.tmpdir}</directory>
+    <fields>
+      <field>
+        <aggregate>nrMd</aggregate>
+        <subject>filename</subject>
+        <type>COUNT_ALL</type>
+      </field>
+    </fields>
+    <give_back_row>Y</give_back_row>
+    <group>
+</group>
+    <ignore_aggregate>N</ignore_aggregate>
+    <prefix>grp</prefix>
+    <attributes/>
+    <GUI>
+      <xloc>240</xloc>
+      <yloc>64</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>count svg files</name>
+    <type>GroupBy</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <add_linenr>N</add_linenr>
+    <all_rows>N</all_rows>
+    <directory>${java.io.tmpdir}</directory>
+    <fields>
+      <field>
+        <aggregate>nrSvg</aggregate>
+        <subject>filename</subject>
+        <type>COUNT_ALL</type>
+      </field>
+    </fields>
+    <give_back_row>Y</give_back_row>
+    <group>
+</group>
+    <ignore_aggregate>N</ignore_aggregate>
+    <prefix>grp</prefix>
+    <attributes/>
+    <GUI>
+      <xloc>240</xloc>
+      <yloc>144</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>get md files</name>
+    <type>GetFileNames</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <doNotFailIfNoFile>N</doNotFailIfNoFile>
+    <dynamic_include_subfolders>N</dynamic_include_subfolders>
+    <file>
+      <file_required>Y</file_required>
+      <filemask>.*\.md</filemask>
+      <include_subfolders>Y</include_subfolders>
+      <name>${java.io.tmpdir}/hop-doc/</name>
+    </file>
+    <filefield>N</filefield>
+    <filter>
+      <filterfiletype>all_files</filterfiletype>
+    </filter>
+    <isaddresult>Y</isaddresult>
+    <limit>0</limit>
+    <raiseAnExceptionIfNoFile>N</raiseAnExceptionIfNoFile>
+    <rownum>N</rownum>
+    <attributes/>
+    <GUI>
+      <xloc>112</xloc>
+      <yloc>64</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>get pipelines/workflows</name>
+    <type>GetFileNames</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <doNotFailIfNoFile>N</doNotFailIfNoFile>
+    <dynamic_include_subfolders>N</dynamic_include_subfolders>
+    <file>
+      <file_required>Y</file_required>
+      <filemask>.*\.hpl</filemask>
+      <include_subfolders>Y</include_subfolders>
+      <name>${PROJECT_HOME}/</name>
+    </file>
+    <file>
+      <file_required>Y</file_required>
+      <filemask>.*\.hwf</filemask>
+      <include_subfolders>Y</include_subfolders>
+      <name>${PROJECT_HOME}/</name>
+    </file>
+    <file>
+      <file_required>N</file_required>
+      <include_subfolders>N</include_subfolders>
+    </file>
+    <filefield>N</filefield>
+    <filter>
+      <filterfiletype>all_files</filterfiletype>
+    </filter>
+    <isaddresult>Y</isaddresult>
+    <limit>0</limit>
+    <raiseAnExceptionIfNoFile>N</raiseAnExceptionIfNoFile>
+    <rownum>N</rownum>
+    <attributes/>
+    <GUI>
+      <xloc>112</xloc>
+      <yloc>224</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>get svg files</name>
+    <type>GetFileNames</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <doNotFailIfNoFile>N</doNotFailIfNoFile>
+    <dynamic_include_subfolders>N</dynamic_include_subfolders>
+    <file>
+      <file_required>Y</file_required>
+      <filemask>.*\.svg</filemask>
+      <include_subfolders>Y</include_subfolders>
+      <name>${java.io.tmpdir}/hop-doc/</name>
+    </file>
+    <filefield>N</filefield>
+    <filter>
+      <filterfiletype>all_files</filterfiletype>
+    </filter>
+    <isaddresult>Y</isaddresult>
+    <limit>0</limit>
+    <raiseAnExceptionIfNoFile>N</raiseAnExceptionIfNoFile>
+    <rownum>N</rownum>
+    <attributes/>
+    <GUI>
+      <xloc>112</xloc>
+      <yloc>144</yloc>
+    </GUI>
+  </transform>
+  <transform_error_handling>
+  </transform_error_handling>
+  <attributes/>
+</pipeline>
diff --git a/integration-tests/actions/main-0009-build-documentation.hwf 
b/integration-tests/actions/main-0009-build-documentation.hwf
new file mode 100644
index 0000000000..1427bdb2c6
--- /dev/null
+++ b/integration-tests/actions/main-0009-build-documentation.hwf
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+
+-->
+<workflow>
+  <name>main-0009-build-documentation</name>
+  <name_sync_with_filename>Y</name_sync_with_filename>
+  <description/>
+  <extended_description/>
+  <workflow_version/>
+  <created_user>-</created_user>
+  <created_date>2025/12/11 10:12:29.110</created_date>
+  <modified_user>-</modified_user>
+  <modified_date>2025/12/11 10:12:29.110</modified_date>
+  <parameters>
+    </parameters>
+  <actions>
+    <action>
+      <name>Start</name>
+      <description/>
+      <type>SPECIAL</type>
+      <attributes/>
+      <DayOfMonth>1</DayOfMonth>
+      <doNotWaitOnFirstExecution>N</doNotWaitOnFirstExecution>
+      <hour>12</hour>
+      <intervalMinutes>60</intervalMinutes>
+      <intervalSeconds>0</intervalSeconds>
+      <minutes>0</minutes>
+      <repeat>N</repeat>
+      <schedulerType>0</schedulerType>
+      <weekDay>1</weekDay>
+      <parallel>N</parallel>
+      <xloc>80</xloc>
+      <yloc>64</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>Build Documentation</name>
+      <description/>
+      <type>DOCUMENTATION</type>
+      <attributes/>
+      <includingMetadata>Y</includingMetadata>
+      <includingNotes>Y</includingNotes>
+      <includingParameters>Y</includingParameters>
+      <targetParentFolder>${java.io.tmpdir}/hop-doc/</targetParentFolder>
+      <parallel>N</parallel>
+      <xloc>672</xloc>
+      <yloc>64</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>/tmp/hop-doc/</name>
+      <description/>
+      <type>CREATE_FOLDER</type>
+      <attributes/>
+      <fail_of_folder_exists>N</fail_of_folder_exists>
+      <foldername>${java.io.tmpdir}/hop-doc/</foldername>
+      <parallel>N</parallel>
+      <xloc>336</xloc>
+      <yloc>64</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>delete /tmp/hop-doc</name>
+      <description/>
+      <type>DELETE_FOLDERS</type>
+      <attributes/>
+      <arg_from_previous>N</arg_from_previous>
+      <fields>
+        <field>
+          <name>${java.io.tmpdir}/hop-doc/</name>
+        </field>
+      </fields>
+      <limit_folders>10</limit_folders>
+      <success_condition>success_if_no_errors</success_condition>
+      <parallel>N</parallel>
+      <xloc>208</xloc>
+      <yloc>64</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>0009-build-documentation-check</name>
+      <description/>
+      <type>PIPELINE</type>
+      <attributes/>
+      <add_date>N</add_date>
+      <add_time>N</add_time>
+      <clear_files>N</clear_files>
+      <clear_rows>N</clear_rows>
+      <create_parent_folder>N</create_parent_folder>
+      <exec_per_row>N</exec_per_row>
+      <filename>${PROJECT_HOME}/0009-build-documentation-check.hpl</filename>
+      <loglevel>Basic</loglevel>
+      <parameters>
+        <pass_all_parameters>Y</pass_all_parameters>
+      </parameters>
+      <params_from_previous>N</params_from_previous>
+      <run_configuration>local</run_configuration>
+      <set_append_logfile>N</set_append_logfile>
+      <set_logfile>N</set_logfile>
+      <wait_until_finished>Y</wait_until_finished>
+      <parallel>N</parallel>
+      <xloc>384</xloc>
+      <yloc>176</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>/tmp/hop-doc empty?</name>
+      <description/>
+      <type>FOLDER_IS_EMPTY</type>
+      <attributes/>
+      <foldername>${java.io.tmpdir}/hop-doc/</foldername>
+      <include_subfolders>Y</include_subfolders>
+      <specify_wildcard>N</specify_wildcard>
+      <parallel>N</parallel>
+      <xloc>496</xloc>
+      <yloc>64</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>Abort workflow</name>
+      <description/>
+      <type>ABORT</type>
+      <attributes/>
+      <always_log_rows>N</always_log_rows>
+      <message>We didn't find all the expected files in the generated 
documentation.</message>
+      <parallel>N</parallel>
+      <xloc>592</xloc>
+      <yloc>176</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>Success</name>
+      <description/>
+      <type>SUCCESS</type>
+      <attributes/>
+      <parallel>N</parallel>
+      <xloc>384</xloc>
+      <yloc>256</yloc>
+      <attributes_hac/>
+    </action>
+  </actions>
+  <hops>
+    <hop>
+      <from>Start</from>
+      <to>delete /tmp/hop-doc</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>Y</unconditional>
+    </hop>
+    <hop>
+      <from>delete /tmp/hop-doc</from>
+      <to>/tmp/hop-doc/</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+    <hop>
+      <from>Build Documentation</from>
+      <to>0009-build-documentation-check</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+    <hop>
+      <from>/tmp/hop-doc/</from>
+      <to>/tmp/hop-doc empty?</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+    <hop>
+      <from>/tmp/hop-doc empty?</from>
+      <to>Build Documentation</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+    <hop>
+      <from>0009-build-documentation-check</from>
+      <to>Abort workflow</to>
+      <enabled>Y</enabled>
+      <evaluation>N</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+    <hop>
+      <from>0009-build-documentation-check</from>
+      <to>Success</to>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+  </hops>
+  <notepads>
+  </notepads>
+  <attributes/>
+</workflow>
diff --git 
a/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/ActionDoc.java
 
b/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/ActionDoc.java
index ab95cdd6c3..909c0e6dc3 100644
--- 
a/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/ActionDoc.java
+++ 
b/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/ActionDoc.java
@@ -121,7 +121,7 @@ public class ActionDoc extends ActionBase implements 
Cloneable, IAction {
             provider,
             getVariable(DocBuilder.VAR_PROJECT_NAME),
             getVariable(DocBuilder.VAR_PROJECT_HOME),
-            targetParentFolder,
+            resolve(targetParentFolder),
             includingParameters,
             includingNotes,
             includingMetadata);
diff --git 
a/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/DocBuilder.java
 
b/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/DocBuilder.java
index 0e7976854b..29719623d2 100644
--- 
a/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/DocBuilder.java
+++ 
b/plugins/misc/documentation/src/main/java/org/apache/hop/documentation/DocBuilder.java
@@ -152,6 +152,7 @@ public class DocBuilder implements Runnable, IHopCommand, 
IHasHopMetadataProvide
     // Check a few variables...
     //
     try {
+      System.setProperty(Const.HOP_PLATFORM_RUNTIME, "DOC");
       handleMixinActions();
 
       if (StringUtils.isNotEmpty(variables.getVariable(VAR_PROJECT_NAME))) {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/HopCommandGui.java 
b/ui/src/main/java/org/apache/hop/ui/hopgui/HopCommandGui.java
index 40a11e7b9b..c78457cb13 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/HopCommandGui.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/HopCommandGui.java
@@ -46,7 +46,6 @@ public class HopCommandGui implements Runnable, IHopCommand {
       CommandLine cmd, IVariables variables, MultiMetadataProvider 
metadataProvider)
       throws HopException {
     // Nothing specific
-    System.setProperty(Const.HOP_PLATFORM_RUNTIME, "GUI");
   }
 
   @Override
@@ -54,6 +53,7 @@ public class HopCommandGui implements Runnable, IHopCommand {
     if (unmatchedArguments == null) {
       unmatchedArguments = new String[] {};
     }
+    System.setProperty(Const.HOP_PLATFORM_RUNTIME, "GUI");
     HopGui.main(unmatchedArguments);
   }
 }

Reply via email to