Man page release workflow wip

This commit is contained in:
Mike Farah 2021-10-20 15:01:08 +11:00
parent e5f389d0c2
commit ee376fdfd2
4 changed files with 88 additions and 61 deletions

View File

@ -12,57 +12,84 @@ jobs:
- uses: actions/setup-go@v2 - uses: actions/setup-go@v2
with: with:
go-version: '^1.17.2' go-version: '^1.17.2'
- name: Compile man page markup
id: gen-man-page-md
run: |
./scripts/generate-man-page-md.sh
echo "::set-output name=man-page-md::man.md"
- name: Generate man page
uses: docker://pandoc/latex:2.9
id: gen-man-page
env:
MAN_HEADER: yq (https://github.com/mikefarah/yq/) version ${{ github.ref }}
outputs:
manpage:
value: yq.1
with:
args: >-
--standalone
--to man
--variable=title:"YQ"
--variable=section:"1"
--variable=header:"${MAN_HEADER}"
--variable=author:"Mike Farah"
--output=yq.1
${{ steps.gen-man-page-md.outputs.man-page-md }}
- name: Cross compile - name: Cross compile
run: | run: |
sudo apt-get install rhash -y sudo apt-get install rhash -y
go get github.com/mitchellh/gox go get github.com/mitchellh/gox
mkdir -p build
cp ${{ steps.gen-man-page.outputs.manpage }} build/yq.1
./scripts/xcompile.sh ./scripts/xcompile.sh
- name: Create Release # - name: Create Release
id: create_release # id: create_release
uses: actions/create-release@v1.0.0 # uses: actions/create-release@v1.0.0
env: # env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: # with:
tag_name: ${{ github.ref }} # tag_name: ${{ github.ref }}
release_name: TEST ${{ github.ref }} # release_name: TEST ${{ github.ref }}
draft: true # draft: true
prerelease: false # prerelease: false
- uses: shogo82148/actions-upload-release-asset@v1 # - uses: shogo82148/actions-upload-release-asset@v1
with: # with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: build/* # asset_path: build/*
publishDocker: # publishDocker:
environment: dockerhub # environment: dockerhub
env: # env:
IMAGE_NAME: mikefarah/yq # IMAGE_NAME: mikefarah/yq
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- uses: actions/checkout@v2 # - uses: actions/checkout@v2
- name: Set up QEMU # - name: Set up QEMU
uses: docker/setup-qemu-action@v1 # uses: docker/setup-qemu-action@v1
with: # with:
platforms: all # platforms: all
- name: Set up Docker Buildx # - name: Set up Docker Buildx
id: buildx # id: buildx
uses: docker/setup-buildx-action@v1 # uses: docker/setup-buildx-action@v1
with: # with:
version: latest # version: latest
- name: Available platforms # - name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }} && docker version # run: echo ${{ steps.buildx.outputs.platforms }} && docker version
- name: Build image # - name: Build image
run: | # run: |
IMAGE_V_VERSION="$(git describe --tags --abbrev=0)" # IMAGE_V_VERSION="$(git describe --tags --abbrev=0)"
IMAGE_VERSION=${IMAGE_V_VERSION:1} # IMAGE_VERSION=${IMAGE_V_VERSION:1}
SHORT_SHA1=$(git rev-parse --short HEAD) # SHORT_SHA1=$(git rev-parse --short HEAD)
PLATFORMS="linux/amd64,linux/ppc64le,linux/arm64" # PLATFORMS="linux/amd64,linux/ppc64le,linux/arm64"
echo "Building version ${IMAGE_VERSION} of image ${IMAGE_NAME}" # echo "Building version ${IMAGE_VERSION} of image ${IMAGE_NAME}"
docker buildx build --platform "${PLATFORMS}" . # docker buildx build --platform "${PLATFORMS}" .

19
scripts/generate-man-page-md.sh Executable file
View File

@ -0,0 +1,19 @@
#! /bin/bash
set -e
# note that this reqires pandoc to be installed.
cat ./pkg/yqlib/doc/headers/Main.md > man.md
printf "\n# HOW IT WORKS\n" >> man.md
cat ./pkg/yqlib/doc/aa.md >> man.md
for f in ./pkg/yqlib/doc/*.md; do
docNameWithExt="${f##*/}"
docName="${docNameWithExt%.*}"
docNameCap=$(echo $docName | tr [a-z] [A-Z])
if [ "$docName" != "aa" ]; then
printf "\n\n# ${docNameCap}\n" >> man.md
cat "$f" >> man.md
fi
done

View File

@ -3,26 +3,9 @@ set -e
# note that this reqires pandoc to be installed. # note that this reqires pandoc to be installed.
cat ./pkg/yqlib/doc/headers/Main.md > man.md
printf "\n# HOW IT WORKS\n" >> man.md
cat ./pkg/yqlib/doc/aa.md >> man.md
for f in ./pkg/yqlib/doc/*.md; do
docNameWithExt="${f##*/}"
docName="${docNameWithExt%.*}"
docNameCap=$(echo $docName | tr [a-z] [A-Z])
if [ "$docName" != "aa" ]; then
printf "\n\n# ${docNameCap}\n" >> man.md
cat "$f" >> man.md
fi
done
header=$(./yq --version)
pandoc \ pandoc \
--variable=title:"YQ" \ --variable=title:"YQ" \
--variable=section:"1" \ --variable=section:"1" \
--variable=author:"Mike Farah" \ --variable=author:"Mike Farah" \
--variable=header:"${header}" \ --variable=header:"${MAN_HEADER}" \
--standalone --to man man.md -o build/yq.1 --standalone --to man man.md -o yq.1

View File

@ -6,8 +6,6 @@ set -e
CGO_ENABLED=0 gox -ldflags "${LDFLAGS}" -output="build/yq_{{.OS}}_{{.Arch}}" --osarch="darwin/amd64 darwin/arm64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/s390x netbsd/386 netbsd/amd64 netbsd/arm openbsd/386 openbsd/amd64 windows/386 windows/amd64" CGO_ENABLED=0 gox -ldflags "${LDFLAGS}" -output="build/yq_{{.OS}}_{{.Arch}}" --osarch="darwin/amd64 darwin/arm64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/s390x netbsd/386 netbsd/amd64 netbsd/arm openbsd/386 openbsd/amd64 windows/386 windows/amd64"
./scripts/generate-man-page.sh
cd build cd build
find . -executable -type f | xargs -I {} tar czvf {}.tar.gz {} yq.1 -C ../scripts install-man-page.sh find . -executable -type f | xargs -I {} tar czvf {}.tar.gz {} yq.1 -C ../scripts install-man-page.sh