di

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrContainerNotFound = errors.New("container not found")
	ErrUnexpectedType    = errors.New("unexpected type")
	ErrNotSupported      = errors.New("not supported")
	ErrParsing           = errors.New("parsing error")
	ErrFileAlreadyExists = errors.New("file already exists")
	ErrInvalidDefinition = errors.New("invalid definition")
)

Functions

This section is empty.

Types

type ContainerDefinition

type ContainerDefinition struct {
	Name     string
	Type     TypeDefinition
	Services []*ServiceDefinition
}

func (ContainerDefinition) Title

func (c ContainerDefinition) Title() string

type FactoriesManager added in v0.1.0

type FactoriesManager struct {
	// contains filtered or unexported fields
}

func NewFactoriesManager added in v0.1.0

func NewFactoriesManager(
	container *RootContainerDefinition,
	workDir string,
	params GenerationParameters,
) *FactoriesManager

func (*FactoriesManager) Generate added in v0.1.0

func (m *FactoriesManager) Generate() ([]*File, error)

type FactoryFile

type FactoryFile struct {
	Imports  map[string]*ImportDefinition
	Services []string
}

func ParseFactoryFromSource

func ParseFactoryFromSource(source string) (*FactoryFile, error)

type File

type File struct {
	Package PackageType
	Name    string
	Content []byte
}

func GenerateDefinitionsContainerFile added in v0.1.0

func GenerateDefinitionsContainerFile() (*File, error)

func GenerateFiles

func GenerateFiles(container *RootContainerDefinition, params GenerationParameters) ([]*File, error)

func (*File) Path added in v0.1.0

func (f *File) Path() string

type FileBuilder

type FileBuilder struct {
	// contains filtered or unexported fields
}

func NewFileBuilder

func NewFileBuilder(filename, packageName string, packageType PackageType) *FileBuilder

func (*FileBuilder) AddImport

func (b *FileBuilder) AddImport(imp string)

func (*FileBuilder) GetFile

func (b *FileBuilder) GetFile() *File

func (*FileBuilder) IsEmpty

func (b *FileBuilder) IsEmpty() bool

func (*FileBuilder) Write

func (b *FileBuilder) Write(p []byte) (n int, err error)

func (*FileBuilder) WriteString

func (b *FileBuilder) WriteString(s string) (n int, err error)

type GenerationParameters

type GenerationParameters struct {
	RootPackage string
}

type Generator

type Generator struct {
	BaseDir    string
	ModulePath string
	Logger     Logger

	Version   string
	BuildTime string
}

func (*Generator) Generate

func (g *Generator) Generate() error

func (*Generator) Initialize

func (g *Generator) Initialize() error

func (*Generator) RootPackage

func (g *Generator) RootPackage() string

type ImportDefinition

type ImportDefinition struct {
	ID   string
	Name string
	Path string
}

func (ImportDefinition) String

func (d ImportDefinition) String() string

type InternalContainerGenerator added in v0.1.0

type InternalContainerGenerator struct {
	// contains filtered or unexported fields
}

func NewInternalContainerGenerator added in v0.1.0

func NewInternalContainerGenerator(container *RootContainerDefinition, params GenerationParameters) *InternalContainerGenerator

func (*InternalContainerGenerator) Generate added in v0.1.0

func (g *InternalContainerGenerator) Generate() (*File, error)

type Logger

type Logger interface {
	Info(a ...interface{})
	Success(a ...interface{})
	Warning(a ...interface{})
}

type PackageType

type PackageType int
const (
	PublicPackage PackageType
	InternalPackage
	DefinitionsPackage
	FactoriesPackage
	LookupPackage
)

type PublicContainerGenerator

type PublicContainerGenerator struct {
	// contains filtered or unexported fields
}

func NewPublicContainerGenerator

func NewPublicContainerGenerator(
	container *RootContainerDefinition,
	params GenerationParameters,
) *PublicContainerGenerator

func (*PublicContainerGenerator) Generate

func (g *PublicContainerGenerator) Generate() (*File, error)

type RootContainerDefinition

type RootContainerDefinition struct {
	Name       string
	Package    string
	Imports    map[string]*ImportDefinition
	Services   []*ServiceDefinition
	Containers []*ContainerDefinition
}

func ParseContainerFromSource

func ParseContainerFromSource(source string) (*RootContainerDefinition, error)

func ParseDefinitionsFromFile added in v0.1.0

func ParseDefinitionsFromFile(filename string) (*RootContainerDefinition, error)

func (RootContainerDefinition) GetImport

type ServiceDefinition

type ServiceDefinition struct {
	Prefix string
	Name   string
	Type   TypeDefinition

	FactoryFileName string // "factory-file" tag
	HasSetter       bool   // "set" tag - will generate setters for internal and public containers
	HasCloser       bool   // "close" tag - generate closer method call
	IsRequired      bool   // "required" tag - will generate argument for public container constructor
	IsPublic        bool   // "public" tag - will generate getter for public container
	IsExternal      bool   // "external" tag - no definition, panic if empty, force public setter
}

func (ServiceDefinition) Title

func (s ServiceDefinition) Title() string

type Tags

type Tags struct {
	Options         []string
	FactoryFilename string
}

type TypeDefinition

type TypeDefinition struct {
	IsPointer bool
	Package   string
	Name      string
}

func (TypeDefinition) String

func (d TypeDefinition) String() string

type Writer

type Writer struct {
	WorkDir   string
	Overwrite bool
	Heading   []byte
}

func NewWriter

func NewWriter(workDir string) *Writer

func (*Writer) WriteFile

func (w *Writer) WriteFile(file *File) error

Jump to

Keyboard shortcuts

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