From dfde198884dcb101d78b06e66888a4e0b5d10434 Mon Sep 17 00:00:00 2001 From: Eugene <fabasoad@gmail.com> Date: Wed, 18 Sep 2024 07:47:23 +0900 Subject: [PATCH] Bump gitleaks/gitleaks from 8.18.4 to 8.19.2 (#9) <!-- markdownlint-disable-file MD041 --> ## Pull request checklist Please check if your PR fulfills the following requirements: - [ ] I have read the [CONTRIBUTING](https://github.com/fabasoad/setup-mark-action/blob/main/CONTRIBUTING.md) doc. - [ ] Tests for the changes have been added (for bug fixes / features). - [ ] Docs have been reviewed and added / updated if needed (for bug fixes / features). ## Pull request type <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type, submit multiple pull requests if needed. --> Please check the type of change your PR introduces: - [ ] Bugfix - [ ] Feature - [ ] Code style update (formatting, renaming) - [ ] Refactoring (no functional changes, no api changes) - [ ] Build related changes - [ ] Documentation content changes - [ ] Other (please describe): ## What is the current behavior <!-- Please describe the current behavior that you are modifying, or link to a relevant issue. --> ## What is the new behavior <!-- Please describe the behavior or changes that are being added by this PR. --> - - - ## Does this introduce a breaking change - [ ] Yes - [ ] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> <!-- This document was adapted from the open-source [appium/appium](https://github.com/appium/appium/blob/master/.github/PULL_REQUEST_TEMPLATE.md) repository. --> --- Closes #{IssueNumber} --- .github/workflows/functional-tests.yml | 2 +- .pre-commit-config.yaml | 20 ++++-- action.yml | 6 ++ src/install-mark.sh | 91 ++++++++++++++------------ src/validate-inputs.sh | 27 ++++++++ 5 files changed, 96 insertions(+), 50 deletions(-) create mode 100755 src/validate-inputs.sh diff --git a/.github/workflows/functional-tests.yml b/.github/workflows/functional-tests.yml index 43db3b5..e656d83 100644 --- a/.github/workflows/functional-tests.yml +++ b/.github/workflows/functional-tests.yml @@ -23,7 +23,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu", "macos"] - version: ["latest", "10.0.1", "10.0.0", "9.13.0", "9.12.0", "9.11.1"] + version: ["latest", "11.0.1", "11.0.0", "10.0.1", "10.0.0", "9.13.0"] runs-on: ${{ matrix.os }}-latest steps: - name: Checkout ${{ github.repository }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b236b6e..1897db2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,6 +3,18 @@ default_install_hook_types: ["pre-commit", "pre-push"] default_stages: ["commit"] minimum_pre_commit_version: 2.18.0 repos: + # Linting + - repo: local + hooks: + - id: prettier + name: Prettier + entry: prettier --write --ignore-unknown + language: node + types: [text] + args: [] + # https://github.com/prettier/prettier/releases + additional_dependencies: ["prettier@3.3.3"] + stages: ["commit"] # Security - repo: https://github.com/Yelp/detect-secrets rev: v1.5.0 @@ -10,12 +22,12 @@ repos: - id: detect-secrets stages: ["commit", "push"] - repo: https://github.com/gitleaks/gitleaks - rev: v8.18.4 + rev: v8.19.2 hooks: - id: gitleaks stages: ["commit", "push"] - repo: https://github.com/fabasoad/pre-commit-grype - rev: v0.6.0 + rev: v0.6.1 hooks: - id: grype-dir args: @@ -48,10 +60,6 @@ repos: args: ["-pyflakes="] stages: ["commit"] # Other - - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.1.0 - hooks: - - id: prettier - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: diff --git a/action.yml b/action.yml index 3c51ef3..7493960 100644 --- a/action.yml +++ b/action.yml @@ -13,6 +13,12 @@ inputs: runs: using: "composite" steps: + - name: Validate inputs + env: + INPUT_VERSION: "${{ inputs.version }}" + run: ./validate-inputs.sh "${INPUT_VERSION}" + shell: sh + working-directory: ${{ github.action_path }}/src - name: Install kovetskiy/mark env: INPUT_VERSION: "${{ inputs.version }}" diff --git a/src/install-mark.sh b/src/install-mark.sh index e8fa0cc..65e8610 100755 --- a/src/install-mark.sh +++ b/src/install-mark.sh @@ -1,52 +1,57 @@ #!/usr/bin/env sh -mark_version="$1" +main() { + mark_version="${1}" -# shellcheck disable=SC2039 -if command -v mark >/dev/null 2>&1; then - msg="$(mark --version) is already installed. Skipping installation." - printf "[setup-mark-action] %s level=info %s\n" "$(date +'%Y-%m-%d %T')" "${msg}" - exit 0 -fi - -if [ "${mark_version}" = "latest" ]; then - url_prefix="https://github.com/kovetskiy/mark/releases/latest/download" -else - url_prefix="https://github.com/kovetskiy/mark/releases/download/${mark_version}" -fi - -url="" -if [ "${RUNNER_OS}" = "macOS" ]; then - if [ "${RUNNER_ARCH}" = "X64" ]; then - url="${url_prefix}/mark_Darwin_x86_64.tar.gz" - elif [ "${RUNNER_ARCH}" = "ARM64" ]; then - url="${url_prefix}/mark_Darwin_arm64.tar.gz" + # shellcheck disable=SC2039 + if command -v mark >/dev/null 2>&1; then + msg="$(mark --version) is already installed. Skipping installation." + printf "[setup-mark-action] %s level=info %s\n" "$(date +'%Y-%m-%d %T')" "${msg}" + exit 0 fi -elif [ "${RUNNER_OS}" = "Linux" ]; then - if [ "${RUNNER_ARCH}" = "X64" ]; then - url="${url_prefix}/mark_Linux_x86_64.tar.gz" - elif [ "${RUNNER_ARCH}" = "ARM64" ]; then - url="${url_prefix}/mark_Linux_arm64.tar.gz" + + url_prefix="https://github.com/kovetskiy/mark/releases" + if [ "${mark_version}" = "latest" ]; then + url_prefix="${url_prefix}/latest/download" + else + url_prefix="${url_prefix}/download/${mark_version}" fi -fi -if [ -z "${url}" ]; then - echo "::error title=OS is not supported::${RUNNER_OS} ${RUNNER_ARCH} is not supported" - exit 1 -fi + url="" + if [ "${RUNNER_OS}" = "macOS" ]; then + if [ "${RUNNER_ARCH}" = "X64" ]; then + url="${url_prefix}/mark_Darwin_x86_64.tar.gz" + elif [ "${RUNNER_ARCH}" = "ARM64" ]; then + url="${url_prefix}/mark_Darwin_arm64.tar.gz" + fi + elif [ "${RUNNER_OS}" = "Linux" ]; then + if [ "${RUNNER_ARCH}" = "X64" ]; then + url="${url_prefix}/mark_Linux_x86_64.tar.gz" + elif [ "${RUNNER_ARCH}" = "ARM64" ]; then + url="${url_prefix}/mark_Linux_arm64.tar.gz" + fi + fi -bin_path="${RUNNER_TEMP}/bin" -mkdir -p "${bin_path}" -tar_path="${bin_path}/mark.tar.gz" -checksums_path="${bin_path}/checksums.txt" -curl -sL "${url}" -o "${tar_path}" -curl -sL "${url_prefix}/checksums.txt" -o "${checksums_path}" + if [ -z "${url}" ]; then + echo "::error title=OS is not supported::${RUNNER_OS} ${RUNNER_ARCH} is not supported" + exit 1 + fi -if ! grep -qF "$(shasum -a 256 "${tar_path}" | cut -d ' ' -f 1)" "${checksums_path}"; then - echo "::error title=Checksum error::Checksum is different from the downloaded binary" - exit 1 -fi + bin_path="${RUNNER_TEMP}/bin" + mkdir -p "${bin_path}" + tar_path="${bin_path}/mark.tar.gz" + checksums_path="${bin_path}/checksums.txt" + curl -sL "${url}" -o "${tar_path}" + curl -sL "${url_prefix}/checksums.txt" -o "${checksums_path}" -tar -xf "${tar_path}" -C "${bin_path}" -rm -f "${tar_path}" -echo "${bin_path}" >> "$GITHUB_PATH" + if ! grep -qF "$(shasum -a 256 "${tar_path}" | cut -d ' ' -f 1)" "${checksums_path}"; then + echo "::error title=Checksum error::Checksum is different from the downloaded binary" + exit 1 + fi + + tar -xf "${tar_path}" -C "${bin_path}" + rm -f "${tar_path}" + echo "${bin_path}" >> "$GITHUB_PATH" +} + +main "$@" diff --git a/src/validate-inputs.sh b/src/validate-inputs.sh new file mode 100755 index 0000000..94edc96 --- /dev/null +++ b/src/validate-inputs.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh + +# Validates value to be a valid semver string. +# Parameters: +# 1. (Required) Param name to display it correctly in the error message for the +# users. +# 2. (Required) Param value that will be validated. +# +# Usage examples: +# check_semver "my-valid-semver-1" "1.2.3" +# check_semver "my-valid-semver-3" "latest" +# check_semver "my-invalid-semver" "1.2.3-rc1" +check_semver() { + if ! echo "${2}" | grep -Eq '^(latest|[0-9]+(\.[0-9]+){0,2})$'; then + msg="\"${1}\" parameter is invalid. \"${2}\" is not a valid semver." + echo "::error title=Invalid parameter::${msg}" + exit 30 + fi +} + +main() { + input_version="${1}" + + check_semver "version" "${input_version}" +} + +main "$@"