|  8a12884814 Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com> | 4 years ago | |
|---|---|---|
| .. | ||
| .dockerignore | 4 years ago | |
| .gitignore | 4 years ago | |
| LICENSE | 4 years ago | |
| README.md | 4 years ago | |
| clidocstool.go | 4 years ago | |
| clidocstool_md.go | 4 years ago | |
| clidocstool_yaml.go | 4 years ago | |
| docker-bake.hcl | 4 years ago | |
| go.mod | 4 years ago | |
| go.sum | 4 years ago | |
| markdown.go | 4 years ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	About
This is a library containing utilities to generate (reference) documentation
for the docker CLI on docs.docker.com.
Disclaimer
This library is intended for use by Docker's CLIs, and is not intended to be a general-purpose utility. Various bits are hard-coded or make assumptions that are very specific to our use-case. Contributions are welcome, but we will not accept contributions to make this a general-purpose module.
Usage
To generate the documentation it's recommended to do so using a Go submodule in your repository.
We will use the example of docker/buildx and create a Go submodule in a
docs folder (recommended):
$ mkdir docs
$ cd ./docs
$ go mod init github.com/docker/buildx/docs
$ go get github.com/docker/cli-docs-tool
Your go.mod should look like this:
module github.com/docker/buildx/docs
go 1.16
require (
	github.com/docker/cli-docs-tool v0.0.0
)
Next, create a file named docgen.go inside that directory containing the
following Go code:
package main
import (
  "log"
  "os"
  "path/filepath"
  "github.com/docker/buildx/commands"
  "github.com/docker/cli/cli/command"
  clidocstool "github.com/docker/cli-docs-tool"
  "github.com/spf13/cobra"
)
const sourcePath = "docs/"
func main() {
  log.SetFlags(0)
  dockerCLI, err := command.NewDockerCli()
  if err != nil {
    log.Printf("ERROR: %+v", err)
  }
  cmd := &cobra.Command{
    Use:               "docker [OPTIONS] COMMAND [ARG...]",
    Short:             "The base command for the Docker CLI.",
    DisableAutoGenTag: true,
  }
  cmd.AddCommand(commands.NewRootCmd("buildx", true, dockerCLI))
  clidocstool.DisableFlagsInUseLine(cmd)
  cwd, _ := os.Getwd()
  source := filepath.Join(cwd, sourcePath)
  // Make sure "source" folder is created first
  if err = os.MkdirAll(source, 0755); err != nil {
    log.Printf("ERROR: %+v", err)
  }
  
  // Generate Markdown and YAML documentation to "source" folder
  if err = clidocstool.GenTree(cmd, source); err != nil {
    log.Printf("ERROR: %+v", err)
  }
}
Here we create a new instance of Docker CLI with command.NewDockerCli and a
subcommand commands.NewRootCmd for buildx.
Finally, we generate Markdown and YAML documentation with clidocstool.GenTree.
$ go run main.go
INFO: Generating Markdown for "docker buildx bake"
INFO: Generating Markdown for "docker buildx build"
INFO: Generating Markdown for "docker buildx create"
INFO: Generating Markdown for "docker buildx du"
...
INFO: Generating YAML for "docker buildx uninstall"
INFO: Generating YAML for "docker buildx use"
INFO: Generating YAML for "docker buildx version"
INFO: Generating YAML for "docker buildx"
Generated docs will be available in the ./docs folder of the project.
Contributing
Want to contribute? Awesome! You can find information about contributing to this project in the CONTRIBUTING.md