Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
939b270d72 | |||
9cf6fa0471 | |||
![]() |
439b544eb5 | ||
![]() |
5fd75da7db | ||
![]() |
dfde198884 | ||
![]() |
6c97b745ef | ||
![]() |
c04ad35429 |
2
.github/workflows/functional-tests.yml
vendored
2
.github/workflows/functional-tests.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: ["ubuntu", "macos"]
|
||||
version: ["latest", "9.13.0", "9.12.0", "9.11.1", "9.11.0", "9.10.1"]
|
||||
version: ["latest", "11.2.0", "11.1.0", "11.0.1", "11.0.0", "10.0.1"]
|
||||
runs-on: ${{ matrix.os }}-latest
|
||||
steps:
|
||||
- name: Checkout ${{ github.repository }}
|
||||
|
@ -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.21.0
|
||||
hooks:
|
||||
- id: gitleaks
|
||||
stages: ["commit", "push"]
|
||||
- repo: https://github.com/fabasoad/pre-commit-grype
|
||||
rev: v0.4.0
|
||||
rev: v0.6.1
|
||||
hooks:
|
||||
- id: grype-dir
|
||||
args:
|
||||
@ -24,7 +36,7 @@ repos:
|
||||
stages: ["push"]
|
||||
# Markdown
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.41.0
|
||||
rev: v0.42.0
|
||||
hooks:
|
||||
- id: markdownlint-fix
|
||||
# Shell
|
||||
@ -42,18 +54,14 @@ repos:
|
||||
stages: ["push"]
|
||||
# GitHub Actions
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.1
|
||||
rev: v1.7.3
|
||||
hooks:
|
||||
- id: actionlint
|
||||
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
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: check-executables-have-shebangs
|
||||
stages: ["commit"]
|
||||
|
@ -24,7 +24,7 @@ action:
|
||||
- uses: fabasoad/setup-mark-action@v1
|
||||
with:
|
||||
# (Optional) mark version. Defaults to "latest".
|
||||
version: "9.11.1"
|
||||
version: "11.2.0"
|
||||
```
|
||||
|
||||
## Outputs
|
||||
|
13
action.yml
13
action.yml
@ -10,12 +10,23 @@ inputs:
|
||||
description: "mark version."
|
||||
required: false
|
||||
default: "latest"
|
||||
url_prefix:
|
||||
description: "mark url."
|
||||
required: false
|
||||
default: "https://github.com/kovetskiy/mark"
|
||||
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 }}"
|
||||
run: ./install-mark.sh "${INPUT_VERSION}"
|
||||
INPUT_URL_PREFIX: "${{ inputs.url_prefix }}"
|
||||
run: ./install-mark.sh "${INPUT_VERSION}" "${INPUT_URL_PREFIX}"
|
||||
shell: sh
|
||||
working-directory: ${{ github.action_path }}/src
|
||||
|
@ -1,52 +1,58 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
mark_version="$1"
|
||||
main() {
|
||||
mark_version="${1}"
|
||||
url_prefix="${2}"
|
||||
|
||||
# shellcheck disable=SC2039
|
||||
if command -v mark >/dev/null 2>&1; then
|
||||
# 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}"
|
||||
printf "[info] [setup-mark-action] %s %s\n" "$(date +'%Y-%m-%d %T')" "${msg}"
|
||||
exit 0
|
||||
fi
|
||||
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_prefix="${url_prefix}/releases"
|
||||
if [ "${mark_version}" = "latest" ]; then
|
||||
url_prefix="${url_prefix}/latest/download"
|
||||
else
|
||||
url_prefix="${url_prefix}/download/${mark_version}"
|
||||
fi
|
||||
|
||||
url=""
|
||||
if [ "${RUNNER_OS}" = "macOS" ]; then
|
||||
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
|
||||
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
|
||||
fi
|
||||
|
||||
if [ -z "${url}" ]; then
|
||||
if [ -z "${url}" ]; then
|
||||
echo "::error title=OS is not supported::${RUNNER_OS} ${RUNNER_ARCH} is not supported"
|
||||
exit 1
|
||||
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}"
|
||||
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 ! grep -qF "$(shasum -a 256 "${tar_path}" | cut -d ' ' -f 1)" "${checksums_path}"; then
|
||||
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
|
||||
fi
|
||||
|
||||
tar -xf "${tar_path}" -C "${bin_path}"
|
||||
rm -f "${tar_path}"
|
||||
echo "${bin_path}" >> "$GITHUB_PATH"
|
||||
tar -xf "${tar_path}" -C "${bin_path}"
|
||||
rm -f "${tar_path}"
|
||||
echo "${bin_path}" >> "$GITHUB_PATH"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
27
src/validate-inputs.sh
Executable file
27
src/validate-inputs.sh
Executable file
@ -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 "$@"
|
Loading…
x
Reference in New Issue
Block a user