From e8c01bab917537ba4f54193c29b77bf4a04584d3 Mon Sep 17 00:00:00 2001 From: Marc Jakobi Date: Tue, 10 Jan 2023 15:33:23 +0100 Subject: [PATCH] feat: add rockspec + luarocks upload workflow (#2276) telescope.nvim is a common dependency across Neovim plugins. Using luarocks may alleviate the need for users to specify their plugins' dependencies in their plugin manager. (e.g., vim-plug or packer). See also: https://teto.github.io/posts/2021-09-17-neovim-plugin-luarocks.html --- .github/workflows/release.yml | 22 ++++++++++++++++ Makefile | 6 +++++ scripts/luarocks-upload.sh | 10 ++++++++ scripts/test-luarocks-install.sh | 4 +++ telescope.nvim-scm-1.rockspec | 44 ++++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 scripts/luarocks-upload.sh create mode 100644 scripts/test-luarocks-install.sh create mode 100644 telescope.nvim-scm-1.rockspec diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..11ce428d3e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,22 @@ +name: "release" +on: + push: + tags: + - '*' +jobs: + luarocks-upload: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - uses: leafo/gh-actions-lua@v9 + with: + luaVersion: "luajit-2.1.0-beta3" + - uses: leafo/gh-actions-luarocks@v4 + - name: Install dkjson + run: luarocks install dkjson + - name: Luarocks Upload + env: + LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }} + run: make luarocks_upload + - name: Install release + run: make test_luarocks_install diff --git a/Makefile b/Makefile index c3da51def6..df7d1e2e9c 100644 --- a/Makefile +++ b/Makefile @@ -6,3 +6,9 @@ lint: docgen: nvim --headless --noplugin -u scripts/minimal_init.vim -c "luafile ./scripts/gendocs.lua" -c 'qa' + +luarocks_upload: + bash ./scripts/luarocks-upload.sh + +test_luarocks_install: + bash ./scripts/test-luarocks-install.sh diff --git a/scripts/luarocks-upload.sh b/scripts/luarocks-upload.sh new file mode 100644 index 0000000000..8807d9ee49 --- /dev/null +++ b/scripts/luarocks-upload.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Expects the LUAROCKS_API_KEY secret to be set + +TMP_DIR=$(mktemp -d) +MODREV=$(git describe --tags --always --first-parent | tr -d "v") +DEST_ROCKSPEC="$TMP_DIR/telescope.nvim-$MODREV-1.rockspec" +cp "telescope.nvim-scm-1.rockspec" "$DEST_ROCKSPEC" +sed -i "s/= 'scm'/= '$MODREV'/g" "$DEST_ROCKSPEC" +luarocks upload "$DEST_ROCKSPEC" --api-key="$LUAROCKS_API_KEY" diff --git a/scripts/test-luarocks-install.sh b/scripts/test-luarocks-install.sh new file mode 100644 index 0000000000..81980155a1 --- /dev/null +++ b/scripts/test-luarocks-install.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +MODREV=$(git describe --tags --always --first-parent | tr -d "v") +luarocks install "telescope.nvim" "$MODREV" diff --git a/telescope.nvim-scm-1.rockspec b/telescope.nvim-scm-1.rockspec new file mode 100644 index 0000000000..f717d64035 --- /dev/null +++ b/telescope.nvim-scm-1.rockspec @@ -0,0 +1,44 @@ +local MODREV, SPECREV = 'scm', '-1' +rockspec_format = '3.0' +package = 'telescope.nvim' +version = MODREV .. SPECREV + +description = { + summary = 'Find, Filter, Preview, Pick. All lua, all the time.', + detailed = [[ + A highly extendable fuzzy finder over lists. + Built on the latest awesome features from neovim core. + Telescope is centered around modularity, allowing for easy customization. + ]], + labels = { 'neovim', 'plugin', }, + homepage = 'https://github.com/nvim-telescope/telescope.nvim', + license = 'MIT', +} + +dependencies = { + 'lua == 5.1', + 'plenary.nvim', +} + +source = { + url = 'https://github.com/nvim-telescope/telescope.nvim/archive/refs/tags/' .. MODREV .. '.zip', + dir = 'telescope.nvim-' .. MODREV +} + +if MODREV == 'scm' then + source = { + url = 'git://github.com/nvim-telescope/telescope.nvim', + } +end + +build = { + type = 'builtin', + copy_directories = { + 'doc', + 'ftplugin', + 'plugin', + 'scripts', + 'autoload', + 'data', + } +}