You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
buildx/vendor/github.com/docker/cli-docs-tool
CrazyMax 8a12884814
Fix flags usage markdown output
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
3 years ago
..
.dockerignore Generate YAML doc 3 years ago
.gitignore Generate YAML doc 3 years ago
LICENSE Generate YAML doc 3 years ago
README.md Generate YAML doc 3 years ago
clidocstool.go Generate YAML doc 3 years ago
clidocstool_md.go Fix flags usage markdown output 3 years ago
clidocstool_yaml.go Generate YAML doc 3 years ago
docker-bake.hcl Generate YAML doc 3 years ago
go.mod Fix flags usage markdown output 3 years ago
go.sum Fix flags usage markdown output 3 years ago
markdown.go Generate YAML doc 3 years ago

README.md

PkgGoDev Test Status Go Report Card

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