blob: 84c581200adae2f250b1a0684b87d5c80b911fc9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
VPATH = $(PATH)
ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
ZSH_COMP_DIR := $(HOME)/.local/share/zsh/site-functions
BASH_COMP_DIR := $(HOME)/.local/share/bash-completion/completions
ARCH := $(shell uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/ | sed s/armv7l/armv6/)
.PHONY: interactive stow_all unstow clean gpg wsl
# TODO https://github.com/andrewsardone/dotfiles/blob/master/Makefile
stow: # Install configuration files
stow alacritty
stow bash
stow bat
stow git
stow gnupg
stow lazygit
stow nvim
stow scripts
stow sheldon
stow ssh
stow starship
stow sway
stow tmux
stow zsh
if [ -n "$$WSL_DISTRO_NAME" ]; then stow wsl --override=/*; fi
unstow: # Uninstall configuration files
stow --delete */
clean: # Remove all broken symbolic links from $HOME (recursivly)
find $(HOME) -type l -exec sh -c 'for x; do [ -e "$$x" ] || rm -v "$$x"; done' _ {} +
wsl: stow # Run WSL install script
./wsl/.local/bin/wsl-installer.sh
gpg: # Install GPG keys
gpg --auto-key-locate keyserver --locate-keys tobyv13@gmail.com
gpg --import-ownertrust $(HOME)/.gnupg/trustfile.txt
$(ZSH_COMP_DIR):
mkdir -p $(ZSH_COMP_DIR)
$(BASH_COMP_DIR):
mkdir -p $(BASH_COMP_DIR)
interactive: fzf rg # Interactive target runner
@rg '^(\w+):(?:.*#\s*(.*)|.*)$$' 'makefile' --color always --line-number --no-heading -H --smart-case -r '$$1:$$2' \
| fzf -0 -1 --ansi --tac --multi -d':' --with-nth 3 --header="Select target(s)" \
--color "hl:-1:underline,hl+:-1:underline:reverse" \
--preview 'echo; echo {3} "-" {4}; echo; bat --style=auto --color=always {..1} --highlight-line {2}' \
--preview-window '80%,border-bottom,+{2}+3/3,~3'
cargo rust: $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # Install rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
rustup completions bash >$(BASH_COMP_DIR)/rustup
rustup completions zsh >$(ZSH_COMP_DIR)/_rustup
rustup completions bash cargo >$(BASH_COMP_DIR)/cargo
rustup completions zsh cargo >$(ZSH_COMP_DIR)/_cargo
cargo-quickinstall: cargo # Attempts to install prebuilt binaries, using cargo install as a fallback
cargo install cargo-quickinstall
starship: cargo-quickinstall $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # Cross shell prompt, written in rust
cargo quickinstall starship
starship completions bash >$(BASH_COMP_DIR)/starship
starship completions zsh >$(ZSH_COMP_DIR)/_starship
sheldon: cargo-quickinstall $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # Cross shell prompt, written in rust
cargo quickinstall sheldon
sheldon completions --shell bash >$(BASH_COMP_DIR)/sheldon
sheldon completions --shell zsh >$(ZSH_COMP_DIR)/_sheldon
bat: cargo-quickinstall $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # Better cat, written in rust
cargo quickinstall bat --target $(arch())-unknown-$(os())-mus
curl -sL https://raw.githubusercontent.com/sharkdp/bat/master/assets/completions/bat.bash.in >$(BASH_COMP_DIR)/bat
curl -sL https://raw.githubusercontent.com/sharkdp/bat/master/assets/completions/bat.zsh.in >$(ZSH_COMP_DIR)/_bat
fd: cargo-quickinstall $(ZSH_COMP_DIR) # Better cat, written in rust
cargo quickinstall fd-find
curl -sL https://raw.githubusercontent.com/sharkdp/fd/master/contrib/completion/_fd >$(ZSH_COMP_DIR)/_fd
rg: cargo-quickinstall $(ZSH_COMP_DIR) # Better grep, written in rust
cargo quickinstall ripgrep
curl -sL https://raw.githubusercontent.com/BurntSushi/ripgrep/master/complete/_rg >$(ZSH_COMP_DIR)/_rg
chtsh: $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # CLI for https://cht.sh
curl https://cht.sh/:cht.sh >$(HOME)/.local/bin/cht.sh
chmod +x $(HOME)/.local/bin/cht.sh
curl https://cht.sh/:bash_completion >$(BASH_COMP_DIR)/cht
curl https://cheat.sh/:zsh >$(ZSH_COMP_DIR)/_cht
git-open: # Open git remotes in the browser
curl -sL "https://raw.githubusercontent.com/paulirish/git-open/master/git-open" >$(HOME)/.local/bin/git-open &&
chmod +x $(HOME)/.local/bin/git-open
gh: $(ZSH_COMP_DIR) $(BASH_COMP_DIR) # CLI for github API
$(eval TEMP := $(shell mktemp -d))
$(eval TAG := $(shell curl -sI https://github.com/cli/cli/releases/latest | grep -Po 'tag\/v?\K(\S+)'))
curl -sL https://github.com/cli/cli/releases/latest/download/gh_$(TAG)_linux_$(ARCH).tar.gz | tar -C $(TEMP) -xz
test -x $(TEMP)/gh_$(TAG)_linux_$(ARCH)/bin/gh
install -Dm 755 $(TEMP)/gh_$(TAG)_linux_$(ARCH)/bin/gh $(HOME)/.local/bin/gh
rm -rf $(TEMP)
gh completion --shell bash >$(BASH_COMP_DIR)/gh
gh completion --shell zsh >$(ZSH_COMP_DIR)/_gh
fzf: # Fuzzy finder, written in go
$(eval TEMP := $(shell mktemp -d))
$(eval TAG := $(shell curl -sI https://github.com/junegunn/fzf/releases/latest | grep -Po 'tag\/v?\K(\S+)'))
curl -sL https://github.com/junegunn/fzf/releases/latest/download/fzf-${TAG}-linux_$(ARCH).tar.gz | tar -C $(TEMP) -xz
test -x $(TEMP)/fzf
rm -f $(HOME)/.local/bin/fzf
install -Dm 755 $(TEMP)/fzf $(HOME)/.local/bin/fzf
rm -rf $(TEMP)
|