aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/.gitignore10
-rw-r--r--.idea/mingling.iml18
-rw-r--r--.idea/modules.xml8
-rw-r--r--.idea/runConfigurations/Check__All.xml26
-rw-r--r--.idea/runConfigurations/Check__Codes.xml26
-rw-r--r--.idea/runConfigurations/Check__Documents.xml26
-rw-r--r--.idea/runConfigurations/Refresh_All.xml27
-rw-r--r--.idea/runConfigurations/Run__Cargo_Format.xml23
-rw-r--r--.idea/runConfigurations/Run__Deploy_API_Docs.xml28
-rw-r--r--.idea/runConfigurations/Run__Fix_Documents_Codebox.xml28
-rw-r--r--.idea/runConfigurations/Run__Generate_Docsify_Sidebar.xml28
-rw-r--r--.idea/runConfigurations/Run__Package_All_Crates.xml28
-rw-r--r--.idea/runConfigurations/Run__Sync_Examples_To_Crates.xml28
-rw-r--r--.idea/runConfigurations/Run__Sync_Examples_To_Helpdoc.xml28
-rw-r--r--.idea/runConfigurations/Run__Sync_Feature_List.xml28
-rw-r--r--.idea/vcs.xml6
-rw-r--r--CHANGELOG.md2
-rw-r--r--mingling/src/setups/exit_code.rs11
18 files changed, 377 insertions, 2 deletions
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..30cf57e
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,10 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Ignored default folder with query files
+/queries/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/mingling.iml b/.idea/mingling.iml
new file mode 100644
index 0000000..ca57e6c
--- /dev/null
+++ b/.idea/mingling.iml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="EMPTY_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/arg_picker/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/arg_picker_macros/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/mingling/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/mingling_core/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/mingling_core/tests" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/mingling_macros/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/mingling_pathf/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/mling/src" isTestSource="false" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module> \ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..764f612
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/mingling.iml" filepath="$PROJECT_DIR$/.idea/mingling.iml" />
+ </modules>
+ </component>
+</project> \ No newline at end of file
diff --git a/.idea/runConfigurations/Check__All.xml b/.idea/runConfigurations/Check__All.xml
new file mode 100644
index 0000000..95af540
--- /dev/null
+++ b/.idea/runConfigurations/Check__All.xml
@@ -0,0 +1,26 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Check: All"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="CI"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --bin ci --quiet -- -y"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2" />
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Check__Codes.xml b/.idea/runConfigurations/Check__Codes.xml
new file mode 100644
index 0000000..f117f8f
--- /dev/null
+++ b/.idea/runConfigurations/Check__Codes.xml
@@ -0,0 +1,26 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Check: Codes"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="CI"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --bin ci --quiet -- --test-codes -y"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2" />
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Check__Documents.xml b/.idea/runConfigurations/Check__Documents.xml
new file mode 100644
index 0000000..b5a503b
--- /dev/null
+++ b/.idea/runConfigurations/Check__Documents.xml
@@ -0,0 +1,26 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Check: Documents"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="CI"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --bin ci --quiet -- --test-docs -y"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2" />
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Refresh_All.xml b/.idea/runConfigurations/Refresh_All.xml
new file mode 100644
index 0000000..24be845
--- /dev/null
+++ b/.idea/runConfigurations/Refresh_All.xml
@@ -0,0 +1,27 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Refresh All"
+ type="CompoundRunConfigurationType"
+ >
+ <toRun name="Run: Cargo Format" type="CargoCommandRunConfiguration" />
+ <toRun
+ name="Run: Fix Documents Codebox"
+ type="CargoCommandRunConfiguration"
+ />
+ <toRun
+ name="Run: Generate Docsify Sidebar"
+ type="CargoCommandRunConfiguration"
+ />
+ <toRun
+ name="Run: Sync Examples To Crates"
+ type="CargoCommandRunConfiguration"
+ />
+ <toRun
+ name="Run: Sync Examples To Helpdoc"
+ type="CargoCommandRunConfiguration"
+ />
+ <toRun name="Run: Sync Feature List" type="CargoCommandRunConfiguration" />
+ <method v="2" />
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Cargo_Format.xml b/.idea/runConfigurations/Run__Cargo_Format.xml
new file mode 100644
index 0000000..a99a91d
--- /dev/null
+++ b/.idea/runConfigurations/Run__Cargo_Format.xml
@@ -0,0 +1,23 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Cargo Format"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option name="command" value="fmt" />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2" />
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Deploy_API_Docs.xml b/.idea/runConfigurations/Run__Deploy_API_Docs.xml
new file mode 100644
index 0000000..1a32a64
--- /dev/null
+++ b/.idea/runConfigurations/Run__Deploy_API_Docs.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Deploy API Docs"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin deploy-api-docs"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Fix_Documents_Codebox.xml b/.idea/runConfigurations/Run__Fix_Documents_Codebox.xml
new file mode 100644
index 0000000..0863ef1
--- /dev/null
+++ b/.idea/runConfigurations/Run__Fix_Documents_Codebox.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Fix Documents Codebox"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin docs-code-box-fix"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Generate_Docsify_Sidebar.xml b/.idea/runConfigurations/Run__Generate_Docsify_Sidebar.xml
new file mode 100644
index 0000000..a50a2dd
--- /dev/null
+++ b/.idea/runConfigurations/Run__Generate_Docsify_Sidebar.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Generate Docsify Sidebar"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin docsify-sidebar-gen"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Package_All_Crates.xml b/.idea/runConfigurations/Run__Package_All_Crates.xml
new file mode 100644
index 0000000..336c9b3
--- /dev/null
+++ b/.idea/runConfigurations/Run__Package_All_Crates.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Package All Crates"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin package-all"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Sync_Examples_To_Crates.xml b/.idea/runConfigurations/Run__Sync_Examples_To_Crates.xml
new file mode 100644
index 0000000..43db9bb
--- /dev/null
+++ b/.idea/runConfigurations/Run__Sync_Examples_To_Crates.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Sync Examples To Crates"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin refresh-docs"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Sync_Examples_To_Helpdoc.xml b/.idea/runConfigurations/Run__Sync_Examples_To_Helpdoc.xml
new file mode 100644
index 0000000..8e7faff
--- /dev/null
+++ b/.idea/runConfigurations/Run__Sync_Examples_To_Helpdoc.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Sync Examples To Helpdoc"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin sync-examples"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/runConfigurations/Run__Sync_Feature_List.xml b/.idea/runConfigurations/Run__Sync_Feature_List.xml
new file mode 100644
index 0000000..1e6ed8f
--- /dev/null
+++ b/.idea/runConfigurations/Run__Sync_Feature_List.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration
+ default="false"
+ name="Run: Sync Feature List"
+ type="CargoCommandRunConfiguration"
+ factoryName="Cargo Command"
+ folderName="Tools"
+ >
+ <option
+ name="command"
+ value="run --manifest-path .run/Cargo.toml --quiet --bin refresh-feature-mod"
+ />
+ <option name="workingDirectory" value="file://$PROJECT_DIR$" />
+ <envs />
+ <option name="emulateTerminal" value="true" />
+ <option name="channel" value="DEFAULT" />
+ <option name="requiredFeatures" value="true" />
+ <option name="allFeatures" value="false" />
+ <option name="withSudo" value="false" />
+ <option name="buildTarget" value="REMOTE" />
+ <option name="backtrace" value="SHORT" />
+ <option name="isRedirectInput" value="false" />
+ <option name="redirectInputPath" value="" />
+ <method v="2">
+ <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
+ </method>
+ </configuration>
+</component>
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project> \ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e85058c..49b1f35 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -211,6 +211,8 @@ None
All examples, docs, and test cases across the repository have been updated to use `.into()` where packed types are returned from chain functions.
+3. **[`core`]** **[`ExitCodeSetup`]** Updated `ExitCodeSetup` to only override the exit code when `ResExitCode` has been modified (i.e., `exit_code != 0`). Previously, it unconditionally overrode the exit code, which could interfere with exit codes set by other hooks or the program's default exit flow. The `on_finish` hook now returns `ProgramControlUnit::OverrideExitCode(...)` only when the exit code is non-zero, and `ProgramControls::Empty` otherwise. The import of `ProgramControls` has been added accordingly.
+
---
## Release 0.2.2 (2026-07-10)
diff --git a/mingling/src/setups/exit_code.rs b/mingling/src/setups/exit_code.rs
index 025ed8a..6b8a1ef 100644
--- a/mingling/src/setups/exit_code.rs
+++ b/mingling/src/setups/exit_code.rs
@@ -2,7 +2,7 @@ use std::marker::PhantomData;
use mingling_core::{
ProgramCollect,
- hook::{ProgramControlUnit, ProgramHook},
+ hook::{ProgramControlUnit, ProgramControls, ProgramHook},
setup::ProgramSetup,
this,
};
@@ -39,7 +39,14 @@ where
// Insert hook to override exit code before program ends
program.with_hook(ProgramHook::empty().on_finish(|_| {
let this = this::<C>().res_or_default::<ResExitCode>();
- ProgramControlUnit::OverrideExitCode(this.exit_code)
+ let ec = this.exit_code;
+
+ // Only override when ResExitCode has been modified
+ if ec != 0 {
+ ProgramControlUnit::OverrideExitCode(this.exit_code).into()
+ } else {
+ ProgramControls::Empty
+ }
}));
}
}