Feature/manpages (#136)

* manpage support

* Polish up man work

* Set DisableAutoGenTag=true for all commands

* Set DisableAutoGenTag=true for root cmd

* CHANGELOG
This commit is contained in:
Neil O'Toole 2022-12-29 19:02:10 -07:00 committed by GitHub
parent a08a3b5997
commit d9693bde17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 79 additions and 8 deletions

1
.gitignore vendored
View File

@ -49,3 +49,4 @@ yum-install.sh
goreleaser-test.sh
/.vscode
/completions
/manpages

View File

@ -2,6 +2,7 @@ before:
hooks:
- go mod tidy
- ./.completions.sh
- ./.manpages.sh
builds:
- builder: prebuilt
@ -34,6 +35,7 @@ archives:
- LICENSE
- CHANGELOG.md
- completions/*
- manpages/*
checksum:
name_template: 'checksums.txt'
@ -67,6 +69,7 @@ brews:
bash_completion.install "completions/sq.bash" => "sq"
zsh_completion.install "completions/sq.zsh" => "_sq"
fish_completion.install "completions/sq.fish"
man1.install "manpages/sq.1.gz"
test: |
system "#{bin}/sq --version"
@ -107,12 +110,15 @@ nfpms:
dst: /usr/share/zsh/vendor-completions/_sq
file_info:
mode: 0644
- src: ./manpages/sq.1.gz
dst: /usr/share/man/man1/sq.1.gz
file_info:
mode: 0644
furies:
# Upload deb and rpm to fury.io. Requires that envar $FURY_TOKEN be set.
- account: neilotoole
# .goreleaser.yaml
aurs:
-
# The package name.
@ -226,14 +232,15 @@ aurs:
mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
#install -Dm644 "./completions/sq.bash" "${pkgdir}/usr/share/bash-completion/completions/sq"
#install -Dm644 "./completions/sq.zsh" "${pkgdir}/usr/share/zsh/site-functions/_sq"
#install -Dm644 "./completions/sq.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/sq.fish"
install -Dm644 "./completions/sq.bash" "${pkgdir}/usr/share/bash-completion/completions/sq"
install -Dm644 "./completions/sq.zsh" "${pkgdir}/usr/share/zsh/site-functions/_sq"
install -Dm644 "./completions/sq.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/sq.fish"
# docs
mkdir -p "${pkgdir}/usr/share/doc/sq"
install -Dm644 "./README.md" "${pkgdir}/usr/share/doc/sq/README.md"
#install -Dm644 "./manpages/mybin.1.gz" "${pkgdir}/usr/share/man/man1/mybin.1.gz"
mkdir -p "${pkgdir}/usr/share/man/man1"
install -Dm644 "./manpages/sq.1.gz" "${pkgdir}/usr/share/man/man1/sq.1.gz"
# Git author used to commit to the repository.
# Defaults are shown below.

6
.manpages.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/sh
# This script generates man pages.
set -e
rm -rf manpages
mkdir manpages
go run . man | gzip -c -9 >manpages/sq.1.gz

View File

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v0.20.0] - 2022-12-29
### Added
- `sq` now generates manpages (and installs them).
## [v0.19.0] - 2022-12-29
### Added
@ -86,6 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [#89]: Bug with SQL generated for joins.
[v0.19.0]: https://github.com/neilotoole/sq/compare/v0.19.0...v0.20.0
[v0.19.0]: https://github.com/neilotoole/sq/compare/v0.18.2...v0.19.0
[v0.18.2]: https://github.com/neilotoole/sq/compare/v0.18.0...v0.18.2
[v0.18.0]: https://github.com/neilotoole/sq/compare/v0.17.0...v0.18.0

View File

@ -190,6 +190,7 @@ func newCommandTree(rc *RunContext) (rootCmd *cobra.Command) {
defer cobraMu.Unlock()
rootCmd = newRootCmd()
rootCmd.DisableAutoGenTag = true
rootCmd.SetOut(rc.Out)
rootCmd.SetErr(rc.ErrOut)
rootCmd.Flags().SortFlags = false
@ -234,6 +235,7 @@ func newCommandTree(rc *RunContext) (rootCmd *cobra.Command) {
addCmd(rc, tblCmd, newTblDropCmd())
addCmd(rc, rootCmd, newCompletionCmd())
addCmd(rc, rootCmd, newManCmd())
return rootCmd
}
@ -259,6 +261,8 @@ func addCmd(rc *RunContext, parentCmd, cmd *cobra.Command) *cobra.Command {
cmd.Flags().Bool(flagHelp, false, "help for "+cmd.Name())
}
cmd.DisableAutoGenTag = true
cmd.PreRunE = func(cmd *cobra.Command, args []string) error {
rc.Cmd = cmd
rc.Args = args

34
cli/cmd_man.go Normal file
View File

@ -0,0 +1,34 @@
package cli
import (
"fmt"
mcobra "github.com/muesli/mango-cobra"
"github.com/muesli/roff"
"github.com/spf13/cobra"
)
func newManCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "man",
Short: "Generate man pages",
SilenceUsage: true,
DisableFlagsInUseLine: true,
Hidden: true,
Args: cobra.NoArgs,
RunE: execGenerateMan,
}
return cmd
}
func execGenerateMan(cmd *cobra.Command, args []string) error {
rc := RunContextFrom(cmd.Context())
manPage, err := mcobra.NewManPage(1, cmd.Root())
if err != nil {
return err
}
_, err = fmt.Fprint(rc.Out, manPage.Build(roff.NewDocument()))
return err
}

8
go.mod
View File

@ -43,11 +43,17 @@ require (
replace github.com/docker/docker => github.com/docker/docker v20.10.3-0.20221013203545-33ab36d6b304+incompatible
require (
github.com/dolmen-go/contextio v0.0.0-20220904134943-e50796217f5f // indirect
github.com/muesli/mango-cobra v1.2.0
github.com/muesli/roff v0.1.0
)
require (
github.com/golang-sql/sqlexp v0.1.0 // indirect
github.com/klauspost/compress v1.11.13 // indirect
github.com/moby/patternmatcher v0.5.0 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/muesli/mango v0.1.0 // indirect
github.com/muesli/mango-pflag v0.1.0 // indirect
github.com/rivo/uniseg v0.4.3 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect
golang.org/x/crypto v0.4.0 // indirect

10
go.sum
View File

@ -48,8 +48,6 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dolmen-go/contextio v0.0.0-20220904134943-e50796217f5f h1:ORMUh1YgoSZoBGaO/i1rGDNeEavjhSnDBQTH9OG8H+o=
github.com/dolmen-go/contextio v0.0.0-20220904134943-e50796217f5f/go.mod h1:cxc20xI7fOgsFHWgt+PenlDDnMcrvh7Ocuj5hEFIdEk=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
@ -194,6 +192,14 @@ github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI=
github.com/muesli/mango v0.1.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
github.com/muesli/mango-cobra v1.2.0 h1:DQvjzAM0PMZr85Iv9LIMaYISpTOliMEg+uMFtNbYvWg=
github.com/muesli/mango-cobra v1.2.0/go.mod h1:vMJL54QytZAJhCT13LPVDfkvCUJ5/4jNUKF/8NC2UjA=
github.com/muesli/mango-pflag v0.1.0 h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe7Sg=
github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0=
github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
github.com/neilotoole/errgroup v0.1.5 h1:DxEGoIfFm5ooGicidR+okiHjoOaGRKFaSxDPVZuuu2I=
github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE=
github.com/neilotoole/lg v0.3.0 h1:2/IESY8l903AeK9nvH3AWVI/p8up+8wmKWIuts7PpxY=