From acea9da9eb441d67800db54c5ac83dfc4f5e9d3b Mon Sep 17 00:00:00 2001 From: Iain Samuel McLean Elder Date: Fri, 7 Jul 2023 13:34:37 +0200 Subject: [PATCH] Install fzf --- .github/workflows/fzf.yml | 45 +++++++++++++++++++++++++++++++++++++++ programs/fzf/install.bash | 37 ++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 .github/workflows/fzf.yml create mode 100755 programs/fzf/install.bash diff --git a/.github/workflows/fzf.yml b/.github/workflows/fzf.yml new file mode 100644 index 00000000..a537b263 --- /dev/null +++ b/.github/workflows/fzf.yml @@ -0,0 +1,45 @@ +name: fzf +on: + push: + paths: + - programs/fzf/install.bash + - .github/workflows/fzf.yml + schedule: + # Not at the start of an hour or a day to decreate the chance of delay. + # See schedule documentation. + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule + - cron: "17 5 * * *" + + workflow_dispatch: + +jobs: + test_idempotent_installation: + + strategy: + matrix: + os: + - "ubuntu:20.04" + - "ubuntu:22.04" + + runs-on: ubuntu-latest + container: + image: "${{ matrix.os }}" + + steps: + + - name: Check out code + uses: actions/checkout@v3 + + - name: Prepare Docker + run: ./scripts/prepare_docker.bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install fzf + shell: su norm --command "bash --login {0}" + run: programs/fzf/install.bash + + - name: Install fzf again (test idempotency) + shell: su norm --command "bash --login {0}" + run: programs/fzf/install.bash + diff --git a/programs/fzf/install.bash b/programs/fzf/install.bash new file mode 100755 index 00000000..029e8b04 --- /dev/null +++ b/programs/fzf/install.bash @@ -0,0 +1,37 @@ +#!/bin/bash + +# Name: fzf +# https://github.com/junegunn/fzf + +set -euxo pipefail + +cd "$(mktemp --dir)" + +sudo apt-get update + +sudo apt-get --assume-yes install \ +curl \ +jq + +browser_download_url=$( + curl -Ss 'https://api.github.com/repos/junegunn/fzf/releases/latest' | + jq -r '.assets[] | select(.name | test("fzf-.*?-linux_amd64.tar.gz")) | .browser_download_url' +) + +download_filename=$( + curl \ + --silent \ + --show-error \ + --url "$browser_download_url" \ + --location \ + --remote-name \ + --write-out '%{filename_effective}' +) + +chmod +x "${download_filename}" + +tar --extract --gzip --file "$download_filename" + +sudo mv fzf /usr/local/bin/fzf + +fzf --version