From 279d90df2794844756649f2642c62296ea812d10 Mon Sep 17 00:00:00 2001 From: jay Date: Sun, 26 Feb 2023 23:48:36 +0800 Subject: [PATCH] [feat] add run scripts --- .chezmoi.toml.tmpl | 11 +- .../run_after_20_install_vim_dep.sh | 14 +++ .chezmoiscripts/run_before_10_check.sh | 24 ++++ .../run_before_20_install_dev_lang.sh.tmpl | 109 ++++++++++++++++++ .../run_once_after_10_install_zinit.sh | 6 + 5 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 .chezmoiscripts/run_after_20_install_vim_dep.sh create mode 100644 .chezmoiscripts/run_before_10_check.sh create mode 100644 .chezmoiscripts/run_before_20_install_dev_lang.sh.tmpl create mode 100644 .chezmoiscripts/run_once_after_10_install_zinit.sh diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl index 4e993fa..a98bf83 100644 --- a/.chezmoi.toml.tmpl +++ b/.chezmoi.toml.tmpl @@ -12,16 +12,19 @@ {{- $gitUser = promptString "gitUser" -}} {{- end -}} -{{- $jsLinter := promptString "jsLinter" "js linter standard,eslint" -}} +{{- $jsLinter := promptString "jsLinter" "standard" -}} {{- if eq $jsLinter "" -}} {{- $jsLinter = "standard" -}} {{- end -}} -{{- $jsFixer := promptString "jsFixer" "js fixer standard,prettier" -}} +{{- $jsFixer := promptString "jsFixer" "standard" -}} {{- if eq $jsFixer "" -}} {{- $jsFixer = "standard" -}} {{- end -}} +{{- $installGo := promptBool "installGo" true -}} +{{- $installNode := promptBool "installNode" true -}} + [data.gitconfig] email = {{ $email | quote }} username = {{ $gitUser | quote }} @@ -29,3 +32,7 @@ [data.nvim] js_linter = {{ $jsLinter | quote }} js_fixer = {{ $jsFixer | quote }} + +[data.dev] + golang = {{ $installGo }} + nodejs = {{ $installNode }} diff --git a/.chezmoiscripts/run_after_20_install_vim_dep.sh b/.chezmoiscripts/run_after_20_install_vim_dep.sh new file mode 100644 index 0000000..4bfb323 --- /dev/null +++ b/.chezmoiscripts/run_after_20_install_vim_dep.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +PATH="$HOME/apps/go/bin:$HOME/apps/node/bin:$PATH" + +if command -v npm > /dev/null; then + npm i -g typescript typescript-language-server jsctags dockerfile-language-server-nodejs +fi + +if command -v go > /dev/null; then + go install github.com/sourcegraph/go-langserver@latest + go install github.com/jstemmer/gotags@latest + go install github.com/cweill/gotests/gotests@latest +fi + diff --git a/.chezmoiscripts/run_before_10_check.sh b/.chezmoiscripts/run_before_10_check.sh new file mode 100644 index 0000000..739fe68 --- /dev/null +++ b/.chezmoiscripts/run_before_10_check.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +readonly wanted_packages=( + git + svn + zsh + nvim + tmux + curl + wget +) + +missing_packages=() + +for package in "${wanted_packages[@]}"; do + if ! command -v "${package}" > /dev/null ; then + missing_packages+=("${package}") + fi +done + +if [[ ${#missing_packages[@]} -gt 0 ]]; then + >&2 echo "missing packages ${missing_packages[*]}" + exit 1 +fi diff --git a/.chezmoiscripts/run_before_20_install_dev_lang.sh.tmpl b/.chezmoiscripts/run_before_20_install_dev_lang.sh.tmpl new file mode 100644 index 0000000..379a251 --- /dev/null +++ b/.chezmoiscripts/run_before_20_install_dev_lang.sh.tmpl @@ -0,0 +1,109 @@ +#!/bin/bash + +set -x + +GO_VERSION="1.20.1" +NODE_VERSION="18.14.2" + +ARCH="{{ .chezmoi.arch }}" +OSTYPE="{{ .chezmoi.os }}" + +if [ ! -d "$HOME/apps" ]; then + if ! mkdir -p "$HOME/apps" ; then + >&2 echo "make directory failed" + exit 1 + fi +fi + +function install_golang { + local tmpDir=$(mktemp -d) + local url="https://go.dev/dl/go$GO_VERSION.$OSTYPE-$ARCH.tar.gz" + + # download + if ! wget -O "$tmpDir/go.tar.gz" "$url" ; then + rm -rf "$tmpDir" + >&2 echo "download golang binary failed" + return 1 + fi + + if ! tar zxf "$tmpDir/go.tar.gz" -C "$tmpDir" ;then + rm -rf "$tmpDir" + >&2 echo "untar golang binary failed" + return 1 + fi + + mv "$tmpDir/go" "$HOME/apps/go-${GO_VERSION}" + + ln -sf "$HOME/apps/go-${GO_VERSION}" "$HOME/apps/go" + + rm -rf "$tmpDir" +} + +function install_nodejs { + local tmpDir=$(mktemp -d) + + local arch="" + + case "$ARCH" in + "amd64") + arch="x64" + ;; + "arm64") + arch="arm64" + ;; + *) + >&2 echo "arch ($ARCH) not support" + return 1 + ;; + esac + + local url="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-${OSTYPE}-${arch}.tar.xz" + + if ! wget -O "$tmpDir/node.tar.xz" "$url" ; then + rm -rf "$tmpDir" + >&2 echo "download nodejs binary failed" + return 1 + fi + + if ! tar xJf "$tmpDir/node.tar.xz" -C "$tmpDir" ; then + rm -rf "$tmpDir" + >&2 echo "untar nodejs binary failed" + return 1 + fi + + dirs=$(find "$tmpDir" -type d -mindepth 1 -maxdepth 1 -name 'node*') + + mv "$dirs" "$HOME/apps/node-v${NODE_VERSION}" + + ln -sf "$HOME/apps/node-v${NODE_VERSION}" "$HOME/apps/node" + + rm -rf "$tmpDir" +} + +function install_rust { + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --profile default -y +} + +{{ if .dev.golang }} + echo "start install golang ${GO_VERSION}..." + if ! install_golang ; then + >&2 echo "install golang failed" + exit 1 + fi +{{ end }} + +{{ if .dev.nodejs }} + echo "start install nodejs v${NODE_VERSION}..." + if ! install_nodejs ; then + >&2 echo "install nodejs failed" + exit 1 + fi +{{ end }} + +{{ if .dev.rust }} + echo "start install rust..." + if ! install_rust ; then + >&2 echo "install rust failed" + exit 1 + fi +{{ end }} diff --git a/.chezmoiscripts/run_once_after_10_install_zinit.sh b/.chezmoiscripts/run_once_after_10_install_zinit.sh new file mode 100644 index 0000000..565d5aa --- /dev/null +++ b/.chezmoiscripts/run_once_after_10_install_zinit.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +if ! git clone https://github.com/zdharma-continuum/zinit.git ~/.zinit/bin; then + >&2 echo "clone zinit into ~/.zinit/bin failed" + exit 1 +fi