From 3b4c9a9fa744cce02f17eebe1335610c955cc569 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Mon, 2 May 2016 16:27:59 +0200 Subject: change my fish setup to use fisherman 1) remove my plugin submodules and let fisherman handle them 2) add fishfile 3) remove my prompt -> use bobthefish 4) change setup.py + targets are now lists containing tuples of file paths or functions + add fish_config functions that downloads and installs fisherman + other little cosmetic tweaks --- .gitmodules | 9 ---- config/fish/config.fish | 12 ----- config/fish/fink | 1 - config/fish/fishfile | 4 ++ config/fish/functions/fish_prompt.fish | 77 --------------------------- config/fish/mark | 1 - config/fish/wd | 1 - setup.py | 96 ++++++++++++++++++++++++++-------- 8 files changed, 77 insertions(+), 124 deletions(-) delete mode 160000 config/fish/fink create mode 100644 config/fish/fishfile delete mode 100644 config/fish/functions/fish_prompt.fish delete mode 160000 config/fish/mark delete mode 160000 config/fish/wd diff --git a/.gitmodules b/.gitmodules index 4f5a7c9..3cfea36 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,12 +16,3 @@ [submodule "vim/bundle/nerdcommenter"] path = vim/bundle/nerdcommenter url = https://github.com/scrooloose/nerdcommenter.git -[submodule "config/fish/wd"] - path = config/fish/wd - url = https://github.com/fischerling/plugin-wd -[submodule "config/fish/mark"] - path = config/fish/mark - url = https://github.com/fischerling/mark -[submodule "config/fish/fink"] - path = config/fish/fink - url = https://github.com/fischerling/fink diff --git a/config/fish/config.fish b/config/fish/config.fish index 4252aa7..736f8bd 100644 --- a/config/fish/config.fish +++ b/config/fish/config.fish @@ -6,18 +6,6 @@ set fish_completion_path $HOME/.dotfiles/config/fish/completions $fish_completio # add git-alias subdirectory to functions path set fish_function_path $HOME/.dotfiles/config/fish/functions/git-alias $fish_function_path -# include wd -set fish_function_path $HOME/.dotfiles/config/fish/wd/functions $fish_function_path -set fish_complete_path $HOME/.dotfiles/config/fish/wd/completions $fish_complete_path - -# include mark -set fish_function_path $HOME/.dotfiles/config/fish/mark/functions $fish_function_path -set fish_complete_path $HOME/.dotfiles/config/fish/mark/completions $fish_complete_path - -# include fink -set fish_function_path $HOME/.dotfiles/config/fish/fink/functions $fish_function_path -set fish_complete_path $HOME/.dotfiles/config/fish/fink/completions $fish_complete_path - # include cargo binaries if type -q multirust for p in $HOME/.multirust/toolchains/*/cargo/bin diff --git a/config/fish/fink b/config/fish/fink deleted file mode 160000 index 7746ab5..0000000 --- a/config/fish/fink +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7746ab547f266c59b24bc987cf7f24398a0ed25e diff --git a/config/fish/fishfile b/config/fish/fishfile new file mode 100644 index 0000000..69c7b70 --- /dev/null +++ b/config/fish/fishfile @@ -0,0 +1,4 @@ +fisherman/bobthefish +fischerling/fink +fischerling/mark +fischerling/plugin-wd diff --git a/config/fish/functions/fish_prompt.fish b/config/fish/functions/fish_prompt.fish deleted file mode 100644 index 0a39fe7..0000000 --- a/config/fish/functions/fish_prompt.fish +++ /dev/null @@ -1,77 +0,0 @@ -function fish_prompt --description 'Write out the prompt' - - set -l last_status $status - - # Just calculate these once, to save a few cycles when displaying the prompt - if not set -q __fish_prompt_hostname - set -g __fish_prompt_hostname (hostname|cut -d . -f 1) - end - - if not set -q __fish_prompt_normal - set -g __fish_prompt_normal (set_color normal) - end - - if not set -q -g __fish_classic_git_functions_defined - set -g __fish_classic_git_functions_defined - - function __fish_repaint_user --on-variable fish_color_user --description "Event handler, repaint when fish_color_user changes" - if status --is-interactive - set -e __fish_prompt_user - commandline -f repaint ^/dev/null - end - end - - function __fish_repaint_host --on-variable fish_color_host --description "Event handler, repaint when fish_color_host changes" - if status --is-interactive - set -e __fish_prompt_host - commandline -f repaint ^/dev/null - end - end - - function __fish_repaint_status --on-variable fish_color_status --description "Event handler; repaint when fish_color_status changes" - if status --is-interactive - set -e __fish_prompt_status - commandline -f repaint ^/dev/null - end - end - end - - set -l delim '>' - - switch $USER - - case root - - if not set -q __fish_prompt_cwd - if set -q fish_color_cwd_root - set -g __fish_prompt_cwd (set_color $fish_color_cwd_root) - else - set -g __fish_prompt_cwd (set_color $fish_color_cwd) - end - end - - case '*' - - if not set -q __fish_prompt_cwd - set -g __fish_prompt_cwd (set_color $fish_color_cwd) - end - - end - - set -l prompt_status - if test $last_status -ne 0 - if not set -q __fish_prompt_status - set -g __fish_prompt_status (set_color $fish_color_status) - end - set prompt_status "$__fish_prompt_status [$last_status]$__fish_prompt_normal" - end - - if not set -q __fish_prompt_user - set -g __fish_prompt_user (set_color $fish_color_user) - end - if not set -q __fish_prompt_host - set -g __fish_prompt_host (set_color $fish_color_host) - end - - echo -n -s "$__fish_prompt_user" "$USER" "$__fish_prompt_normal" @ "$__fish_prompt_host" "$__fish_prompt_hostname" "$__fish_prompt_normal" ' ' "$__fish_prompt_cwd" (prompt_pwd) (__fish_git_prompt) "$__fish_prompt_normal" "$prompt_status" "$delim" ' ' -end diff --git a/config/fish/mark b/config/fish/mark deleted file mode 160000 index 552edcc..0000000 --- a/config/fish/mark +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 552edcc7f97b8eddbd6a97481b4d04f0704748ce diff --git a/config/fish/wd b/config/fish/wd deleted file mode 160000 index e9788d4..0000000 --- a/config/fish/wd +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e9788d4c5deae7567338c810c6d3ba130faa9a66 diff --git a/setup.py b/setup.py index 6096624..bfc6196 100644 --- a/setup.py +++ b/setup.py @@ -5,36 +5,86 @@ import sys home_dir = os.getenv("HOME") -targets = {"vimrc": ("vimrc", home_dir + "/.vimrc"), - "vim.d": ("vim", home_dir + "/.vim"), - "ssh-config": ("ssh/config", home_dir + "/.ssh/config"), - "xinitrc": ("xinitrc", home_dir + "/.xinitrc"), - "Xresources": ("Xresources", home_dir + "/.Xresources"), - "muttrc": ("muttrc", home_dir + "/.muttrc"), - "zshrc": ("zshrc", home_dir + "/zshrc"), - "i3-config": ("i3", home_dir + "/.i3"), - "dir_colors": ("dir_colors", home_dir + "/.dir_colors"), - "fish-config": ("config/fish/config.fish", home_dir + "/.config/fish/config.fish"), - "terminator-config": ("config/terminator/config", home_dir + "/.config/terminator/config")} - -git_submodules_for = ["vim.d", "fish-config"] +def fish_config(quiet): + """install and run fisherman""" + # download fisherman + import urllib.request + import subprocess + + if not quiet: + print("Installing fisherman, see: https://github.com/fisherman/fisherman") + with urllib.request.urlopen("https://git.io/fisherman") as f: + fisher = f.read().decode("utf-8") + + dir_path = home_dir+"/.config/fish/functions/" + # install fisherman at $fish_config/functions/ + if not os.path.exists(dir_path): + os.mkdir(dir_path) + else: + if not os.path.exists(dir_path+"fisher.fish"): + file = open(dir_path+"fisher.fish", 'w') + file.write(fisher) + else: + if not quiet: + print("fisherman all ready installed") + return + + if not quiet: + print("Installed fisherman -> execute fisher to pull plugins") + + subprocess.run(["fish", dir_path+"fisher.fish"]) + +# targets are a list of tuples and/or functions + +targets = {"vimrc": [("vimrc", home_dir + "/.vimrc")], + "vim.d": [("vim", home_dir + "/.vim")], + "ssh-config": [("ssh/config", home_dir + "/.ssh/config")], + "xinitrc": [("xinitrc", home_dir + "/.xinitrc")], + "Xresources": [("Xresources", home_dir + "/.Xresources")], + "muttrc": [("muttrc", home_dir + "/.muttrc")], + "zshrc": [("zshrc", home_dir + "/zshrc")], + "i3-config": [("i3", home_dir + "/.i3")], + "dir_colors": [("dir_colors", home_dir + "/.dir_colors")], + "fish-config": [("config/fish/config.fish", home_dir + "/.config/fish/config.fish"), + ("config/fish/fishfile", home_dir + "/.config/fish/fishfile"), fish_config], + "terminator-config": [("config/terminator/config", home_dir + "/.config/terminator/config")]} + +git_submodules_for = ["vim.d"] def install_target(target, quiet): """Install a target""" - target_files = targets[target] if not quiet: - print("Installing", target, "to", target_files[1]) - if os.path.exists(target_files[0]): - try: - os.symlink(target_files[0], target_files[1]) - except FileExistsError as e: - print(e) - else: - print("Can't find", target_files[0]+". Please make sure you are in the right directory.") + print("Installing", target, "...") + + for instruction in targets[target]: + if isinstance(instruction, tuple): + if not quiet: + print("Installing", instruction[0], "to", instruction[1]) + if os.path.exists(instruction[0]): + try: + os.symlink(instruction[0], instruction[1]) + except FileExistsError as e: + print(e, file=sys.stderr) + else: + print("Can't find", instruction[0] + + ". Please make sure you are in the right directory.", file=sys.stderr) + elif callable(instruction): + if not quiet: + print("Running function", instruction) + res = instruction(quiet) + if res: + if not quiet: + print("The instruction", instruction, "of", target, "failed with", str(res) + ".") + print("This can leaf your installation in a broken state") + print("ABORTING to prevent failures.") + exit(res) + else: + print("I don't understand", instruction, + "\nThe instruction musst be a tuple or a function.\nSKIPPING IT") if target in git_submodules_for: - choice = input(target + "uses git submodules want to pull them ? (Y/n)") + choice = input(target + " uses git submodules want to pull them ? (Y/n) ") if choice in ["Y", "y", ""]: import subprocess subprocess.run(["git", "submodule", "update", "--init"]) -- cgit v1.2.3