Fish · 1307 bytes Raw Blame History
1 # FORTRESS shell integration for Fish
2 # This file should be placed in:
3 # ~/.config/fish/functions/fortress.fish
4 # or
5 # /usr/share/fish/vendor_functions.d/fortress.fish (system-wide)
6
7 function fortress --description "Navigate filesystem with FORTRESS and cd on exit"
8 # Set fortress directory - prefer system install, fallback to FORTRESS_DIR env var
9 set -l fortress_dir
10 if set -q FORTRESS_DIR
11 set fortress_dir $FORTRESS_DIR
12 else if test -x /usr/bin/fortress-bin
13 # Use system-installed binary
14 set fortress_exe /usr/bin/fortress-bin
15 else
16 # Fallback to local development path
17 set fortress_dir $HOME/Documents/GithubOrgs/FortranGoingOnForty/fortress
18 set fortress_exe $fortress_dir/build/gfortran_*/app/fortress
19 end
20
21 # Run fortress
22 if test -n "$fortress_exe"
23 eval $fortress_exe
24 else
25 $fortress_dir/build/gfortran_*/app/fortress
26 end
27
28 # Check if fortress wants us to cd somewhere
29 if test -f $HOME/.fortress_cd
30 set -l target_dir (cat $HOME/.fortress_cd)
31 rm -f $HOME/.fortress_cd
32 if cd $target_dir 2>/dev/null
33 echo "fortress: changed directory to "(pwd)
34 else
35 echo "fortress: failed to change directory to $target_dir" >&2
36 end
37 end
38 end