Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseAndRun ¶
ParseAndRun parses the environment and runs the command.
Types ¶
type Config ¶
type Config struct {
// ConnStr is the connection string for the database. Environment variables
// in $FOO form will be expanded.
ConnStr string
// The type of DB you're connecting to. Currently the possible values are
// "postgres" or "mysql".
DBType string
// Schemas holds the names of schemas to generate code for.
Schemas []string
// IncludeTables is a whitelist of tables to generate data for. Tables not
// in this list will not be included in data geenrated by gnorm. You cannot
// set IncludeTables if ExcludeTables is set. By default, tables will be
// included in all schemas. To specify tables for a specific schema only,
// use the schema.tablenmae format.
IncludeTables []string
// ExcludeTables is a blacklist of tables to ignore while generating data.
// All tables in a schema that are not in this list will be used for
// generation. You cannot set ExcludeTables if IncludeTables is set. By
// default, tables will be excluded from all schemas. To specify tables for
// a specific schema only, use the schema.tablenmae format.
ExcludeTables []string
// TemplateEngine, if specified, describes a command line tool to run to
// render your templates, allowing you to use your preferred templating
// engine. If not specified, go's text/template will be used to render.
TemplateEngine struct {
// CommandLine is the command to run to render the template. You may
// pass the following variables to the command line - {{.Data}} the name
// of a .json file containing the gnorm data serialized into json,
// {{.Template}} - the name of the template file being rendered,
// {{.Output}} the target file where output should be written.
// text/template.
CommandLine []string
// If true, the json data will be sent via stdin to the rendering tool.
UseStdin bool
// If true, the output of the tool will be written to the target file.
UseStdout bool
}
// PostRun is a command with arguments that is run after each file is
// generated by GNORM. It is generally used to reformat the file, but it
// can be for any use. Environment variables will be expanded, and the
// special $GNORMFILE environment variable may be used, which will expand to
// the name of the file that was just generated.
PostRun []string
// NameConversion defines how the DBName of tables, schemas, and enums are
// converted into their Name value. This is a template that may use all the
// regular functions. The "." value is the DB name of the item. Thus, to
// make an item's Name the same as its DBName, you'd use a template of
// "{{.}}". To make the Name the PascalCase version of DBName, you'd use
// "{{pascal .}}".
NameConversion string
// TablePaths is a set of "output-path" = "template-path" pairs that tells
// Gnorm how to render and output its table info. Each template will be
// rendered with each table in turn and written out to the given output
// path. If no pairs are specified, tables will not be rendered.
//
// The table path may be a template, in which case the values .Schema and
// .Table may be referenced, containing the name of the current schema and
// table being rendered. For example,
// "{{.Schema}}/{{.Table}}/{{.Table}}.go" = "tables.gotmpl" would render
// tables.gotmpl template with data from the the "public.users" table to
// ./public/users/users.go.
TablePaths map[string]string
// SchemaPaths is a set of "output-path" = "template-path" pairs that tells
// Gnorm how to render and output its schema info. Each template will be
// rendered with each schema in turn and written out to the given output
// path. If no pairs are specified, schemas will not be rendered.
//
// The schema path may be a template, in which case the value .Schema may be
// referenced, containing the name of the current schema being rendered. For
// example, "schemas/{{.Schema}}/{{.Schema}}.go" = "schemas.gotmpl" would
// render schemas.gotmpl template with the "public" schema and output to
// ./schemas/public/public.go
SchemaPaths map[string]string
// EnumPaths is a set of "output-path" = "template-path" pairs that tells
// Gnorm how to render and output its enum info. Each template will be
// rendered with each enum in turn and written out to the given output path.
// If no pairs are specified, enums will not be rendered.
//
// The enum path may be a template, in which case the values .Schema and
// .Enum may be referenced, containing the name of the current schema and
// Enum being rendered. For example, "gnorm/{{.Schema}}/enums/{{.Enum}}.go"
// = "enums.gotmpl" would render the enums.gotmpl template with data from
// the "public.book_type" enum to ./gnorm/public/enums/users.go.
EnumPaths map[string]string
// TypeMap is a mapping of database type names to replacement type names
// (generally types from your language for deserialization). Types not in
// this list will remain in their database form. In the data sent to your
// template, this is the Column.Type, and the original type is in
// Column.OrigType. Note that because of the way tables in TOML work,
// TypeMap and NullableTypeMap must be at the end of your configuration
// file.
TypeMap map[string]string
// NullableTypeMap is a mapping of database type names to replacement type
// names (generally types from your language for deserialization)
// specifically for database columns that are nullable. Types not in this
// list will remain in their database form. In the data sent to your
// template, this is the Column.Type, and the original type is in
// Column.OrigType. Note that because of the way tables in TOML work,
// TypeMap and NullableTypeMap must be at the end of your configuration
// file.
NullableTypeMap map[string]string
// Params contains any data you may want to pass to your templates. This is
// a good way to make templates reusable with different configuration values
// for different situations. The values in this field will be available in
// the .Params value for all templates.
Params map[string]interface{}
// PluginDirs a list of paths that will be used for finding plugins. The
// list will be traversed in order, looking for a specifically named plugin.
// The first plugin that is found will be the one used.
PluginDirs []string
// OutputDir is the directory relative to the project root (where the
// gnorm.toml file is located) in which all the generated files are written
// to.
//
// This defaults to the current working directory i.e the directory in which
// gnorm.toml is found.
OutputDir string
// StaticDir is the directory relative to the project root (where the
// gnorm.toml file is located) in which all static files , which are
// intended to be copied to the OutputDir are found.
//
// The directory structure is preserved when copying the files to the
// OutputDir
StaticDir string
// NoOverwriteGlobs is a list of globs
// (https://golang.org/pkg/path/filepath/#Match). If a filename matches a glob
// *and* a file exists with that name, it will not be generated.
NoOverwriteGlobs []string
}
Config holds the schema that is expected to exist in the gnorm.toml file.
Click to show internal directories.
Click to hide internal directories.