feat(fish): support fish functions in opx

Amolith created

Assisted-by: Kimi K2 Thinking via Crush

Change summary

dot_config/private_fish/functions/opx.fish | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

Detailed changes

dot_config/private_fish/functions/opx.fish 🔗

@@ -28,5 +28,26 @@ function opx --description "Run command with 1Password secret refs resolved"
         return 1
     end
 
-    env $resolved_lines $argv
+    # Check if the command is a fish function
+    if functions -q $argv[1]
+        # Parse resolved values (originals are in $refs)
+        set -l resolved_values
+        for line in $resolved_lines
+            set -a resolved_values (string split -m1 '=' $line)[2]
+        end
+        # Set globals with resolved values
+        for i in (seq (count $vars_to_resolve))
+            set -gx $vars_to_resolve[$i] $resolved_values[$i]
+        end
+        # Run command
+        $argv
+        set -l cmd_status $status
+        # Restore original op:// refs
+        for i in (seq (count $vars_to_resolve))
+            set -gx $vars_to_resolve[$i] $refs[$i]
+        end
+        return $cmd_status
+    else
+        env $resolved_lines $argv
+    end
 end