Documentation
¶
Overview ¶
Package template is used to create files from template file systems
Index ¶
- type FileGenerator
- func Contents(contents []byte) FileGenerator
- func ContentsFrom(r io.Reader) FileGenerator
- func ContentsJSON(v any) FileGenerator
- func ContentsMarshal(v any, m MarshalWriter) FileGenerator
- func ContentsString(contents string) FileGenerator
- func Exec(name string, arg ...string) FileGenerator
- func Gofmt() FileGenerator
- func OriginalContents() FileGenerator
- func Template(tt *tt.Template, namedata ...any) FileGenerator
- func Touch() FileGenerator
- type FileGeneratorFunc
- type FileMode
- type Generator
- type GeneratorFunc
- type MarshalWriter
- type Option
- type OutputContext
- func (c *OutputContext) Chmod(name string, mode fs.FileMode) error
- func (c *OutputContext) Chown(name string, uid, gid int) error
- func (c *OutputContext) Chtimes(name string, atime time.Time, mtime time.Time) error
- func (c *OutputContext) Create(name string) (fs.File, error)
- func (c *OutputContext) Do(ctx context.Context, gens ...Generator) error
- func (c *OutputContext) Exists(name string) bool
- func (c *OutputContext) File(name string) string
- func (c *OutputContext) Mkdir(name string, perm fs.FileMode) error
- func (c *OutputContext) MkdirAll(path string, perm fs.FileMode) error
- func (c *OutputContext) Open(name string) (fs.File, error)
- func (c *OutputContext) OpenContext(ctx context.Context, name string) (fs.File, error)
- func (c *OutputContext) OpenFile(name string, flag int, perm fs.FileMode) (fs.File, error)
- func (c *OutputContext) PopDir() error
- func (c *OutputContext) PushDir(name string) error
- func (c *OutputContext) Remove(name string) error
- func (c *OutputContext) RemoveAll(path string) error
- func (c *OutputContext) Rename(oldpath, newpath string) error
- func (c *OutputContext) SetData(name string, value any)
- func (c *OutputContext) Stat(name string) (fs.FileInfo, error)
- func (c *OutputContext) WorkDir() string
- type Root
- type Sequence
- type Vars
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FileGenerator ¶
type FileGenerator interface {
GenerateFile(ctx context.Context, c *OutputContext, name string) error
}
func Contents ¶
func Contents(contents []byte) FileGenerator
Contents generates a file with the given contents, which are copied to the output file of the given name.
func ContentsFrom ¶ added in v0.18.0
func ContentsFrom(r io.Reader) FileGenerator
ContentsFrom generates a file whose contents are read from the given reader.
func ContentsJSON ¶ added in v0.18.0
func ContentsJSON(v any) FileGenerator
ContentsJSON generates a file whose contents are the JSON encoding of the given value.
func ContentsMarshal ¶ added in v0.18.0
func ContentsMarshal(v any, m MarshalWriter) FileGenerator
ContentsMarshal generates a file whose contents are the encoding of the given value produced by the MarshalWriter.
func ContentsString ¶ added in v0.18.0
func ContentsString(contents string) FileGenerator
ContentsString generates a file whose contents are the given string.
func Exec ¶ added in v0.15.0
func Exec(name string, arg ...string) FileGenerator
Exec generates a file by piping the existing file contents through a subprocess. The subprocess receives the current file contents on stdin, and its stdout becomes the new file contents.
func Gofmt ¶
func Gofmt() FileGenerator
func OriginalContents ¶ added in v0.15.0
func OriginalContents() FileGenerator
OriginalContents is a FileGenerator sentinel. When used inside WithFileGenerator, it is replaced with the file's contents from the source file system, allowing other generators in the chain to operate on them. For example:
FS(fsys, WithFileGenerator("*.go", OriginalContents(), Gofmt()))
type FileGeneratorFunc ¶
type FileGeneratorFunc func(context.Context, *OutputContext, string) error
func (FileGeneratorFunc) GenerateFile ¶
func (f FileGeneratorFunc) GenerateFile(ctx context.Context, c *OutputContext, name string) error
type FileMode ¶
FileMode provides a step that applies the file mode to the file or directory
func (FileMode) Generate ¶ added in v0.21.0
func (m FileMode) Generate(_ context.Context, c *OutputContext) error
func (FileMode) GenerateFile ¶
type Generator ¶
type Generator interface {
Generate(ctx context.Context, c *OutputContext) error
}
Generator is the interface for generating files.
func FS ¶ added in v0.15.0
FS creates a generator that walks the given file system and reproduces its files and directories in the output. By default each file is copied as-is. Options may override this behavior for files whose names match a glob pattern.
func File ¶
func File(name string, ops ...FileGenerator) Generator
File generates a file with the given operations
type GeneratorFunc ¶ added in v0.21.0
type GeneratorFunc func(_ context.Context, c *OutputContext) error
GeneratorFunc provides a function that can be used as a generator
func (GeneratorFunc) Generate ¶ added in v0.21.0
func (f GeneratorFunc) Generate(ctx context.Context, c *OutputContext) error
type MarshalWriter ¶ added in v0.18.0
MarshalWriter is used by ContentsMarshal to encode a value into file contents.
type Option ¶ added in v0.15.0
type Option interface {
// contains filtered or unexported methods
}
Option configures the behavior of the FS generator.
func WithFileGenerator ¶ added in v0.15.0
func WithFileGenerator(filename string, gen ...FileGenerator) Option
WithFileGenerator overrides the default copy behavior for files whose name matches the given glob pattern. Any OriginalContents generator in gen is replaced with the actual file contents from the source file system.
type OutputContext ¶
type OutputContext struct {
Vars map[string]any
Overwrite bool
DryRun bool
MakeDirs bool
FS cli.FS
// contains filtered or unexported fields
}
func (*OutputContext) Exists ¶
func (c *OutputContext) Exists(name string) bool
func (*OutputContext) File ¶
func (c *OutputContext) File(name string) string
func (*OutputContext) MkdirAll ¶
func (c *OutputContext) MkdirAll(path string, perm fs.FileMode) error
func (*OutputContext) OpenContext ¶
func (*OutputContext) PopDir ¶
func (c *OutputContext) PopDir() error
func (*OutputContext) PushDir ¶
func (c *OutputContext) PushDir(name string) error
func (*OutputContext) Remove ¶
func (c *OutputContext) Remove(name string) error
func (*OutputContext) RemoveAll ¶
func (c *OutputContext) RemoveAll(path string) error
func (*OutputContext) Rename ¶
func (c *OutputContext) Rename(oldpath, newpath string) error
func (*OutputContext) SetData ¶
func (c *OutputContext) SetData(name string, value any)
func (*OutputContext) WorkDir ¶
func (c *OutputContext) WorkDir() string
WorkDir is the path to the working directory
type Root ¶
type Root struct {
// Action provides the action for when the Root value is added to
// a pipeline.
cli.Action
Generator Generator
Overwrite bool
DryRun bool
Path string
// MakeDirs controls whether to implicitly create directories.
// It is set to true by default by [New]. When set to false, the
// [Dir] generator becomes a container only and does not create directories.
// To ensure a directory exists, add a FileMode, usually FileMode(0755),
// as the first generator argument.
MakeDirs bool
}
Root is the root of a template, used to compose a sequence and configuration. You typically create an instance using the New function, which in addition to specifying the generator you want, sets up the default action for the template when it runs in the pipeline, which is to register the flags and run Generate at the action timing.
func New ¶
New creates a new template using the given sequence of generators. Directories will automatically be created by default because MakeDirs will also be set to true. The Action will be set to the default action, which registers the flags if used as an initializer and invokes the generator in the action timing.
func (*Root) DryRunFlag ¶
DryRunFlag obtains a conventions-based flag for overwriting
func (*Root) OverwriteFlag ¶
OverwriteFlag obtains a conventions-based flag for overwriting