gen

package
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2022 License: BSD-3-Clause Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Sep1 signifies the start of a conflict.
	Sep1 = "<<<<<<<"
	// Sep2 signifies the middle of a conflict.
	Sep2 = "======="
	// Sep3 signifies the end of a conflict.
	Sep3 = ">>>>>>>"
)
View Source
const CUE_VENDOR_DIR = "./cue.mod/pkg/"
View Source
const SHADOW_DIR = ".hof/shadow/"

Variables

View Source
var DiffMatchPatch = diffmatchpatch.New()

DiffMatchPatch contains the diff algorithm settings.

Functions

func DoWatch

func DoWatch(F func(fast bool) (chan bool, error), dofast, onfirst bool, files []string, label string, quit chan bool) error

func Gen

func Gen(args []string, rootflags flags.RootPflagpole, cmdflags flags.GenFlagpole) error

func InitModule

func InitModule(args []string, rootflags flags.RootPflagpole, cmdflags flags.GenFlagpole) error

func LoadShadow

func LoadShadow(subdir string, verbosity int) (map[string]*File, error)

func Merge

func Merge(textO, textA, textB string) string

Merge implements the diff3 algorithm to merge two texts into a common base.

func NewDebouncer

func NewDebouncer(after time.Duration) func(f func())

Types

type AdhocTemplateConfig

type AdhocTemplateConfig struct {
	// Template filepath
	Filepath string

	// CUE path to input value within global value
	Cuepath string

	// CUE path to schema value within global value
	Schema string

	// Filepath to write results, possibly templated
	Outpath string

	// Is this a repeated template
	Repeated bool
}

parsed version of the --template flag semicolon separated: <filepath>:<?cuepath>@<schema>;[]<?outpath> each extra section is

type File

type File struct {
	// Input Data, local to this file
	In interface{}

	// The full path under the output location
	// empty implies don't generate, even though it may endup in the list
	Filepath string

	// Template parameters (only one should be set at a time i.e. != "")
	TemplateContent string // The content, takes precedence over next option
	TemplatePath    string // Named template
	DatafileFormat  string // Data format file

	// Template delimiters
	TemplateDelims *templates.Delims

	// CUE value for datafiles
	// (we use a different name here so that it does not automatically try to decode, which would require concreteness)
	Value cue.Value

	// Template Instance Pointer
	//   If local, this will be created when the template content is laoded
	//   If a named template, acutal template lives in the generator and is created at folder import time
	TemplateInstance *templates.Template

	// Content
	RenderContent []byte
	FinalContent  []byte

	// Shadow related
	ShadowFile *File
	UserFile   *File

	DoWrite bool

	// Bookkeeping
	Errors []error
	FileStats
}

func (*File) FormatRendered

func (F *File) FormatRendered() error

func (*File) ReadUser

func (F *File) ReadUser(outdir string) error

read the file contents relative to the output dir

func (*File) Render

func (F *File) Render(outdir string, UseDiff3 bool) error

func (*File) RenderData

func (F *File) RenderData() (err error)

func (*File) RenderTemplate

func (F *File) RenderTemplate() (err error)

func (*File) UnifyContent

func (F *File) UnifyContent(UseDiff3 bool) (write bool, err error)

func (*File) WriteOutput

func (F *File) WriteOutput(basedir string) error

func (*File) WriteShadow

func (F *File) WriteShadow(basedir string) error

type FileStats

type FileStats struct {
	// using 0 (false) and 1 (true) for easier summation code below
	IsNew     int
	IsSame    int
	IsSkipped int
	IsWritten int
	IsErr     int

	IsModified       int
	IsModifiedRender int
	IsModifiedOutput int
	IsModifiedDiff3  int
	IsConflicted     int

	RenderingTime time.Duration
	CompareTime   time.Duration
	TotalTime     time.Duration
}

type Generator

