@@ -601,6 +601,8 @@ static int user_event_plugin(struct user_event *uev, struct event *event)
opt->date = talloc_strdup(opt, event_get_param(event, "date"));
opt->plugin_file = talloc_strdup(opt,
event_get_param(event, "source_file"));
+ opt->command_file = talloc_strdup(opt,
+ event_get_param(event, "plugin_commands"));
executables = talloc_strdup(opt, event_get_param(event, "executables"));
if (!executables) {
@@ -2,7 +2,7 @@
__dest=/
__pb_mount_dir=/var/petitboot/mnt/dev/
-plugin_abi=1
+plugin_abi=2
plugin_ext=pb-plugin
plugin_meta=pb-plugin.conf
plugin_meta_dir=etc/preboot-plugins/
@@ -235,6 +235,7 @@ do_install()
name=$PLUGIN_NAME id=$PLUGIN_ID version=$PLUGIN_VERSION \
vendor=$PLUGIN_VENDOR vendor_id=$PLUGIN_VENDOR_ID \
date=$PLUGIN_DATE executables="$PLUGIN_EXECUTABLES" \
+ plugin_commands="${__dest}/${PLUGIN_COMMANDS}" \
source_file=$url installed="yes"
echo "Plugin installed"
@@ -364,6 +365,10 @@ shell environment (eg, /usr/bin/my-raid-config).
If multiple executables are provided, separate with a space.
EOF
read executables
+cat <<EOF
+Enter a command definition JSON file (optional)
+EOF
+ read plugin_commands
date=$(date +%Y-%m-%d)
@@ -379,6 +384,7 @@ PLUGIN_ID='$pluginshortname'
PLUGIN_VERSION='$version'
PLUGIN_DATE='$date'
PLUGIN_EXECUTABLES='$executables'
+PLUGIN_COMMANDS='${plugin_commands}'
EOF
}
This points to an optional JSON file providing detailed command examples. The format is an array of command objects which define a platform name if appropriate, command name, command executable, argument format string, and an array of arguments containing name and arguments. At the moment three argument types are recognised: FieldString, FieldInt, and FieldFloat (string, int64_t, and double respectively). For example: [ { "platform": "any", "name": "Set NVRAM parameter", "cmd": "nvram", "arg_fmt": "-p {} --update-config {}={}", "args": [ { "name": "Partition", "arg": { "FieldString": "common" } }, { "name": "Parameter", "arg": { "FieldString": "some" } }, { "name": "Value", "arg": { "FieldString": "value" } } ], "help": "Example: Set an NVRAM parameter" }, { "platform": "witherspoon", "name": "Foo Memory Allocation", "cmd": "nvram", "arg_fmt": "-p {} --update-config foo_mem_amt={}", "args": [ { "name": "Partition", "arg": { "FieldString": "ibm,skiboot" } }, { "name": "Amount (MB)", "arg": { "FieldInt": 0 } } ], "help": "Memory to be allocated for some feature" } ] Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com> --- discover/user-event.c | 2 ++ utils/pb-plugin | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-)