install.sh: autodep, improve note (#22)

* install.sh: --auto

* ci: test --auto

* ci: remove dep when test --auto

* debug

* ok. improve the install notes
This commit is contained in:
Dict Xiong 2022-11-08 22:58:17 +08:00 committed by GitHub
parent 5b00add073
commit 6dce3cfa18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 83 additions and 12 deletions

View File

@ -9,8 +9,8 @@ jobs:
steps:
- name: install dependencies
run: |
sudo apt update
sudo apt install -y git python3 python3-pip zsh curl inetutils-ping
sudo apt-get update
sudo apt-get install -y git python3 python3-pip zsh curl inetutils-ping
sudo pip3 install requests
- name: checkout repo
@ -22,8 +22,8 @@ jobs:
run: |
rev=`git rev-parse HEAD`
pwd
export DFS_NO_COMPILE=1 DFS_DEV=1
./install.sh
export DFS_NO_COMPILE=1
./install.sh -d
test `git rev-parse HEAD` = "$rev"
- name: antigen build
@ -70,8 +70,8 @@ jobs:
run: |
rev=`git rev-parse HEAD`
pwd
export DFS_NO_COMPILE=1 DFS_DEV=1
./install.sh
export DFS_NO_COMPILE=1
./install.sh -d
test `git rev-parse HEAD` = "$rev"
- name: antigen build
@ -97,4 +97,32 @@ jobs:
- name: run tests
shell: /bin/zsh -ileo PIPE_FAIL {0}
run: source tools/test.zsh
run: source tools/test.zsh
test-autodep:
name: test of auto-install dependencies
runs-on: ubuntu-latest
steps:
- name: remove dependencies
run: |
sudo apt-get -y remove curl vim
- name: checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: install dfs
run: |
rev=`git rev-parse HEAD`
export DFS_NO_COMPILE=1
./install.sh -d -a
test `git rev-parse HEAD` = "$rev"
- name: antigen build with DFS_NO_WALL
shell: /bin/zsh -ileo PIPE_FAIL {0}
env:
DFS_NO_WALL: 1
run: |
echo $SHELL
antigen list

View File

@ -26,9 +26,47 @@ declare -a HOME_SYMLINKS_DST
HOME_SYMLINKS_SRC[0]=".ssh/authorized_keys2"
HOME_SYMLINKS_DST[0]=".ssh/authorized_keys2"
install_dependencies()
{
fmt_note "installing dependencies ..."
case $(get_os_type) in
"linux" )
case $(get_linux_dist) in
"ubuntu"|"debian" )
$SUDO apt-get update
$SUDO apt-get install -y git zsh bash tmux vim python3 python3-pip curl inetutils-ping
;;
"alpine" )
$SUDO apk update
$SUDO apk add zsh bash git tmux vim curl python3 py3-pip fzf iputils coreutils
;;
* ) fmt_error "dfs auto-install is not implemented on linux distribution: $(get_linux_dist)"
esac
;;
"macos" )
$SUDO brew update
$SUDO brew install git python3 zsh curl tmux vim
;;
"msys" )
pacman -Syu
pacman -S tmux git zsh bash curl vim python3 python3-pip
SUDO=""
;;
* ) fmt_error "dfs auto-install is not implemented on OS: $(get_os_type)"
esac
if [[ -x $(command -v pip3) ]]; then
$SUDO pip3 install requests
elif [[ -x $(command -v pip) ]]; then
$SUDO pip install requests
else
fmt_error "pip3 and pip not found. is pip correctly installed?"
fi
}
preinstall_check()
{
fmt_note "checking requirements ..."
mandatory_commands=( "git" "zsh" "curl" "ping" )
optional_commands=( "python3" "vim" "tmux" )
for i in "${mandatory_commands[@]}"; do
@ -53,10 +91,11 @@ preinstall_check()
install_file_content()
{
fmt_note "installing file content ..."
for ((i=0; i<${#HOME_FILES_PATH[@]}; i++)); do
local filename="$HOME/${HOME_FILES_PATH[$i]}"
local content=${HOME_FILES_CONTENT[$i]}
fmt_note "installing \"$content\" into \"$filename\" ..."
fmt_info "installing \"$content\" into \"$filename\" ..."
mkdir -p $(dirname "$filename")
if [ ! -f "$filename" ]; then
touch $filename
@ -67,10 +106,11 @@ install_file_content()
uninstall_file_content()
{
fmt_note "uninstalling file content ..."
for ((i=0; i<${#HOME_FILES_PATH[@]}; i++)); do
local filename="$HOME/${HOME_FILES_PATH[$i]}"
local content=${HOME_FILES_CONTENT[$i]}
fmt_note "removing \"$content\" from \"$filename\" ..."
fmt_info "removing \"$content\" from \"$filename\" ..."
if [ -f "$filename" ]; then
grep -vxF -- "$content" "$filename" | tee "$filename"
fi
@ -79,10 +119,11 @@ uninstall_file_content()
install_symlink()
{
fmt_note "installing symlinks ..."
for ((i=0; i<${#HOME_SYMLINKS_SRC[@]}; i++)); do
local src="$DOTFILES/${HOME_SYMLINKS_SRC[$i]}"
local dst="$HOME/${HOME_SYMLINKS_DST[$i]}"
fmt_note "creating symlink \"$dst\" --> \"$src\" ..."
fmt_info "creating symlink \"$dst\" --> \"$src\" ..."
if [ ! -f "$src" ]; then
fmt_error "\"$src\" does not exist! aborting this job ..."
continue
@ -110,13 +151,14 @@ install_symlink()
uninstall_symlink()
{
fmt_note "uninstalling symlinks ..."
local src
for src in "${!HOME_SYMLINKS[@]}"; do
local dst=${HOME_SYMLINKS[$src]}
src="$DOTFILES/$src"
dst="$HOME/$dst"
if [ "$(readlink $dst)" -ef "$src" ]; then
fmt_note "removing symlink \"$dst\" ..."
fmt_info "removing symlink \"$dst\" ..."
echo ----------
stat $dst
echo ----------
@ -214,6 +256,7 @@ while [[ $# > 0 ]]; do
-r ) BIN=uninstall ;;
-q ) export DFS_QUIET=1 ;;
-d ) export DFS_DEV=1 ;;
-a|--auto ) install_dependencies ;;
* ) fmt_warning "unknown command \"$1\". available: -i, -r, -q, -d"; exit 1 ;;
esac
shift

View File

@ -14,7 +14,7 @@ apk_add()
apk update
# mass installation
apk add zsh git tmux vim curl wget bash python3 htop gcc g++ cmake make fzf perl linux-headers bind-tools iputils man-db coreutils
apk add zsh git tmux vim curl wget bash python3 py3-pip htop gcc g++ cmake make fzf perl linux-headers bind-tools iputils man-db coreutils
#for i in {fzf,ripgrep}; do apk add $i -y; done
}