Documentation
¶
Overview ¶
Package gen generates project files from platformgo.yaml.
It produces the module wiring, their settings and the environment example. This is what removes manual edits when modules are added or removed: only the domain part stays in project code.
Index ¶
- Constants
- func Apply(dir string, files map[string][]byte) ([]string, error)
- func Changed(dir string, files map[string][]byte) ([]string, error)
- func Files(dir string, f *spec.File) (map[string][]byte, error)
- func FilesFrom(f *spec.File, read func(path string) ([]byte, error)) (map[string][]byte, error)
- func IsGenerated(content []byte) bool
- func NewMigration(dir, name string, now time.Time) (string, error)
- func SettingsCode(raw []byte) ([]byte, error)
- func SettingsEnabled(f *spec.File) bool
- func SettingsSchemaPath(f *spec.File) string
- func Wiring(f *spec.File) (map[string][]byte, error)
Constants ¶
const ( BufPath = "buf.yaml" BufGenPath = "buf.gen.yaml" OpenAPIPath = "api/openapi/openapi.gen.go" // APIGenDir is where the Go code of the proto files is generated. APIGenDir = "internal/api/gen" )
Files of the api module.
const ( ConfigPath = "cmd/app/config.gen.go" ModulesPath = "cmd/app/modules.gen.go" EnvPath = ".env.example" ComposePath = "docker-compose.yml" // MigrationsPath embeds the SQL migrations of the project next to them. MigrationsPath = "db/migrations/migrations.gen.go" )
Paths of generated files, relative to the project root.
const MigrationsDir = "db/migrations"
MigrationsDir is where the SQL migrations of a project live.
const SettingsExample = `` /* 354-byte string literal not displayed */
SettingsExample is the schema a project starts from when it enables the settings module: an empty schema would leave an accessor with nothing to return.
const SettingsModule = "settings"
SettingsModule is the module name whose schema drives the generation.
const SettingsPath = "internal/settings/settings.gen.go"
SettingsPath is the generated typed access to the business settings. It lives in the project so that domain code reads a setting as a method call rather than a string key.
const SqlcPath = "db/sqlc.yaml"
SqlcPath is the sqlc configuration of the project. It is generated, so the paths and type mapping stay the same in every project.
Variables ¶
This section is empty.
Functions ¶
func Apply ¶
Apply writes the generated files that differ from what the project has and returns their paths. Untouched files keep their modification time, so a build that runs generation first does not rebuild everything.
func Changed ¶
Changed returns the paths whose content in the project differs from the generated one. An empty list means generation is up to date.
func Files ¶
Files returns everything platformgo generates for the project: the module wiring and, when the settings module is enabled, the typed access to the business settings.
The schema is read from the project directory, so the generated code always matches the file a developer just edited.
func FilesFrom ¶ added in v0.2.0
FilesFrom is Files with the project files read through read. apply uses it to generate from files it is about to create, before they are on disk.
func IsGenerated ¶ added in v0.2.0
IsGenerated reports whether content carries the mark platformgo puts on the files it generates. A generated file that lost the mark has been taken over by hand, and apply leaves it alone.
func NewMigration ¶ added in v0.2.0
NewMigration creates an empty goose migration named after the time and the given name and returns its path relative to the project. The timestamp keeps files ordered and avoids number clashes between branches.
func SettingsCode ¶
SettingsCode generates the typed access from the schema file contents.
func SettingsEnabled ¶
SettingsEnabled reports whether the project enables the settings module.
func SettingsSchemaPath ¶
SettingsSchemaPath is the schema file of the project: settings.yaml unless the module section names another one.
Types ¶
This section is empty.