Skip to content

Commit

Permalink
chore: make install-plugins POSIX
Browse files Browse the repository at this point in the history
Instead of relying on `bash` (which may not be installed, such as in
alpine images), use POSIX bash.

Signed-off-by: JP-Ellis <[email protected]>
  • Loading branch information
JP-Ellis committed Dec 16, 2024
1 parent fc04239 commit 772f3af
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 60 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"release": "commit-and-tag-version",
"test": "mocha",
"coverage": "nyc npm run test",
"pretest": "bash scripts/install-plugins.sh",
"pretest": "./scripts/install-plugins",
"docker:alpine:build": "docker build --build-arg NODE_VERSION=${NODE_VERSION:-current} -f Dockerfile.alpine -t pact-js:alpine .",
"docker:debian:build": "docker build --build-arg NODE_VERSION=${NODE_VERSION:-current} -f Dockerfile.debian -t pact-js:debian .",
"docker:alpine:run": "docker run -e LOG_LEVEL=${LOG_LEVEL:-info} -e GIT_REF=${GIT_REF:-test} -e GITHUB_ACTIONS=${GITHUB_ACTIONS:-false} -e SKIP_EXAMPLES=${SKIP_EXAMPLES:-''} -e PACT_BROKER_BASE_URL -e PACT_BROKER_TOKEN -w /home -v $(pwd):/home --rm pact-js:alpine",
Expand Down
97 changes: 97 additions & 0 deletions scripts/install-plugins
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#!/bin/sh
#
# Usage:
# $ curl -fsSL https://raw.githubusercontent.com/pact-foundation/pact-plugins/master/install-cli.sh | bash
# or
# $ wget -q https://raw.githubusercontent.com/pact-foundation/pact-plugins/master/install-cli.sh -O- | bash

# While most shells support `local`, it technically isn't POSIX. This will check
# for `local` and alias it to `typeset` if it doesn't exist.
# shellcheck disable=SC3043
# If a shell does not support `local`, it will be aliased to
# `typeset`, so this check is not needed.
has_local() {
local _has_local
}
has_local 2>/dev/null || alias local=typeset

set -o errexit # Exit on error
set -o nounset # Treat unset variables as an error

# Colours
WHITE_BOLD='\033[1;37m'
RESET='\033[0m'

detect_osarch() {
case $(uname -sm) in
'Linux x86_64')
os='linux'
arch='x86_64'
ext=''
;;
'Linux aarch64')
os='linux'
arch='aarch64'
ext=''
;;
'Darwin x86' | 'Darwin x86_64')
os='osx'
arch='x86_64'
ext=''
;;
'Darwin arm64')
os='osx'
arch='aarch64'
ext=''
;;
CYGWIN* | MINGW32* | MSYS* | MINGW*)
os="windows"
arch='x86_64'
ext='.exe'
;;
*)
echo "Sorry, you'll need to install the plugin CLI manually."
exit 1
;;
esac
}

install_pact_plugin_cli() {
[ -f ~/.pact/bin/pact-plugin-cli ] && \
echo "${WHITE_BOLD}=> Plugin CLI already installed${RESET}" && \
return

local version="0.1.2"
detect_osarch
local url="https://github.com/pact-foundation/pact-plugins/releases/download/pact-plugin-cli-v${version}/pact-plugin-cli-${os}-${arch}${ext}.gz"

URL=https://github.com/pact-foundation/pact-plugins/releases/download/pact-plugin-cli-v${version}/pact-plugin-cli-${os}-${arch}${ext}.gz
echo "${WHITE_BOLD}=> Installing plugins CLI version '${version}'${RESET}"
echo " - OS: ${os}"
echo " - Arch: ${arch}"
echo " - Version: ${version}"
echo " - URL: ${url}"
echo " - Downloading into: ~/.pact/bin/"

mkdir -p ~/.pact/bin
curl -sSL $URL | gunzip -c >~/.pact/bin/pact-plugin-cli
chmod +x ~/.pact/bin/pact-plugin-cli
}

install_matt_plugin() {
[ -d ~/.pact/plugins/matt-0.1.1 ] && \
echo -e "${WHITE_BOLD}=> MATT plugin already installed${RESET}" && \
return

local version="0.1.1"

echo "${WHITE_BOLD}=> Installing MATT plugin version '${version}'${RESET}"
~/.pact/bin/pact-plugin-cli install
}

main() {
install_pact_plugin_cli
install_matt_plugin
}

main
59 changes: 0 additions & 59 deletions scripts/install-plugins.sh

This file was deleted.

0 comments on commit 772f3af

Please sign in to comment.