Skip to content

Add --base64-stdin option to put subcommand #47

Add --base64-stdin option to put subcommand

Add --base64-stdin option to put subcommand #47

Workflow file for this run

name: CI
on: [ push, pull_request ]
permissions:
contents: write
env:
APPNAME: "leveldb"
jobs:
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
permissions:
contents: read
strategy:
matrix:
os:
- windows-latest
- macos-latest
- ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.23"
- name: Run go test
run: go test -v ./...
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [ test ]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
outputs:
release-name: ${{ steps.create-release.outputs.release-name }}
steps:
- id: create-release
name: Create GitHub Release
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASE_NAME="${GITHUB_REF#refs/tags/}"
gh release create --draft "${RELEASE_NAME}"
echo "release-name=${RELEASE_NAME}" >> "${GITHUB_OUTPUT}"
upload-release-assets:
name: Upload release asset (${{ matrix.GOOS }}/${{ matrix.GOARCH }})
runs-on: ubuntu-latest
needs: [ create-release ]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
include:
- { GOOS: windows, GOARCH: amd64 }
- { GOOS: darwin, GOARCH: amd64 }
- { GOOS: darwin, GOARCH: arm64 }
- { GOOS: linux, GOARCH: amd64 }
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.23"
- id: build-release-asset
name: Build release asset
env:
CGO_ENABLED: "0"
GOOS: ${{ matrix.GOOS }}
GOARCH: ${{ matrix.GOARCH }}
run: |
GIT_TAG="${GITHUB_REF#refs/tags/}"
VERSION="${GIT_TAG#v}"
ASSETDIR="${APPNAME}-${GOOS}-${GOARCH}-${VERSION}"
go install -buildmode=pie -trimpath -ldflags "-bindnow -s" \
"github.com/${GITHUB_REPOSITORY}/cmd/${APPNAME}@${GIT_TAG}"
case "${GOOS}/${GOARCH}" in
"$(go env GOHOSTOS)/$(go env GOHOSTARCH)")
GOBIN="$(go env GOPATH)/bin"
;;
*)
GOBIN="$(go env GOPATH)/bin/${GOOS}_${GOARCH}"
;;
esac
mkdir "${ASSETDIR}"
cp LICENSE README.md "${ASSETDIR}"
cp "${GOBIN}/${APPNAME}$(go env GOEXE)" "${ASSETDIR}"
case "${GOOS}" in
windows)
zip "${ASSETDIR}.zip" "${ASSETDIR}"/*
echo "asset-name=${ASSETDIR}.zip" >> "${GITHUB_OUTPUT}"
;;
*)
tar zcf "${ASSETDIR}.tar.gz" "${ASSETDIR}"
echo "asset-name=${ASSETDIR}.tar.gz" >> "${GITHUB_OUTPUT}"
;;
esac
- name: Upload release asset
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_NAME: ${{ needs.create-release.outputs.release-name }}
ASSET_NAME: ${{ steps.build-release-asset.outputs.asset-name }}
run: gh release upload "${RELEASE_NAME}" "${ASSET_NAME}"