From 12d5d45a7894c3f6b6d598f9447de839d31436ef Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 20 May 2024 19:57:13 +0200 Subject: docs: add comments to default configuration --- internal/config/config.go | 25 ---------------------- internal/config/repository.go | 4 ++-- internal/config/source.go | 17 --------------- internal/config/structs.go | 49 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 44 deletions(-) delete mode 100644 internal/config/source.go create mode 100644 internal/config/structs.go (limited to 'internal') diff --git a/internal/config/config.go b/internal/config/config.go index 9ab7ab5..a0a05eb 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,7 +1,6 @@ package config import ( - "html/template" "log/slog" "maps" "net/url" @@ -94,30 +93,6 @@ func mustLocalTime(in string) (time LocalTime) { return } -type Web struct { - ContentSecurityPolicy CSP - ListenAddress string - Port int - BaseURL URL - SentryDSN string - Environment string - ExtraHeadHTML template.HTML - Headers map[string]string -} - -type Importer struct { - Sources map[string]*Source - Timeout Duration - UpdateAt LocalTime -} - -type Config struct { - DataPath string - LogLevel slog.Level - Web *Web - Importer *Importer -} - var nixpkgs = Repository{ Type: "github", Owner: "NixOS", diff --git a/internal/config/repository.go b/internal/config/repository.go index 957cad4..44d8251 100644 --- a/internal/config/repository.go +++ b/internal/config/repository.go @@ -13,10 +13,10 @@ const ( ) type Repository struct { - Type string `default:"github"` + Type string `toml:"" default:"github" comment:"Currently only 'github' is supported."` Owner string Repo string - Revision string + Revision string `toml:"-"` } func (f RepoType) String() string { diff --git a/internal/config/source.go b/internal/config/source.go deleted file mode 100644 index 15b1aa0..0000000 --- a/internal/config/source.go +++ /dev/null @@ -1,17 +0,0 @@ -package config - -type Source struct { - Name string - Key string - Enable bool - Fetcher Fetcher - Importer ImporterType - Channel string - URL string - Attribute string - ImportPath string - FetchTimeout Duration - ImportTimeout Duration - OutputPath string - Repo Repository -} diff --git a/internal/config/structs.go b/internal/config/structs.go new file mode 100644 index 0000000..4137261 --- /dev/null +++ b/internal/config/structs.go @@ -0,0 +1,49 @@ +//nolint:lll +package config + +// keep config structs here so that lll ignores the long lines (go doesn't support multi-line struct tags) + +import ( + "html/template" + "log/slog" +) + +type Config struct { + DataPath string `comment:"Path to store index data."` + LogLevel slog.Level `comment:"How much information to log, one of 'debug', 'info', 'warn', 'error'."` + Web *Web `comment:"Settings for the web server"` + Importer *Importer `comment:"Settings for the import job"` +} + +type Web struct { + ContentSecurityPolicy CSP `comment:"Content-Security-Policy header to send with requests. Should only need changing if ExtraHeadHTML is used."` + ListenAddress string `comment:"Which address or hostname to listen on. IPv6 addresses need square brackets."` + Port int `comment:"Port number to listen on."` + BaseURL URL `comment:"Absolute URL to this instance, useful if behind a reverse proxy"` + SentryDSN string `comment:"If set, will send server errors to Sentry"` + Environment string `comment:"Affects logging parameters. One of 'development' or 'production'"` + ExtraHeadHTML template.HTML `comment:"Content to add to HTML . Can be used to override styling, add scripts, etc."` + Headers map[string]string `comment:"Extra headers to send with HTTP requests"` +} + +type Importer struct { + Sources map[string]*Source + Timeout Duration `comment:"Abort fetch and import process for all jobs if it takes longer than this value."` + UpdateAt LocalTime `comment:"Local time of day to run fetch/import process"` +} + +type Source struct { + Name string `comment:"Human-readable name of source for generating links"` + Key string `comment:"Machine-readable name of source. Must be URL- and path-safe."` + Enable bool `comment:"Controls whether to show in the web interface and to run fetch/import jobs."` + Fetcher Fetcher `comment:"How to fetch options.json. One of 'channel', 'channel-nixpkgs' or 'download'."` + Importer ImporterType `comment:"Kind of data available from source. Currently supports 'packages' and 'options'."` + Channel string `comment:"(Fetcher=channel) Local name for channel, (Fetcher=channel-nixpkgs) Remote name of channel."` + URL string `comment:"(Fetcher=channel) Remote URL for channel, (Fetcher=download) Path containing files named 'revision' and 'options.json'."` + Attribute string `comment:"(Fetcher=channel) Nix attribute name (i.e. nix-build -A) that builds an {options,packages}.json"` + ImportPath string `comment:"(Fetcher=channel) Sub-path of imported channel which contains the attribute above, e.g. release.nix"` + FetchTimeout Duration `comment:"Abort fetch if it takes longer than this."` + ImportTimeout Duration `comment:"Abort import if it takes longer than this."` + OutputPath string `comment:"(Fetcher=channel) Path under ./result symlink to folder containing {options,packages}.json."` + Repo Repository `comment:"Used to generate declaration/definition links"` +} -- cgit 1.4.1