diff options
| author | Egor Tensin <egor@tensin.name> | 2026-06-06 18:09:43 +0200 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-06-06 20:33:56 +0200 |
| commit | 75f0f6ade837915a6ffd6c4c2859aab6ce6d720c (patch) | |
| tree | a7a5beed20ce7a08524f21a881107da9340b4ba1 /scripts/setup.sh | |
| parent | .bashrc: fix whitespace (diff) | |
| download | linux-home-75f0f6ade837915a6ffd6c4c2859aab6ce6d720c.tar.gz linux-home-75f0f6ade837915a6ffd6c4c2859aab6ce6d720c.zip | |
*.sh -> scripts/
Diffstat (limited to 'scripts/setup.sh')
| -rwxr-xr-x | scripts/setup.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/scripts/setup.sh b/scripts/setup.sh new file mode 100755 index 0000000..a7f9972 --- /dev/null +++ b/scripts/setup.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset -o pipefail +shopt -s inherit_errexit 2> /dev/null || true +shopt -s lastpipe + +script_dir="$( dirname -- "${BASH_SOURCE[0]}" )" +script_dir="$( cd -- "$script_dir" && pwd )" +readonly script_dir + +repo_dir='' + +cleanup_repo() { + if [ -n "$repo_dir" ]; then + echo "Cleaning up directory: $repo_dir" + rm -rf -- "$repo_dir" + fi +} + +config_links_in_path() { + # Make sure the links-* utils are available. + + if command -v links-update &> /dev/null; then + return 0 + fi + + # This is a common directory to clone config-links for me. + if [ -d "$script_dir/../../config-links" ]; then + export PATH="$script_dir/../../config-links/bin:$PATH" + return 0 + fi + + # If config-links is unavailable, clone it. + readonly repo_url=https://github.com/egor-tensin/config-links.git + trap cleanup_repo EXIT + repo_dir="$( mktemp -d )" + + git clone -- "$repo_url" "$repo_dir" + export PATH="$repo_dir/bin:$PATH" +} + +links_update() { + cd -- "$script_dir/.." + links-update + + # Some utilities (for example, ssh) fix too relaxed file permissions + # automatically. Others (GHCi is the reason this exists) just spit out a + # warning and ignore such files. This script simply removes the write + # permission for everybody except myself for every file in this repository. + links-chmod go-w +} + +post_update() { + # Update the vim plugins: + "$script_dir/vim_plugins.sh" + + # Remove ~/.ssh/known_hosts, I don't use it (and have a corresponding + # setting in ~/.ssh/config): + rm -f -- "$HOME/.ssh/known_hosts" +} + +main() { + config_links_in_path + links_update + post_update +} + +main |
