From 3242773267730794308d5a78bbef38b4d3e726f6 Mon Sep 17 00:00:00 2001 From: Mark Pitman Date: Thu, 25 Jun 2026 23:47:29 -0700 Subject: [PATCH 1/4] Migrate Makefile to justfile --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 4 +- Makefile | 85 --------------------------------- justfile | 88 +++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 88 deletions(-) delete mode 100644 Makefile create mode 100644 justfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 686b68c..f9b58f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,4 +21,4 @@ jobs: with: go-version: '1.21' - name: Build - run: VERSION="${{ steps.previoustag.outputs.tag }}" make all + run: VERSION="${{ steps.previoustag.outputs.tag }}" just all diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 158ac52..1f265bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,8 +20,8 @@ jobs: go-version: '1.21' - name: Build run: | - VERSION="${{ steps.previoustag.outputs.tag }}" make all - VERSION="${{ steps.previoustag.outputs.tag }}" make deb + VERSION="${{ steps.previoustag.outputs.tag }}" just all + VERSION="${{ steps.previoustag.outputs.tag }}" just deb - name: Release uses: actions/create-release@v1 id: create_release diff --git a/Makefile b/Makefile deleted file mode 100644 index 9e29a3e..0000000 --- a/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -MANSECTION ?= 1 -SHELL=/bin/bash -.PHONY: clean snap -default: linux -all: linux windows darwin freebsd - -linux: bin/linux-amd64/mdview bin/linux-arm64/mdview bin/linux-i386/mdview -windows: bin/windows-amd64/mdview.exe -darwin: bin/darwin-amd64/mdview bin/darwin-arm64/mdview -freebsd: bin/freebsd-amd64/mdview - -deb: deb/linux-amd64 deb/linux-arm64 - -deb/linux-amd64: bin/linux-amd64/mdview - mkdir -p package/DEBIAN - mkdir -p package/usr/bin/ - mkdir -p package/usr/share/man/man1/ - cp control package/DEBIAN/ - sed -i "s/VERSION/$(VERSION)/g" package/DEBIAN/control - cp -r bin/linux-amd64/mdview package/usr/bin/mdview - cp mdview.1 package/usr/share/man/man1/ - dpkg-deb --build package - mv package.deb mdview_$(VERSION)_amd64.deb - -deb/linux-arm64: bin/linux-arm64/mdview - mkdir -p package/DEBIAN - mkdir -p package/usr/bin/ - mkdir -p package/usr/share/man/man1/ - cp control package/DEBIAN/ - sed -i "s/VERSION/$(VERSION)/g" package/DEBIAN/control - cp -r bin/linux-arm64/mdview package/usr/bin/mdview - cp mdview.1 package/usr/share/man/man1/ - dpkg-deb --build package - mv package.deb mdview_$(VERSION)_arm64.deb - -snap: - snapcraft pack - -bin/linux-amd64/mdview: manpage - env GOOS=linux GOARCH=amd64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-amd64/mdview - cp mdview.1 bin/linux-amd64/ - tar czvf mdview-$(VERSION)-linux-amd64.tar.gz --transform s/linux-amd64/mdview-$(VERSION)/ -C bin linux-amd64 - -bin/linux-i386/mdview: - env GOOS=linux GOARCH=386 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-i386/mdview - cp mdview.1 bin/linux-i386/ - tar czvf mdview-$(VERSION)-linux-i386.tar.gz --transform s/linux-i386/mdview-$(VERSION)/ -C bin linux-i386 - -bin/linux-arm64/mdview: - env GOOS=linux GOARCH=arm64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-arm64/mdview - cp mdview.1 bin/linux-arm64/ - tar czvf mdview-$(VERSION)-linux-arm64.tar.gz --transform s/linux-arm64/mdview-$(VERSION)/ -C bin linux-arm64 - -bin/windows-amd64/mdview.exe: - env GOOS=windows GOARCH=amd64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/windows-amd64/mdview.exe - zip -j mdview-$(VERSION)-windows-amd64.zip bin/windows-amd64/mdview.exe - -bin/darwin-amd64/mdview: - env GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/darwin-amd64/mdview - cp mdview.1 bin/darwin-amd64/ - tar czvf mdview-$(VERSION)-darwin-amd64.tar.gz --transform s/darwin-amd64/mdview-$(VERSION)/ -C bin darwin-amd64 - -bin/darwin-arm64/mdview: - env GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/darwin-arm64/mdview - cp mdview.1 bin/darwin-arm64/ - tar czvf mdview-$(VERSION)-darwin-arm64.tar.gz --transform s/darwin-arm64/mdview-$(VERSION)/ -C bin darwin-arm64 - -bin/freebsd-amd64/mdview: - env GOOS=freebsd GOARCH=amd64 go build -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/freebsd-amd64/mdview - cp mdview.1 bin/freebsd-amd64/mdview - tar czvf mdview-$(VERSION)-freebsd-amd64.tar.gz --transform s/freebsd-amd64/mdview-$(VERSION)/ -C bin freebsd-amd64 - -clean: - rm -rf bin - rm -rf package - rm -f *.tar.gz - rm -f *.zip - rm -f *.deb - rm -f mdview.1 - rm -f *.snap - - # snapcraft clean mdview -s pull - -manpage: - pandoc --standalone --to man mdview.1.md -o mdview.1 \ No newline at end of file diff --git a/justfile b/justfile new file mode 100644 index 0000000..011b5ac --- /dev/null +++ b/justfile @@ -0,0 +1,88 @@ +set shell := ["/bin/bash", "-c"] + +VERSION := env_var_or_default("VERSION", "") + +MANSECTION := env_var_or_default("MANSECTION", "1") + +default: linux +all: linux windows darwin freebsd + +linux: bin-linux-amd64-mdview bin-linux-arm64-mdview bin-linux-i386-mdview +windows: bin-windows-amd64-mdview-exe +darwin: bin-darwin-amd64-mdview bin-darwin-arm64-mdview +freebsd: bin-freebsd-amd64-mdview + +deb: deb-linux-amd64 deb-linux-arm64 + +deb-linux-amd64: bin-linux-amd64-mdview + mkdir -p package/DEBIAN + mkdir -p package/usr/bin/ + mkdir -p package/usr/share/man/man1/ + cp control package/DEBIAN/ + sed -i "s/VERSION/{{VERSION}}/g" package/DEBIAN/control + cp -r bin/linux-amd64/mdview package/usr/bin/mdview + cp mdview.1 package/usr/share/man/man1/ + dpkg-deb --build package + mv package.deb mdview_{{VERSION}}_amd64.deb + +deb-linux-arm64: bin-linux-arm64-mdview + mkdir -p package/DEBIAN + mkdir -p package/usr/bin/ + mkdir -p package/usr/share/man/man1/ + cp control package/DEBIAN/ + sed -i "s/VERSION/{{VERSION}}/g" package/DEBIAN/control + cp -r bin/linux-arm64/mdview package/usr/bin/mdview + cp mdview.1 package/usr/share/man/man1/ + dpkg-deb --build package + mv package.deb mdview_{{VERSION}}_arm64.deb + +snap: + snapcraft pack + +bin-linux-amd64-mdview: manpage + env GOOS=linux GOARCH=amd64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/linux-amd64/mdview + cp mdview.1 bin/linux-amd64/ + tar czvf mdview-{{VERSION}}-linux-amd64.tar.gz --transform s/linux-amd64/mdview-{{VERSION}}/ -C bin linux-amd64 + +bin-linux-i386-mdview: + env GOOS=linux GOARCH=386 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/linux-i386/mdview + cp mdview.1 bin/linux-i386/ + tar czvf mdview-{{VERSION}}-linux-i386.tar.gz --transform s/linux-i386/mdview-{{VERSION}}/ -C bin linux-i386 + +bin-linux-arm64-mdview: + env GOOS=linux GOARCH=arm64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/linux-arm64/mdview + cp mdview.1 bin/linux-arm64/ + tar czvf mdview-{{VERSION}}-linux-arm64.tar.gz --transform s/linux-arm64/mdview-{{VERSION}}/ -C bin linux-arm64 + +bin-windows-amd64-mdview-exe: + env GOOS=windows GOARCH=amd64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/windows-amd64/mdview.exe + zip -j mdview-{{VERSION}}-windows-amd64.zip bin/windows-amd64/mdview.exe + +bin-darwin-amd64-mdview: + env GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/darwin-amd64/mdview + cp mdview.1 bin/darwin-amd64/ + tar czvf mdview-{{VERSION}}-darwin-amd64.tar.gz --transform s/darwin-amd64/mdview-{{VERSION}}/ -C bin darwin-amd64 + +bin-darwin-arm64-mdview: + env GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/darwin-arm64/mdview + cp mdview.1 bin/darwin-arm64/ + tar czvf mdview-{{VERSION}}-darwin-arm64.tar.gz --transform s/darwin-arm64/mdview-{{VERSION}}/ -C bin darwin-arm64 + +bin-freebsd-amd64-mdview: + env GOOS=freebsd GOARCH=amd64 go build -ldflags "-X main.appVersion={{VERSION}}" -o ./bin/freebsd-amd64/mdview + cp mdview.1 bin/freebsd-amd64/mdview + tar czvf mdview-{{VERSION}}-freebsd-amd64.tar.gz --transform s/freebsd-amd64/mdview-{{VERSION}}/ -C bin freebsd-amd64 + +clean: + rm -rf bin + rm -rf package + rm -f *.tar.gz + rm -f *.zip + rm -f *.deb + rm -f mdview.1 + rm -f *.snap + + # snapcraft clean mdview -s pull + +manpage: + pandoc --standalone --to man mdview.1.md -o mdview.1 \ No newline at end of file From a545229214ec9b5bb1b1b8fbe7d4b6f707054ebb Mon Sep 17 00:00:00 2001 From: Mark Pitman Date: Thu, 25 Jun 2026 23:55:49 -0700 Subject: [PATCH 2/4] Install just in GitHub Actions workflows --- .github/workflows/build.yml | 3 +++ .github/workflows/release.yml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9b58f2..e29169c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,5 +20,8 @@ jobs: uses: actions/setup-go@v5 with: go-version: '1.21' + - name: Install just + uses: extractions/setup-just@v2 - name: Build run: VERSION="${{ steps.previoustag.outputs.tag }}" just all + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1f265bb..d38da2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,6 +18,8 @@ jobs: uses: actions/setup-go@v5 with: go-version: '1.21' + - name: Install just + uses: extractions/setup-just@v2 - name: Build run: | VERSION="${{ steps.previoustag.outputs.tag }}" just all From 729437c0356b5d1c503b48689c6ebcfa55beb7ed Mon Sep 17 00:00:00 2001 From: Mark Pitman Date: Thu, 25 Jun 2026 23:59:44 -0700 Subject: [PATCH 3/4] ci: update github actions to latest major versions and migrate release flow to softprops/action-gh-release --- .github/workflows/build.yml | 8 +-- .github/workflows/release.yml | 110 +++++++--------------------------- 2 files changed, 24 insertions(+), 94 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e29169c..7dc158d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,21 +7,21 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: 'Get Previous tag' id: previoustag - uses: "WyriHaximus/github-action-get-previous-tag@v1" + uses: "WyriHaximus/github-action-get-previous-tag@v2" - name: Set version run: | export VERSION=${{ steps.previoustag.outputs.tag }} - name: Setup tools run: sudo apt-get install pandoc - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1.21' - name: Install just - uses: extractions/setup-just@v2 + uses: extractions/setup-just@v4 - name: Build run: VERSION="${{ steps.previoustag.outputs.tag }}" just all diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d38da2c..5b86638 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,114 +4,44 @@ on: push: tags: - '*' + +permissions: + contents: write + jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: 'Get Previous tag' id: previoustag - uses: "WyriHaximus/github-action-get-previous-tag@v1" + uses: "WyriHaximus/github-action-get-previous-tag@v2" - name: Setup tools run: sudo apt-get install pandoc - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1.21' - name: Install just - uses: extractions/setup-just@v2 + uses: extractions/setup-just@v4 - name: Build run: | VERSION="${{ steps.previoustag.outputs.tag }}" just all VERSION="${{ steps.previoustag.outputs.tag }}" just deb - name: Release - uses: actions/create-release@v1 - id: create_release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v2 with: draft: true prerelease: false - release_name: ${{ steps.previoustag.outputs.tag }} + name: ${{ steps.previoustag.outputs.tag }} tag_name: ${{ steps.previoustag.outputs.tag }} - - name: upload linux amd64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-linux-amd64.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-linux-amd64.tar.gz - asset_content_type: application/gzip - - name: upload linux i386 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-linux-i386.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-linux-i386.tar.gz - asset_content_type: application/gzip - - name: upload linux arm64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-linux-arm64.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-linux-arm64.tar.gz - asset_content_type: application/gzip - - name: upload darwin amd64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-darwin-amd64.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-darwin-amd64.tar.gz - asset_content_type: application/gzip - - name: upload darwin arm64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-darwin-arm64.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-darwin-arm64.tar.gz - asset_content_type: application/gzip - - name: upload windows amd64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-windows-amd64.zip - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-windows-amd64.zip - asset_content_type: application/zip - - name: upload freebsd amd64 artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview-${{ steps.previoustag.outputs.tag }}-freebsd-amd64.tar.gz - asset_name: mdview-${{ steps.previoustag.outputs.tag }}-freebsd-amd64.tar.gz - asset_content_type: application/gzip - - name: upload linux amd64 deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview_${{ steps.previoustag.outputs.tag }}_amd64.deb - asset_name: mdview_${{ steps.previoustag.outputs.tag }}_amd64.deb - asset_content_type: application/vnd.debian.binary-package - - name: upload linux arm64 deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./mdview_${{ steps.previoustag.outputs.tag }}_arm64.deb - asset_name: mdview_${{ steps.previoustag.outputs.tag }}_arm64.deb - asset_content_type: application/vnd.debian.binary-package \ No newline at end of file + files: | + mdview-${{ steps.previoustag.outputs.tag }}-linux-amd64.tar.gz + mdview-${{ steps.previoustag.outputs.tag }}-linux-i386.tar.gz + mdview-${{ steps.previoustag.outputs.tag }}-linux-arm64.tar.gz + mdview-${{ steps.previoustag.outputs.tag }}-darwin-amd64.tar.gz + mdview-${{ steps.previoustag.outputs.tag }}-darwin-arm64.tar.gz + mdview-${{ steps.previoustag.outputs.tag }}-windows-amd64.zip + mdview-${{ steps.previoustag.outputs.tag }}-freebsd-amd64.tar.gz + mdview_${{ steps.previoustag.outputs.tag }}_amd64.deb + mdview_${{ steps.previoustag.outputs.tag }}_arm64.deb \ No newline at end of file From c7a5c817cbe28230d8f491e81125be81120ca455 Mon Sep 17 00:00:00 2001 From: Mark Pitman Date: Fri, 26 Jun 2026 00:02:02 -0700 Subject: [PATCH 4/4] ci: read Go version from go.mod instead of hardcoding v1.21 --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7dc158d..6225673 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v6 with: - go-version: '1.21' + go-version-file: 'go.mod' - name: Install just uses: extractions/setup-just@v4 - name: Build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b86638..6e3179e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v6 with: - go-version: '1.21' + go-version-file: 'go.mod' - name: Install just uses: extractions/setup-just@v4 - name: Build