-
-
Notifications
You must be signed in to change notification settings - Fork 89
Closed
Description
I've finished my first Capt'n Plugin, and I've solved all my goals.
BTW, to be able to run it, we need a CaptainHook patched version, because I've added some new capabilities.
Third One -- this report
Caution
It's mandatory to run my plugin, but it's NOT a reading confort !
On same way to define a custom config my-custom-index: my-custom-value
https://php.captainhook.info/configure.html#settings
And {$CONFIG|value-of:custom>>my-custom-index} placeholder
I would like to be able to retrieve any Plugin Option if defined with such syntax
{$CONFIG|value-of:plugin>>PluginClassFQN.my-plugin-option-key}
For example:
{$CONFIG|value-of:plugin>>\\Bartlett\\CaptainHookBinPlugin\\BinPlugin.auto-colors-flag}
With
{
"config": {
"verbosity": "normal",
"allow-failure": false,
"ansi-colors": true,
"git-directory": ".git",
"fail-on-first-error": false,
"bootstrap": "examples/vendor-bin-autoloader.php",
"plugins": [
{
"plugin": "\\Bartlett\\CaptainHookBinPlugin\\BinPlugin",
"options": {
"config-directory": "{$ENV|value-of:XDG_CONFIG_HOME|default:~/.config}",
"binary-directory": "{$ENV|value-of:VENDOR_BIN_DIR|default:vendor/bin}",
"ansi-colors-flag": "--ansi",
"auto-colors-flag": "--colors=auto",
"always-colors-flag": "--colors=always",
"never-colors-flag": "--colors=never"
}
}
],
"includes": [
"examples/pre-push.mago.json"
]
}
}My Patch suggestion
diff --git a/src/Runner/Action/Cli/Command/Placeholder/Config.php b/src/Runner/Action/Cli/Command/Placeholder/Config.php
index acb5f44..dce152b 100644
--- a/src/Runner/Action/Cli/Command/Placeholder/Config.php
+++ b/src/Runner/Action/Cli/Command/Placeholder/Config.php
@@ -58,6 +58,15 @@ class Config extends Foundation
$custom = $this->config->getCustomSettings();
return $custom[$key] ?? '';
}
+ if (str_starts_with($value, 'plugin>>')) {
+ list ($pluginClass, $key) = explode('.', substr($value, 8));
+ foreach ($this->config->getPlugins() as $plugin) {
+ if ($plugin->getPlugin() === $pluginClass) {
+ return $plugin->getOptions()->get($key);
+ }
+ };
+ return '';
+ }
if (!isset($this->valueToMethod[$value])) {
return '';
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels