diff --git a/dot_config/private_fish/functions/opx.fish b/dot_config/private_fish/functions/opx.fish new file mode 100644 index 0000000000000000000000000000000000000000..cc9239641fd09ecfa4504b414635c4e42350ba2c --- /dev/null +++ b/dot_config/private_fish/functions/opx.fish @@ -0,0 +1,21 @@ +function opx --description "Run command with 1Password secret refs resolved" + set -l env_overrides + + for var in (set --names -x) + set -l value $$var + if string match -q 'op://*' -- $value + set -l resolved (op read "$value" 2>/dev/null) + if test $status -ne 0 + echo "opx: failed to resolve $var ($value)" >&2 + return 1 + end + set -a env_overrides "$var=$resolved" + end + end + + if test (count $env_overrides) -eq 0 + $argv + else + env $env_overrides $argv + end +end