diff --git a/.development/build/Dockerfile b/.development/build/Dockerfile new file mode 100644 index 0000000..26f1810 --- /dev/null +++ b/.development/build/Dockerfile @@ -0,0 +1,18 @@ +FROM golang:1.20-alpine +RUN apk add bash git && \ + mkdir -p /opt && \ + mkdir -p /workspace && \ + addgroup -g 1000 dev && \ + adduser -D -u 1000 -G dev dev && \ + chown -R dev:dev /workspace /opt +WORKDIR /opt +USER dev + +# renovate: datasource=github-releases depName=malscent/bash_bundler +ENV bash_bundler_version="v1.0.2" +RUN go install github.com/malscent/bash_bundler@${bash_bundler_version} + +WORKDIR /workspace +COPY --chown=dev:dev ./src /workspace/src +ENTRYPOINT ["/bin/bash", "-c"] + diff --git a/.gitignore b/.gitignore index 9f11b75..6cb4d50 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .idea/ +dist/ + diff --git a/Makefile b/Makefile index 4f4639b..80a31c6 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,16 @@ lint: ## Lint files with shellcheck @find src/*.sh -type f -exec "shellcheck" "-x" {} \; generate-docs: ## Build documentation using docker container - docker build . -t bash-tui-toolkit/shdoc -f .development/docs/Dockerfile - docker run --rm bash-tui-toolkit/shdoc 'shdoc < logging.sh ' 2>&1 > docs/modules/Logging.md - docker run --rm bash-tui-toolkit/shdoc 'shdoc < prompts.sh ' 2>&1 > docs/modules/Prompts.md - docker run --rm bash-tui-toolkit/shdoc 'shdoc < user_feedback.sh ' 2>&1 > docs/modules/User-Feedback.md + @docker build . -t bash-tui-toolkit/shdoc -f .development/docs/Dockerfile + @docker run --rm bash-tui-toolkit/shdoc 'shdoc < logging.sh ' 2>&1 > docs/modules/Logging.md + @docker run --rm bash-tui-toolkit/shdoc 'shdoc < prompts.sh ' 2>&1 > docs/modules/Prompts.md + @docker run --rm bash-tui-toolkit/shdoc 'shdoc < user_feedback.sh ' 2>&1 > docs/modules/User-Feedback.md + +build: ## Bundle script to dist folder and remove all comments + @rm -rf dist || true + @mkdir dist/ + @docker build . -t bash-tui-toolkit/builder -f .development/build/Dockerfile + @docker run --rm bash-tui-toolkit/builder 'bash_bundler bundle --entry src/main.sh --output /dev/stderr' 2> dist/bundle.sh + @sed -i '/^$$/d' dist/bundle.sh + @sed -i '/^#/d' dist/bundle.sh + diff --git a/renovate.json b/renovate.json index 049f64b..f931162 100644 --- a/renovate.json +++ b/renovate.json @@ -7,7 +7,7 @@ { "fileMatch": ["Dockerfile$"], "matchStrings": [ - "datasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?\\sARG .*?_VERSION=(?.*)\\s" + "datasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?\\sARG .*?_version=(?.*)\\s" ], "versioningTemplate": "{{#if versioning}}{{{versioning}}}{{else}}semver{{/if}}" } diff --git a/src/main.sh b/src/main.sh index 6da5e93..8cd5864 100644 --- a/src/main.sh +++ b/src/main.sh @@ -1,8 +1,5 @@ #!/bin/bash -# shellcheck source=src/prompts.sh -source "${BASH_SOURCE%/*}/prompts.sh" -# shellcheck source=src/user_feedback.sh -source "${BASH_SOURCE%/*}/user_feedback.sh" -# shellcheck source=src/logging.sh -source "${BASH_SOURCE%/*}/logging.sh" +source "prompts.sh" +source "user_feedback.sh" +source "logging.sh" diff --git a/src/prompts.sh b/src/prompts.sh index ec9994f..22e7bfb 100644 --- a/src/prompts.sh +++ b/src/prompts.sh @@ -24,7 +24,7 @@ _key_input() { } # print new line for empty element in array -_new_line_foreach_item() { for _ in "${1[@]}"; do echo -en "\n" >&2; done } +_new_line_foreach_item() { for _ in $1[@]; do echo -en "\n" >&2; done } # display prompt text without linebreak _prompt_text() { @@ -108,7 +108,7 @@ list() { local opts=("${@:2}") local opts_count=$(($# -1)) - _new_line_foreach_item "${opts[@]}" + _new_line_foreach_item "${opts[*]}" # determine current screen position for overwriting the options local lastrow; lastrow=$(_get_cursor_row) @@ -158,7 +158,7 @@ checkbox() { _prompt_text "$1" local opts; opts=("${@:2}") local opts_count; opts_count=$(($# -1)) - _new_line_foreach_item "${opts[@]}" + _new_line_foreach_item "${opts[*]}" # determine current screen position for overwriting the options local lastrow; lastrow=$(_get_cursor_row) diff --git a/test.sh b/test.sh index dbd4f36..88d7cd7 100755 --- a/test.sh +++ b/test.sh @@ -2,7 +2,9 @@ # # Basic demo of features # -source src/main.sh +cd src +source main.sh +cd - # # UTILS