🛜

sallyを触ってみた

2023/12/17に公開

sally とは

uber が作成した HTTP サービスを簡単に提供できるツール。
https://github.com/uber-go/sally

試してみた

とりあえず REAMDME を見ながら進めてみます。
ちなみに、README に Docker イメージのリンクが貼ってありますが、404 になってます、、、
https://github.com/uber-go/sally/issues/124

  1. まず sally を install しましょう。
$ go install go.uber.org/sally@latest
  1. 以下のような sally.yaml を作成します。
# Configures documentation linking.
# Optional.
godoc:
  # Host for the Go documentation server.
  # Defaults to pkg.go.dev.
  host: pkg.go.dev

# Base URL for your package site.
# If you want your modules available under "example.com",
# specify example.com here.
# This field is required.
url: go.uber.org

# Collection of packages under example.com
# and their Git repositories.
packages:
  # The key is the name of the package following the base URL.
  # For example, if you want to make a package available at
  # "example.com/foo", you'd specify "foo" here.
  zap:
    # Path to the Git repository.
    #
    # This field is required.
    repo: github.com/uber-go/zap

    # Optional description of the package.
    description: A fast, structured-logging library.

    # Alternative base URL instead of the value configured at the top-level.
    # This is useful if the same sally instance is
    # hosted behind multiple base URLs.
    #
    # Defaults to the value of the top-level url field.
    url: example.com
  1. sally を起動します
$ sally

起動ができたら、localhost:8080 で確認してみましょう 🎉

カスタムテンプレートについて

README を読むとカスタムテンプレートをサポートしているようです。

Custom Templates
You can provide your own custom templates. For this, create a directory with .html templates and provide it via the -templates flag. You only need to provide the templates you want to override. See templates for the available templates.

カスタムレスポンスの yaml で指定できるのは、実装見ると以下の通りでした。

// PackageConfig is the configuration for a single Go module
// that is served by Sally.
type PackageConfig struct {
	// Repo is the URL to the Git repository for the module
	// without the https:// prefix.
	// This URL must serve the Git HTTPS protocol.
	//
	// For example, "github.com/uber-go/sally".
	Repo string `yaml:"repo"` // required

	// URL is the base URL of the vanity import for this module.
	//
	// Defaults to the URL specified in the top-level config.
	URL string `yaml:"url"`

	// VCS is the version control system of this module.
	//
	// Defaults to git.
	VCS string `yaml:"vcs"`

	// Desc is a plain text description of this module.
	Desc string `yaml:"description"`
}

感想

sally に触ってみた感想としては、まだ自由度が低いですが、
HTML のテンプレートに埋め込んで表示できるのは良さそうですね。

Discussion