diff options
author | Mattias Andrée <maandree@kth.se> | 2024-05-06 09:53:43 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2024-05-06 09:53:43 +0200 |
commit | 16c57bb791a1fc76b8b00894e29c050681809402 (patch) | |
tree | 5627d8bf0ed3767956caf89d28eabb6155ff8879 /ssh | |
parent | m (diff) | |
download | dotfiles-16c57bb791a1fc76b8b00894e29c050681809402.tar.gz dotfiles-16c57bb791a1fc76b8b00894e29c050681809402.tar.bz2 dotfiles-16c57bb791a1fc76b8b00894e29c050681809402.tar.xz |
...
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'ssh')
-rw-r--r-- | ssh/.gitignore | 2 | ||||
-rw-r--r-- | ssh/Makefile | 32 |
2 files changed, 27 insertions, 7 deletions
diff --git a/ssh/.gitignore b/ssh/.gitignore index 9942bb7..b5f26f6 100644 --- a/ssh/.gitignore +++ b/ssh/.gitignore @@ -1 +1,3 @@ .ssh-config +.*.cache +.*.prev diff --git a/ssh/Makefile b/ssh/Makefile index b16f051..e7bf102 100644 --- a/ssh/Makefile +++ b/ssh/Makefile @@ -1,29 +1,47 @@ .POSIX: +DYNAMIC_ADDRESSES != \ + for f in ../.secrets/ssh/hostfetch/* ../.work/ssh/hostfetch/* hostfetch/*; do \ + test ! -x "$$f" || printf '%s\n' "$$f"; \ + done | sort -u | sed 's|^.*/\([^/]*[^/~]\)$$|\1|' + install: -rm -f -- .ssh-config test ! -e .ssh-config && test ! -L .ssh-config printf '# %s\n' 'THIS FILE IS GENERATED from ~/.dotfiles/ssh/Makefile' \ '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' > .ssh-config - printf '\n\n' >> .ssh-config + chmod -- 600 .ssh-config if test -f config; then \ - cat config >> .ssh-config; \ + ../cat-with-head -- config >> .ssh-config; \ fi set config.d/* && if test -f "$$1"; then \ - ../cat-nonbackups -- "$$@" >> .ssh-config; \ + ../cat-nonbackups-with-head -- "$$@" >> .ssh-config; \ fi if test -f ../.secrets/ssh/config; then \ - cat ../.secrets/ssh/config >> .ssh-config; \ + ../cat-with-head -- ../.secrets/ssh/config >> .ssh-config; \ fi set ../.secrets/ssh/config.d/* && if test -f "$$1"; then \ - ../cat-nonbackups "$$@" >> .ssh-config; \ + ../cat-nonbackups-with-head -- "$$@" >> .ssh-config; \ fi if test -f ../.work/ssh/config; then \ - cat ../.work/ssh/config >> .ssh-config; \ + ../cat-with-head -- ../.work/ssh/config >> .ssh-config; \ fi set ../.work/ssh/config.d/* && if test -f "$$1"; then \ - ../cat-nonbackups "$$@" >> .ssh-config; \ + ../cat-nonbackups-with-head -- "$$@" >> .ssh-config; \ fi + set -e; \ + for name in $(DYNAMIC_ADDRESSES); do \ + if test -x "../.secrets/ssh/hostfetch/$$name"; then \ + addr="$$("../.secrets/ssh/hostfetch/$$name")"; \ + elif test -x "../.work/ssh/hostfetch/$$name"; then \ + addr="$$("../.work/ssh/hostfetch/$$name")"; \ + else \ + addr="$$("hostfetch/$$name")"; \ + fi; \ + test -n "$$addr"; \ + sed "s/%$${name}%/$${addr}/g" -- "$$@" < .ssh-config > .ssh-config~; \ + mv -- .ssh-config~ .ssh-config; \ + done mkdir -p -- ~/.ssh test ! -e ~/.ssh/config || test -L ~/.ssh/config test ! -e ~/.ssh/config || test -f ~/.ssh/config |