From 65f8d18ce578f3efc55ae761464e0dc110ab729c Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 3 Apr 2024 20:26:48 +0300 Subject: [PATCH] feat(install.sh): add support for `--mainline` (default) and `--stable` (#12858) Fixes #12461 --- install.sh | 77 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/install.sh b/install.sh index 0cd1344413..3df67fa789 100755 --- a/install.sh +++ b/install.sh @@ -26,18 +26,21 @@ The remote host must have internet access. ${not_curl_usage-} Usage: - $arg0 [--dry-run] [--version X.X.X] [--edge] [--method detect] \ + ${arg0} [--dry-run] [--mainline | --stable | --version X.X.X] [--method detect] \ [--prefix ~/.local] [--rsh ssh] [user@host] --dry-run Echo the commands for the install process without running them. + --mainline + Install the latest mainline version (default). + + --stable + Install the latest stable version instead of the latest mainline version. + --version X.X.X Install a specific version instead of the latest. - --edge - Install the latest edge version instead of the latest stable version. - --method [detect | standalone] Choose the installation method. Defaults to detect. - detect detects the system package manager and tries to use it. @@ -88,16 +91,25 @@ The installer will cache all downloaded assets into ~/.cache/coder EOF } -echo_latest_version() { - if [ "${EDGE-}" ]; then - version="$(curl -fsSL https://api.github.com/repos/coder/coder/releases | awk 'match($0,/.*"html_url": "(.*\/releases\/tag\/.*)".*/)' | head -n 1 | awk -F '"' '{print $4}')" - else - # https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c#gistcomment-2758860 - version="$(curl -fsSLI -o /dev/null -w "%{url_effective}" https://github.com/coder/coder/releases/latest)" - fi - version="${version#https://github.com/coder/coder/releases/tag/}" - version="${version#v}" - echo "$version" +echo_latest_stable_version() { + # https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c#gistcomment-2758860 + version="$(curl -fsSLI -o /dev/null -w "%{url_effective}" https://github.com/coder/coder/releases/latest)" + version="${version#https://github.com/coder/coder/releases/tag/v}" + echo "${version}" +} + +echo_latest_mainline_version() { + # Fetch the releases from the GitHub API, sort by version number, + # and take the first result. Note that we're sorting by space- + # separated numbers and without utilizing the sort -V flag for the + # best compatibility. + curl -fsSL https://api.github.com/repos/coder/coder/releases | + awk -F'"' '/"tag_name"/ {print $4}' | + tr -d v | + tr . ' ' | + sort -k1,1nr -k2,2nr -k3,3nr | + head -n1 | + tr ' ' . } echo_standalone_postinstall() { @@ -106,9 +118,18 @@ echo_standalone_postinstall() { return fi + channel=mainline + advisory="To install our stable release (v${STABLE_VERSION}), use the --stable flag. " + if [ "${MAINLINE}" = 0 ]; then + channel=stable + advisory="" + fi + cath <