LuaRocksのrockspecの更新を楽にする
LuaRocksにuploadした自作のパッケージのバージョンを上げるとき、手動でrockspecを編集するのは面倒。
mypackage-1.0.0-1.rockspec
package = "mypackage"
version = "1.0.0-1"
source = {
url = "git+https://github.com/notomo/mypackage.git",
tag = "v1.0.0"
}
build = {
type = "builtin",
modules = {}
}
ファイル名とversion
とsource.tag
の3箇所変える必要がある。
実はこれを解決するサブコマンドnew_versionが提供されている。
$ luarocks new_version --dir rockspec --tag=v1.0.1
Wrote rockspec/mypackage-1.0.1-1.rockspec
--dir
のディレクトリにあるrockspecを元に--tag
のバージョンのrockspecを作成できる。
new_version
を使えば、シンプルなMakefileで楽に新しいバージョンをリリースできる。
( https://github.com/luarocks/luarocks/wiki/Creating-a-rock#method-1-using-a-repository-such-as-github を前提にしている)
Makefile
VERSION :=
ROCKSPEC_FILE := rockspec/mypackage-${VERSION}-1.rockspec
new_rockspec:
luarocks new_version --dir rockspec --tag=v${VERSION}
cat ${ROCKSPEC_FILE}
luarocks make ${ROCKSPEC_FILE}
.PHONY: new_rockspec
release: new_rockspec
luarocks install dkjson
luarocks upload ${ROCKSPEC_FILE} --temp-key=${LUAROCKS_API_KEY}
.PHONY: release
$ make new_rockspec VERSION=1.0.1
luarocks new_version --dir rockspec --tag=v1.0.1
Wrote rockspec/mypackage-1.0.1-1.rockspec
cat rockspec/mypackage-1.0.1-1.rockspec
package = "mypackage"
version = "1.0.1-1"
source = {
url = "git+https://github.com/notomo/mypackage.git",
tag = "v1.0.1"
}
build = {
type = "builtin",
modules = {}
}
luarocks make rockspec/mypackage-1.0.1-1.rockspec
mypackage 1.0.1-1 is now installed in /home/notomo/.local
バージョンをコードに埋め込まなくてよければ、git tagのpushでリリースできるGitHub Actionにまとまる。
バージョンの埋め込みが必要だとどうすべきかは考えられていない。今後の課題。
name: Release
on:
push:
tags:
- "v*"
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: leafo/gh-actions-lua@v7
- uses: leafo/gh-actions-luarocks@v2
# luarocksのsetupができれば何でもいい
- run: echo ::set-output name=version::${GITHUB_REF/refs\/tags\/v/}
id: var
- run: make release TARGET_VERSION=${{ steps.var.outputs.version }}
env:
LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }}
Author And Source
この問題について(LuaRocksのrockspecの更新を楽にする), 我々は、より多くの情報をここで見つけました https://zenn.dev/notomo/articles/luarocks-rockspec-easy-update著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol