From 5f33aa611955aa7427c4aa939286d8fb2d52ad4f Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 14:52:20 +1000 Subject: [PATCH 01/10] Added dependencies file and script --- deps/install | 33 +++++++++++++++++++++++++++++++++ deps/list | 12 ++++++++++++ install.sh | 30 +++--------------------------- 3 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 deps/install create mode 100644 deps/list diff --git a/deps/install b/deps/install new file mode 100644 index 0000000..6d322a9 --- /dev/null +++ b/deps/install @@ -0,0 +1,33 @@ +#!/bin/bash + +function install { + success=() + errors=() + for program in "$@" + do + if ! [ -x "$(command -v $program)" ]; then + [ -x "$(command -v pacman)" ] && sudo pacman --noconfirm -S $program + [ -x "$(command -v apt)" ] && sudo apt install -y $program + [ -x "$(command -v yum)" ] && sudo yum install -y $program + [ -x "$(command -v brew)" ] && brew install $program + errors+=($program) + else + success+=($program) + fi + done + + for program in ${success[@]}; do + echo -e "The $program is installed." + done + + for program in ${errors[@]}; do + echo -e "\033[31mError: $program is not installed. \033[0m" + done + + if [ ${#errors[@]} -gt 0 ]; then + exit 1 + fi +} + +install $(cat deps/list) + diff --git a/deps/list b/deps/list new file mode 100644 index 0000000..7547c80 --- /dev/null +++ b/deps/list @@ -0,0 +1,12 @@ +autojump +curl +fzf +gawk +git +jq +npm +ripgrep +taskwarrior +tmux +vim +zsh diff --git a/install.sh b/install.sh index b118f07..6165393 100644 --- a/install.sh +++ b/install.sh @@ -1,18 +1,8 @@ #!/bin/bash -cd $HOME -function install { - for program in "$@" - do - if ! [ -x "$(command -v $program)" ]; then - echo "Error: $program is not installed." - [ -x "$(command -v pacman)" ] && sudo pacman --noconfirm -S $program - [ -x "$(command -v apt)" ] && sudo apt install -y $program - [ -x "$(command -v yum)" ] && sudo yum install -y $program - [ -x "$(command -v brew)" ] && brew install $program - fi - done -} +bash deps/install + +cd $HOME function createLink { rm -rf $2 @@ -27,20 +17,6 @@ function createLink { esac } -install \ - autojump \ - curl \ - fzf \ - gawk \ - git \ - jq \ - npm \ - ripgrep \ - taskwarrior \ - tmux \ - vim \ - zsh - curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim From 0d66ad8ffd1c569d2b20c1d09773bff873395bf8 Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 15:18:08 +1000 Subject: [PATCH 02/10] Update package manager --- deps/install | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deps/install b/deps/install index 6d322a9..f1a2092 100644 --- a/deps/install +++ b/deps/install @@ -1,5 +1,11 @@ #!/bin/bash +function update { + [ -x "$(command -v apt)" ] && sudo apt update + [ -x "$(command -v yum)" ] && sudo yum update + [ -x "$(command -v brew)" ] && brew update +} + function install { success=() errors=() @@ -29,5 +35,7 @@ function install { fi } +update + install $(cat deps/list) From e2ae7a2e01de67e9d6c364f193ae404efac43326 Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 15:18:22 +1000 Subject: [PATCH 03/10] Add stow --- deps/list | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/list b/deps/list index 7547c80..b703da1 100644 --- a/deps/list +++ b/deps/list @@ -10,3 +10,4 @@ taskwarrior tmux vim zsh +stow From 192cf97a791b9f19e929ec554328b1f0b7c4f75d Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 20:04:26 +1000 Subject: [PATCH 04/10] Create update step and dockerfile to test it. --- Dockerfile | 13 ++++++++++++ deps/install | 58 +++++++++++++++++++++++++--------------------------- 2 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6eba562 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +ARG base_image + +FROM ${base_image} as base +RUN \ + apt-get update && \ + apt-get -y install sudo && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY . . + +FROM base +RUN bash deps/install || true # Ignore if it fails. diff --git a/deps/install b/deps/install index f1a2092..ad917e9 100644 --- a/deps/install +++ b/deps/install @@ -1,41 +1,39 @@ #!/bin/bash function update { - [ -x "$(command -v apt)" ] && sudo apt update - [ -x "$(command -v yum)" ] && sudo yum update - [ -x "$(command -v brew)" ] && brew update + [ -x "$(command -v apt)" ] && sudo apt update + [ -x "$(command -v yum)" ] && sudo yum update + [ -x "$(command -v brew)" ] && brew update } function install { - success=() - errors=() - for program in "$@" - do - if ! [ -x "$(command -v $program)" ]; then - [ -x "$(command -v pacman)" ] && sudo pacman --noconfirm -S $program - [ -x "$(command -v apt)" ] && sudo apt install -y $program - [ -x "$(command -v yum)" ] && sudo yum install -y $program - [ -x "$(command -v brew)" ] && brew install $program - errors+=($program) - else - success+=($program) - fi - done - - for program in ${success[@]}; do - echo -e "The $program is installed." - done - - for program in ${errors[@]}; do - echo -e "\033[31mError: $program is not installed. \033[0m" - done - - if [ ${#errors[@]} -gt 0 ]; then - exit 1 - fi + success=() + errors=() + for program in "$@"; do + if ! [ -x "$(command -v $program)" ]; then + [ -x "$(command -v pacman)" ] && sudo pacman --noconfirm -S $program + [ -x "$(command -v apt)" ] && sudo apt install -y $program + [ -x "$(command -v yum)" ] && sudo yum install -y $program + [ -x "$(command -v brew)" ] && brew install $program + errors+=($program) + else + success+=($program) + fi + done + + for program in ${success[@]}; do + echo -e "The $program is installed." + done + + for program in ${errors[@]}; do + echo -e "\033[31mError: $program is not installed. \033[0m" + done + + if [ ${#errors[@]} -gt 0 ]; then + exit 1 + fi } update install $(cat deps/list) - From 48493dd8233e7550862480ed6069715229646820 Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 20:05:09 +1000 Subject: [PATCH 05/10] Create compose and script to test the deps --- docker-compose.yaml | 9 +++++++++ tests/os-dependencies.bash | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 docker-compose.yaml create mode 100644 tests/os-dependencies.bash diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..9240952 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,9 @@ +version: '3.6' + +services: + os-deps-test: + build: + context: . + args: + base_image: ubuntu:latest + entrypoint: bash ./tests/os-dependencies.bash diff --git a/tests/os-dependencies.bash b/tests/os-dependencies.bash new file mode 100644 index 0000000..7ebe1e1 --- /dev/null +++ b/tests/os-dependencies.bash @@ -0,0 +1,8 @@ +#!/bin/bash +while read command; do + if ! command -v "$command" >/dev/null 2>&1; then + result=127 + echo "$command not found" + fi +done <./deps/list +exit $result From 6d679f9c3d8c4c5db21eb6c0c1f64046ad8833b8 Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 20:05:26 +1000 Subject: [PATCH 06/10] Create github workflows to execute tests. --- .github/workflows/test.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..f70ed29 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: Integration Test dotfile + +on: + push: + branches: '*' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Cache Docker image layers + uses: actions/cache@v2 + with: + path: /var/lib/docker + key: ${{ runner.os }}-docker-${{ hashFiles('**/Dockerfile') }} + + - name: Build Docker and Execute Tests + run: docker compose up --build From 14a3020fa5cc995b73db7384f7c922d9314cb76a Mon Sep 17 00:00:00 2001 From: othondev Date: Sat, 6 May 2023 20:38:07 +1000 Subject: [PATCH 07/10] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f70ed29..04e8b40 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: Integration Test dotfile on: push: - branches: '*' + branches: '**/**' jobs: build: From f1a7823b0ab794d235221c76a73720c33e9e5165 Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 22:03:51 +1000 Subject: [PATCH 08/10] Changed test job --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 04e8b40..9ea7684 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ on: branches: '**/**' jobs: - build: + test: runs-on: ubuntu-latest steps: From 835bd08468b61218ee41587f3fb3561cdd3d2afe Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sat, 6 May 2023 22:16:33 +1000 Subject: [PATCH 09/10] Change to transfer the output code to shell. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9ea7684..b2ab1ff 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,4 +19,4 @@ jobs: key: ${{ runner.os }}-docker-${{ hashFiles('**/Dockerfile') }} - name: Build Docker and Execute Tests - run: docker compose up --build + run: docker compose up --exit-code-from os-deps-test --build From 22055849e6fed4fa793a88c3151e813f12f5b0fb Mon Sep 17 00:00:00 2001 From: Othon Ferreira Date: Sun, 7 May 2023 13:33:00 +1000 Subject: [PATCH 10/10] Fix script to check package installed --- tests/os-dependencies.bash | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/os-dependencies.bash b/tests/os-dependencies.bash index 7ebe1e1..812bdbe 100644 --- a/tests/os-dependencies.bash +++ b/tests/os-dependencies.bash @@ -1,8 +1,8 @@ #!/bin/bash -while read command; do - if ! command -v "$command" >/dev/null 2>&1; then - result=127 - echo "$command not found" +while read package; do + if ! dpkg -s "$package" >/dev/null 2>&1; then + result=1 + echo "'$package' package not found" fi done <./deps/list exit $result