diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index df77d34..55edc9c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -17,6 +17,7 @@ jobs: - bitwarden-cli - bitwarden-secrets-manager - mise + - mise-golang - mise-node - mise-python - vault @@ -64,6 +65,7 @@ jobs: - bitwarden-secrets-manager - kamal - mise + - mise-golang - mise-node - mise-python - vault diff --git a/src/mise-golang/README.md b/src/mise-golang/README.md new file mode 100644 index 0000000..c8f460a --- /dev/null +++ b/src/mise-golang/README.md @@ -0,0 +1,25 @@ + +# Go (mise) (mise-golang) + +Installs Go via mise-en-place version manager. + +## Example Usage + +```json +"features": { + "ghcr.io/RouL/devcontainer-features/mise-golang:1": {} +} +``` + +## Options + +| Options Id | Description | Type | Default Value | +|-----|-----|-----|-----| +| version | Version to be installed as default. | string | latest | +| extra_versions | Additional versions to be installed. (space separated) | string | - | + + + +--- + +_Note: This file was auto-generated from the [devcontainer-feature.json](https://github.com/RouL/devcontainer-features/blob/main/src/mise-golang/devcontainer-feature.json). Add additional notes to a `NOTES.md`._ diff --git a/src/mise-golang/devcontainer-feature.json b/src/mise-golang/devcontainer-feature.json new file mode 100644 index 0000000..48fb0a0 --- /dev/null +++ b/src/mise-golang/devcontainer-feature.json @@ -0,0 +1,21 @@ +{ + "id": "mise-golang", + "version": "1.0.0", + "name": "Go (mise)", + "description": "Installs Go via mise-en-place version manager.", + "dependsOn": { + "ghcr.io/RouL/devcontainer-features/mise:latest": {} + }, + "options": { + "version": { + "description": "Version to be installed as default.", + "type": "string", + "default": "latest" + }, + "extra_versions": { + "description": "Additional versions to be installed. (space separated)", + "type": "string", + "default": "" + } + } +} diff --git a/src/mise-golang/install.sh b/src/mise-golang/install.sh new file mode 100755 index 0000000..6598e84 --- /dev/null +++ b/src/mise-golang/install.sh @@ -0,0 +1,45 @@ +#!/usr/bin/bash +set -e + +USERNAME="${USERNAME:-"${_REMOTE_USER:-"automatic"}"}" +VERSION="${VERSION:-lts}" + +REQUIRED_PACKAGES="git ca-certificates" + +apt_get_update() +{ + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} + +check_packages() { + if ! dpkg -s "$@" > /dev/null 2>&1; then + apt_get_update + apt-get -y install --no-install-recommends "$@" + fi +} + +export DEBIAN_FRONTEND=noninteractive + +check_packages $REQUIRED_PACKAGES + +install() { + su ${USERNAME} -c "mise use --global go@${VERSION}" +} + +echo "(*) Installing Go (${VERSION}) via mise as default..." + +install + +for extraVersion in $EXTRA_VERSIONS +do + echo "(*) Installung Go (${extraVersion}) via mise" + su ${USERNAME} -c "mise install go@${VERSION}" +done + +# Clean up +rm -rf /var/lib/apt/lists/* + +echo "Done!" diff --git a/test/mise-golang/golang1.23.sh b/test/mise-golang/golang1.23.sh new file mode 100644 index 0000000..74ad449 --- /dev/null +++ b/test/mise-golang/golang1.23.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +source dev-container-features-test-lib + +check "check default go == 1.23.*" bash -c "go version | grep -E '^go version go1\\.23\\.'" + +reportResults diff --git a/test/mise-golang/golang1.24_golang1.23_golang1.22.sh b/test/mise-golang/golang1.24_golang1.23_golang1.22.sh new file mode 100644 index 0000000..f97f64e --- /dev/null +++ b/test/mise-golang/golang1.24_golang1.23_golang1.22.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +source dev-container-features-test-lib + +check "check default go == 1.24.*" bash -c "go version | grep -E '^go version go1\\.24\\.'" +check "check go@1.23" bash -c "mise exec go@1.23 -- go version | grep -E '^go version go1\\.23\\.'" +check "check go@1.22" bash -c "mise exec go@1.22 -- go version | grep -E '^go version go1\\.22\\.'" + +reportResults diff --git a/test/mise-golang/scenarios.json b/test/mise-golang/scenarios.json new file mode 100644 index 0000000..fba33cd --- /dev/null +++ b/test/mise-golang/scenarios.json @@ -0,0 +1,19 @@ +{ + "golang1.23": { + "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "features": { + "mise-golang": { + "version": "1.23" + } + } + }, + "golang1.24_golang1.23_golang1.22": { + "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "features": { + "mise-golang": { + "version": "1.24", + "extra_versions": "1.23 1.22" + } + } + } +} diff --git a/test/mise-golang/test.sh b/test/mise-golang/test.sh new file mode 100644 index 0000000..5e4ba76 --- /dev/null +++ b/test/mise-golang/test.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +source dev-container-features-test-lib + +check "check default go" bash -c "go version | grep -E '^go version go[1-9][0-9]*\\.'" + +reportResults