type Generator struct {
	//
	// Set by Hof via cuelang extraction
	// Label in Cuelang
	Name string

	// Base directory for output
	Outdir string

	// "Global" input, merged with out replacing onto the files
	In  map[string]interface{}
	Val cue.Value

	// File globs to watch and trigger regen on change
	WatchFull []string
	WatchFast []string

	// The list fo files for hof to generate, in cue values
	Out []*File

	Templates []*TemplateGlobs
	Partials  []*TemplateGlobs

	// Filepath globs for static files to load
	Statics []*StaticGlobs

	// The following will be automatically added to the template context
	// under its name for reference in GenFiles  and partials in templates
	EmbeddedTemplates map[string]*TemplateContent
	EmbeddedPartials  map[string]*TemplateContent

	// Static files are available for pure cue generators that want to have static files
	// These should be named by their filepath, but be the content of the file
	EmbeddedStatics map[string]string

	// Subgenerators for composition
	Generators map[string]*Generator

	// Used for indexing into the vendor directory...
	PackageName string

	// Use Diff3 & Shadow
	UseDiff3 bool

	// Disabled? we do this when looking at expressions and optimizing
	// TODO, make this field available in cuelang?
	Disabled bool

	// Template System Cache
	TemplateMap templates.TemplateMap
	PartialsMap templates.TemplateMap

	// Files and the shadow dir for doing neat things
	OrderedFiles []*File
	Files        map[string]*File
	Shadow       map[string]*File

	// Print extra information
	Debug bool

	// Status for this generator and processing
	Stats *GeneratorStats

	// Cuelang related, also set externally
	CueValue cue.Value
}

A generator pulled from the cue instances

func NewGenerator

func NewGenerator(label string, value cue.Value) *Generator

func (*Generator) GenerateFiles

func (G *Generator) GenerateFiles(outdir string) []error

func (*Generator) Initialize

func (G *Generator) Initialize() []error

func (*Generator) LoadCue

func (G *Generator) LoadCue() (errs []error)

func (*Generator) ResolveFile

func (G *Generator) ResolveFile(F *File) error

type GeneratorStats

type GeneratorStats struct {
	NumNew     int
	NumSame    int
	NumSkipped int
	NumDeleted int
	NumWritten int
	NumStatic  int
	NumErr     int
	TotalFiles int

	NumModified       int
	NumModifiedRender int
	NumModifiedOutput int
	NumModifiedDiff3  int
	NumConflicted     int

	LoadingTime   time.Duration
	RenderingTime time.Duration
	WritingTime   time.Duration
	TotalTime     time.Duration
}

func (*GeneratorStats) CalcTotals

func (S *GeneratorStats) CalcTotals(G *Generator) error

func (*GeneratorStats) String

func (S *GeneratorStats) String() string

type Runtime

type Runtime struct {
	sync.Mutex

	// Setup options
	Entrypoints []string
	Flagpole    flags.GenFlagpole

	Verbosity int

	// Cue ralated
	CueRuntime *cuetils.CueRuntime

	// Hof related
	Generators map[string]*Generator
	Stats      *RuntimeStats
	// contains filtered or unexported fields
}

func NewRuntime

func NewRuntime(entrypoints []string, cmdflags flags.GenFlagpole) *Runtime

func (*Runtime) AsModule

func (R *Runtime) AsModule() error

func (*Runtime) ClearGenerators

func (R *Runtime) ClearGenerators()

func (*Runtime) CreateAdhocGenerator

func (R *Runtime) CreateAdhocGenerator() error

func (*Runtime) ExtractGenerators

func (R *Runtime) ExtractGenerators() error

func (*Runtime) ListGenerators

func (R *Runtime) ListGenerators() (gens []string, err error)

func (*Runtime) LoadCue

func (R *Runtime) LoadCue() (err error)

func (*Runtime) LoadGenerators

func (R *Runtime) LoadGenerators() []error

func (*Runtime) PrintMergeConflicts

func (R *Runtime) PrintMergeConflicts()

func (*Runtime) PrintStats

func (R *Runtime) PrintStats()

func (*Runtime) Reload

func (R *Runtime) Reload(fast bool) error

func (*Runtime) RunGenerator

func (R *Runtime) RunGenerator(G *Generator) (errs []error)

func (*Runtime) RunGenerators

func (R *Runtime) RunGenerators() []error

func (*Runtime) WriteGenerator

func (R *Runtime) WriteGenerator(G *Generator) (errs []error)

func (*Runtime) WriteOutput

func (R *Runtime) WriteOutput() []error

type RuntimeStats

type RuntimeStats struct {
	CueLoadingTime time.Duration
	GenLoadingTime time.Duration
	GenRunningTime time.Duration
}

func (*RuntimeStats) String

func (S *RuntimeStats) String() string

type StaticGlobs

type StaticGlobs struct {
	// Globs to load
	Globs []string
	// Prefix to trim
	TrimPrefix string
	// Prefix to add before output
	OutPrefix string
}

type TemplateContent

type TemplateContent struct {
	Content string
	Delims  *templates.Delims
}

type TemplateGlobs

type TemplateGlobs struct {
	// Globs to load
	Globs []string
	// Prefix to trim
	TrimPrefix string
	// Custom delims
	Delims *templates.Delims
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL