| version: 3 |
| |
| vars: |
| OS: "{{or .__OS OS}}" |
| ARCH: "{{or .__ARCH ARCH}}" |
| ARC: '{{if eq .OS "windows"}}.zip{{else}}.tar.gz{{end}}' |
| EXE: '{{if eq .OS "windows"}}.exe{{else}}{{end}}' |
| DRY: "" |
| |
| tasks: |
| |
| download-and-extract: |
| requires: |
| vars: |
| - FILE |
| - URL |
| - OUT |
| cmds: |
| - echo "{{.OUT}} {{.FILE}} {{.URL}} {{.FILETAR}}" |
| - curl -sL "{{.URL}}" -o {{.FILE}} |
| - extract "{{.FILE}}" "{{.OUT}}{{.EXE}}" |
| - remove "{{.FILE}}" |
| |
| download: |
| requires: |
| vars: |
| - URL |
| - OUT |
| cmds: |
| - curl -sL -o"{{.OUT}}" "{{.URL}}" |
| - executable "{{.OUT}}" |
| |
| 7zz: |
| desc: download 7zz |
| vars: |
| VERSION: "2407" |
| SUFFIX: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo "7z{{.VERSION}}-linux-x64.tar.xz" ;; |
| linux-arm64) echo "7z{{.VERSION}}-linux-arm64.tar.xz" ;; |
| darwin-*) echo "7z{{.VERSION}}-mac.tar.xz" ;; |
| windows-*) echo "7zr.exe" ;; |
| *) echo "unknown" ;; |
| esac |
| URL: "https://7-zip.org/a/{{.SUFFIX}}" |
| FILE: "{{base .URL}}" |
| cmds: |
| - curl -sL "{{.URL}}" -o "{{.FILE}}" |
| - | |
| if test "{{.OS}}" == "windows" |
| then rename 7zr.exe 7zz.exe |
| else extract "{{.FILE}}" 7zz |
| fi |
| - if test -e "{{.FILE}}" ; then remove "{{.FILE}}" ; fi |
| |
| coreutils: |
| desc: download coreutils |
| vars: |
| # when changing this add the list of utilites to nuvroot.json in config.ops.coreutils |
| # do NOT include [ test false true echo base64 |
| VERSION: "0.0.27" |
| SUFFIX: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo "x86_64-unknown-linux-gnu" ;; |
| linux-arm64) echo "aarch64-unknown-linux-gnu" ;; |
| darwin-amd64) echo "x86_64-apple-darwin" ;; |
| darwin-arm64) echo "aarch64-apple-darwin" ;; |
| windows-*) echo "x86_64-pc-windows-gnu" ;; |
| *) echo "unknown" ;; |
| esac |
| URL: "https://github.com/uutils/coreutils/releases/download/{{.VERSION}}/coreutils-{{.VERSION}}-{{.SUFFIX}}{{.ARC}}" |
| FILE: "{{base .URL}}" |
| OUT: coreutils |
| cmds: |
| - task: download-and-extract |
| vars: |
| URL: "{{.URL}}" |
| FILE: "{{.FILE}}" |
| OUT: coreutils |
| |
| bun: |
| desc: download bun |
| vars: |
| VERSION: "1.2.5" |
| ARCH2: '{{if eq .ARCH "amd64"}}x64{{else}}aarch64{{end}}' |
| URL: 'https://github.com/oven-sh/bun/releases/download/bun-v{{.VERSION}}/bun-{{.OS}}-{{.ARCH2}}.zip' |
| FILE: '{{base .URL}}' |
| cmds: |
| - echo "{{.URL}}" |
| - curl -sL "{{.URL}}" -o "{{.FILE}}" |
| - extract "{{.FILE}}" bun{{.EXE}} |
| - remove "{{.FILE}}" |
| |
| kubectl: |
| desc: download kubectl |
| vars: |
| VERSION: 1.30.3 |
| cmds: |
| - task: download |
| vars: |
| URL: "https://dl.k8s.io/release/v{{.VERSION}}/bin/{{.OS}}/{{.ARCH}}/kubectl{{.EXE}}" |
| OUT: kubectl |
| |
| kind: |
| desc: download kind |
| vars: |
| VERSION: 0.29.0 |
| cmds: |
| - task: download |
| vars: |
| URL: "https://kind.sigs.k8s.io/dl/v{{.VERSION}}/kind-{{.OS}}-{{.ARCH}}" |
| OUT: kind |
| |
| k3sup: |
| desc: download k3sup |
| vars: |
| VERSION: 0.13.6 |
| BASE: "https://github.com/alexellis/k3sup/releases/download/{{.VERSION}}" |
| FILE: |
| sh: | |
| case {{.OS}}-{{.ARCH}} in |
| (linux-amd64) echo k3sup ;; |
| (linux-arm64) echo k3sup-arm64 ;; |
| (darwin-amd64) echo k3sup-darwin ;; |
| (darwin-arm64) echo k3sup-darwin-arm64 ;; |
| (windows-amd64) echo k3sup.exe ;; |
| esac |
| cmds: |
| - task: download |
| vars: |
| URL: "{{.BASE}}/{{.FILE}}" |
| OUT: k3sup |
| |
| rg: |
| desc: download ripgrep |
| vars: |
| # when changing this add the list of utilites to nuvroot.json in config.ops.coreutils |
| # do NOT include [ test false true echo |
| VERSION: "14.1.0" |
| SUFFIX: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo "x86_64-unknown-linux-musl" ;; |
| linux-arm64) echo "aarch64-unknown-linux-gnu" ;; |
| darwin-amd64) echo "x86_64-apple-darwin" ;; |
| darwin-arm64) echo "aarch64-apple-darwin" ;; |
| windows-*) echo "x86_64-pc-windows-msvc" ;; |
| *) echo "unknown" ;; |
| esac |
| URL: "https://github.com/BurntSushi/ripgrep/releases/download/{{.VERSION}}/ripgrep-{{.VERSION}}-{{.SUFFIX}}{{.ARC}}" |
| FILE: "{{base .URL}}" |
| OUT: rg |
| cmds: |
| - task: download-and-extract |
| vars: |
| URL: "{{.URL}}" |
| FILE: "{{.FILE}}" |
| OUT: "{{.OUT}}" |
| |
| uv: |
| desc: install uv |
| vars: |
| VERSION: "0.7.19" |
| FILE: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo uv-x86_64-unknown-linux-gnu.tar.gz ;; |
| linux-arm64) echo uv-aarch64-unknown-linux-gnu.tar.gz ;; |
| darwin-arm64) echo uv-aarch64-apple-darwin.tar.gz ;; |
| darwin-amd64) echo uv-x86_64-apple-darwin.tar.gz ;; |
| windows-*) echo uv-x86_64-pc-windows-msvc.zip ;; |
| *) echo "unknown" ;; |
| esac |
| URL: "https://github.com/astral-sh/uv/releases/download/{{.VERSION}}/{{.FILE}}" |
| OUT: uv |
| cmds: |
| - curl -sL "{{.URL}}" -o "{{.FILE}}" |
| - extract "{{.FILE}}" "{{.OUT}}{{.EXE}}" |
| - remove "{{.FILE}}" |
| |
| #hugo: |
| # desc: download hugo |
| # vars: |
| # VERSION: 0.145.0 |
| # SUFFIX: |
| # sh: | |
| # case "{{.OS}}-{{.ARCH}}" in |
| # linux-amd64) echo Linux-64bit.tar.gz ;; |
| # linux-arm64) echo "linux-arm64.tar.gz" ;; |
| # darwin-arm64) echo darwin-universal.tar.gz ;; |
| # darwin-amd64) echo darwin-universal.tar.gz ;; |
| # windows-*) echo windows-amd64.zip ;; |
| # *) echo "unknown" ;; |
| # esac |
| # URL: "https://github.com/gohugoio/hugo/releases/download/v{{.VERSION}}/hugo_extended_{{.VERSION}}_{{.SUFFIX}}" |
| # FILE: "{{base .URL}}" |
| # OUT: hugo |
| # cmds: |
| # - task: download-and-extract |
| # vars: |
| # URL: "{{.URL}}" |
| # FILE: "{{.FILE}}" |
| # OUT: "{{.OUT}}" |
| |
| helm: |
| desc: download helm |
| vars: |
| VERSION: "3.18.0" |
| SUFFIX: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo "linux-amd64" ;; |
| linux-arm64) echo "linux-arm64" ;; |
| darwin-amd64) echo "darwin-amd64" ;; |
| darwin-arm64) echo "darwin-arm64" ;; |
| windows-amd64) echo "windows-amd64" ;; |
| *) echo "unknown" ;; |
| esac |
| URL: "https://get.helm.sh/helm-v{{.VERSION}}-{{.SUFFIX}}{{.ARC}}" |
| FILE: "{{base .URL}}" |
| OUT: helm |
| cmds: |
| - task: download-and-extract |
| vars: |
| URL: "{{.URL}}" |
| FILE: "{{.FILE}}" |
| OUT: "{{.OUT}}" |
| |
| #k3d: |
| # desc: download k3d |
| # vars: |
| # VERSION: "5.6.3" |
| # SUFFIX: |
| # sh: | |
| # case "{{.OS}}-{{.ARCH}}" in |
| # linux-amd64) echo "k3d-linux-amd64" ;; |
| # linux-arm64) echo "k3d-linux-arm64" ;; |
| # darwin-amd64) echo "k3d-darwin-amd64" ;; |
| # darwin-arm64) echo "k3d-darwin-arm64" ;; |
| # windows-amd64) echo "k3d-windows-amd64.exe" ;; |
| # *) echo "unknown" ;; |
| # esac |
| # URL: "https://github.com/k3d-io/k3d/releases/download/v{{.VERSION}}/{{.SUFFIX}}" |
| # OUT: k3d |
| # cmds: |
| # - task: download |
| # vars: |
| # URL: "{{.URL}}" |
| # OUT: "{{.OUT}}{{.EXE}}" |
| |
| |
| zip: |
| desc: ensure zip is available |
| vars: |
| VERSION: 3.0-1 |
| ZIP_EXE: "https://github.com/nuvolaris/zip/raw/refs/heads/master/zip.exe" |
| cmds: |
| - | |
| case "{{.OS}}-{{.ARCH}}" in |
| darwin-*) touch zip ;; |
| linux-*) |
| cat >zip <<EOF |
| #!/bin/bash |
| if test -x /bin/zip -o -x /usr/bin/zip -o -x /usr/local/bin/zip |
| then rm "\$0" ; exec zip "\$@" |
| else echo "Please install zip in your system." ; exit 1 |
| fi |
| EOF |
| executable zip |
| ;; |
| windows-*) |
| curl -sL "{{.ZIP_EXE}}" -o zip.exe |
| executable zip.exe |
| ;; |
| esac |
| |
| kubefwd: |
| desc: download kubefwd |
| vars: |
| VERSION: "1.22.5" |
| SUFFIX: |
| sh: | |
| case "{{.OS}}-{{.ARCH}}" in |
| linux-amd64) echo "_Linux_x86_64" ;; |
| linux-arm64) echo "_Linux_arm64" ;; |
| darwin-amd64) echo "_Darwin_x86_64" ;; |
| darwin-arm64) echo "_Darwin_arm64" ;; |
| windows-*) echo "_Windows_x86_64" ;; |
| *) echo "unknown" ;; |
| esac |
| #https://github.com/txn2/kubefwd/releases/download/1.22.5/kubefwd_Darwin_x86_64.tar.gz |
| URL: "https://github.com/txn2/kubefwd/releases/download/{{.VERSION}}/kubefwd{{.SUFFIX}}{{.ARC}}" |
| FILE: "{{base .URL}}" |
| OUT: kubefwd |
| cmds: |
| - task: download-and-extract |
| vars: |
| URL: "{{.URL}}" |
| FILE: "{{.FILE}}" |
| OUT: kubefwd |
| |
| all: |
| - task: 7zz |
| - task: coreutils |
| - task: bun |
| - task: kind |
| - task: k3sup |
| - task: kubectl |
| - task: rg |
| - task: uv |
| - task: helm |
| - task: kubefwd |
| - task: zip |
| #- task: hugo |
| #- task: k3d |
| |
| test: |
| vars: |
| DIR: "{{.OPS_PWD}}/bin/{{.OS}}-{{.ARCH}}" |
| cmds: |
| - | |
| {{.DRY}} rm -Rvf {{.DIR}} |
| mkdir -p {{.DIR}} |
| cd {{.DIR}} |
| {{.DRY}} ops -task -t ../../prereq.yml -d {{.DIR}} all |
| - task: check |
| |
| check: |
| vars: |
| DIR: "{{.OPS_PWD}}/bin/{{.OS}}-{{.ARCH}}" |
| FILETYPE: |
| sh: | |
| case "{{.OS}}" in |
| (windows) echo application/vnd.microsoft.portable-executable ;; |
| (darwin) echo application/x-mach-binary ;; |
| (linux) echo application/x-executable ;; |
| (*) unknown ;; |
| esac |
| sources: |
| - '{{.DIR}}/*' |
| status: |
| - false |
| cmds: |
| - for: sources |
| cmd: filetype -m {{.ITEM}} | rg {{.FILETYPE}} |
| |
| tests: |
| - __OS=linux __ARCH=amd64 ops -task -t prereq.yml test |
| - __OS=linux __ARCH=arm64 ops -task -t prereq.yml test |
| - __OS=darwin __ARCH=amd64 ops -task -t prereq.yml test |
| - __OS=darwin __ARCH=arm64 ops -task -t prereq.yml test |
| - __OS=windows __ARCH=amd64 ops -task -t prereq.yml test |
| |