Documentation ¶
Overview ¶
Package spec defines the specification types for the object api. Any change to the API has direct impact on the user.
Index ¶
- Variables
- func CheckCsvFile(name string) error
- func CheckFile(file string) (*gojsonschema.Result, error)
- func CheckFileAndType(file string, t DocumentType) (*gojsonschema.Result, error)
- func CheckIdlFile(name string) error
- func CheckJson(t DocumentType, jsonDoc []byte) (*gojsonschema.Result, error)
- func CheckNdjsonFile(name string) error
- func DocumentTypeFromFileName(fn string) (string, error)
- func FeatureRulesToStringMap(features []*FeatureRule) map[string]bool
- func FeatureRulesToStrings(features []*FeatureRule) []string
- func JsonToYaml(data []byte) ([]byte, error)
- func LoadSchema(t DocumentType) (gojsonschema.JSONLoader, error)
- func YamlToJson(data []byte) ([]byte, error)
- type ActionEntry
- type ActionListEntry
- type DocumentRule
- type DocumentType
- type FeatureRule
- type InterfaceEntry
- type RulesDoc
- type ScenarioDoc
- type ScopeRule
- type ScopeType
- type SequenceEntry
- type SolutionDoc
- type SolutionLayer
- func (l *SolutionLayer) Compute(rootDir string) error
- func (l *SolutionLayer) ComputeDependencies(rootDir string) []string
- func (l *SolutionLayer) ComputeExpandedInputs(rootDir string) []string
- func (l *SolutionLayer) GetOutputDir(rootDir string) string
- func (l *SolutionLayer) GetRulesFile(rootDir string) string
- func (l *SolutionLayer) GetTemplatesDir(rootDir string) string
- func (l *SolutionLayer) ResolveTemplateDir(rootDir string) string
- func (l *SolutionLayer) Validate() error
Constants ¶
This section is empty.
Variables ¶
var ApigearModuleSchema []byte
var ApigearRulesSchema []byte
var ApigearScenarioSchema []byte
var ApigearSolutionSchema []byte
Functions ¶
func CheckCsvFile ¶
func CheckFileAndType ¶ added in v0.21.0
func CheckFileAndType(file string, t DocumentType) (*gojsonschema.Result, error)
func CheckIdlFile ¶
func CheckJson ¶ added in v0.8.0
func CheckJson(t DocumentType, jsonDoc []byte) (*gojsonschema.Result, error)
func CheckNdjsonFile ¶
func FeatureRulesToStringMap ¶ added in v0.20.0
func FeatureRulesToStringMap(features []*FeatureRule) map[string]bool
func FeatureRulesToStrings ¶ added in v0.20.0
func FeatureRulesToStrings(features []*FeatureRule) []string
func JsonToYaml ¶
func LoadSchema ¶
func LoadSchema(t DocumentType) (gojsonschema.JSONLoader, error)
func YamlToJson ¶
Types ¶
type ActionEntry ¶ added in v0.6.1
ActionEntry represents an action in an operation or sequence.
type ActionListEntry ¶ added in v0.6.1
type ActionListEntry struct { // Name is the name of the action list. Name string `json:"name" yaml:"name"` // Description is the description of the action list. Description string `json:"description" yaml:"description"` // Actions is the list of actions in the action list. Actions []ActionEntry `json:"actions" yaml:"actions"` }
ActionListEntry represents a list of actions
type DocumentRule ¶
type DocumentRule struct { // Source is the source document to apply the transformation to. Source string `json:"source" yaml:"source"` // Target is the target document to write to after the transformation. Target string `json:"target" yaml:"target"` // Transform is true if the transformation should be applied. Raw bool `json:"raw" yaml:"raw"` // Force is true if the target file should be overwritten. Force bool `json:"force" yaml:"force"` }
DocumentRule defines a document rule with a source and target document.
type DocumentType ¶
type DocumentType string
const ( DocumentTypeModule DocumentType = "module" DocumentTypeSolution DocumentType = "solution" DocumentTypeScenario DocumentType = "scenario" DocumentTypeRules DocumentType = "rules" DocumentTypeUnknown DocumentType = "unknown" )
func GetDocumentType ¶
func GetDocumentType(file string) (DocumentType, error)
type FeatureRule ¶
type FeatureRule struct { // Name of the feature. Name string `json:"name" yaml:"name"` // Which other features are required by this feature. Requires []string `json:"requires" yaml:"requires"` // Scopes to match. Scopes []*ScopeRule `json:"scopes" yaml:"scopes"` Skip bool `json:"-" yaml:"-"` }
A feature rule defines a set of scopes to match a symbol type.
func (*FeatureRule) FindScopesByMatch ¶ added in v0.9.0
func (s *FeatureRule) FindScopesByMatch(match ScopeType) []*ScopeRule
FindScopeByMatch returns the first scope that matches the given match.
type InterfaceEntry ¶ added in v0.6.1
type InterfaceEntry struct { Name string `json:"name" yaml:"name"` Description string `json:"description" yaml:"description"` Properties map[string]any `json:"properties" yaml:"properties"` Operations []*ActionListEntry `json:"operations" yaml:"operations"` }
InterfaceEntry represents an interface in a scenario.
func (InterfaceEntry) GetOperation ¶ added in v0.6.1
func (e InterfaceEntry) GetOperation(name string) *ActionListEntry
GetOperation returns the operation entry with the given name.
type RulesDoc ¶
type RulesDoc struct { Name string `json:"name" yaml:"name"` Features []*FeatureRule `json:"features" yaml:"features"` }
func (*RulesDoc) ComputeFeatures ¶ added in v0.15.1
ComputeFeatures returns a filtered set of features based on the given features. And the features that are required by the given features.
func (*RulesDoc) FeatureByName ¶ added in v0.15.1
func (r *RulesDoc) FeatureByName(name string) *FeatureRule
FeatureByName returns the feature with the given name.
func (*RulesDoc) FeatureNamesMap ¶ added in v0.20.0
type ScenarioDoc ¶
type ScenarioDoc struct { Schema string `json:"schema" yaml:"schema"` Name string `json:"name" yaml:"name"` Source string `json:"source" yaml:"source"` Description string `json:"description" yaml:"description"` Version string `json:"version" yaml:"version"` Interfaces []*InterfaceEntry `json:"interfaces" yaml:"interfaces"` Sequences []*SequenceEntry `json:"sequences" yaml:"sequences"` }
ScenarioDoc is a scenario document as part of a simulation.
func (*ScenarioDoc) GetInterface ¶ added in v0.6.1
func (s *ScenarioDoc) GetInterface(name string) *InterfaceEntry
GetInterface returns the interface entry with the given name.
func (*ScenarioDoc) GetSequence ¶ added in v0.6.1
func (s *ScenarioDoc) GetSequence(name string) *SequenceEntry
GetSequence returns the sequence entry with the given name.
type ScopeRule ¶
type ScopeRule struct { // Match is the type of the symbol to match Match ScopeType `json:"match" yaml:"match"` // Prefix is the prefix for all target documents Prefix string `json:"prefix" yaml:"prefix"` // Documents is a list of document rules to apply Documents []DocumentRule `json:"documents" yaml:"documents"` }
ScopeRule defines a scope rule which is matched based on the symbol type.
type SequenceEntry ¶ added in v0.6.1
type SequenceEntry struct { // Name is the name of the sequence. Name string `json:"name" yaml:"name"` // Description is the description of the sequence. Description string `json:"description" yaml:"description"` // Interface is the name of the default interface used. Interface string `json:"interface" yaml:"interface"` // Interval is the interval in milliseconds between runs. Interval int `json:"interval" yaml:"interval"` // Loops is the number of times the sequence should be run. Loops int `json:"loops" yaml:"loops"` // Forever is true if the sequence should be run forever. Forever bool `json:"forever" yaml:"forever"` // Steps is the list of steps in the sequence. Steps []*ActionListEntry `json:"steps" yaml:"steps"` }
SequenceEntry represents a sequence in a scenario.
type SolutionDoc ¶
type SolutionDoc struct { Schema string `json:"schema" yaml:"schema"` Version string `json:"version" yaml:"version"` Name string `json:"name" yaml:"name"` Description string `json:"description" yaml:"description"` RootDir string `json:"rootDir" yaml:"rootDir"` Meta map[string]any `json:"meta" yaml:"meta"` Layers []*SolutionLayer `json:"layers" yaml:"layers"` }
func (*SolutionDoc) Compute ¶ added in v0.24.0
func (s *SolutionDoc) Compute() error
Compute computes the solution. It computes the dependencies and expanded inputs of each layer.
func (*SolutionDoc) ComputeDependencies ¶ added in v0.24.0
func (s *SolutionDoc) ComputeDependencies() []string
ComputeDependencies computes the dependencies of a solution. A solution is a list of layers. Each layer has a list of inputs. The dependencies of a solution are: - the inputs of all layers - the solution file - the template dir and rules file The inputs are relative paths to the root directory of the solution.
func (*SolutionDoc) Validate ¶ added in v0.13.13
func (s *SolutionDoc) Validate() error
type SolutionLayer ¶
type SolutionLayer struct { Name string `json:"name" yaml:"name"` Description string `json:"description" yaml:"description"` Inputs []string `json:"inputs" yaml:"inputs"` Output string `json:"output" yaml:"output"` Template string `json:"template" yaml:"template"` Features []string `json:"features" yaml:"features"` Force bool `json:"force" yaml:"force"` // contains filtered or unexported fields }
func (*SolutionLayer) Compute ¶ added in v0.24.0
func (l *SolutionLayer) Compute(rootDir string) error
Compute computes the dependencies and expanded inputs of a layer.
func (*SolutionLayer) ComputeDependencies ¶ added in v0.24.0
func (l *SolutionLayer) ComputeDependencies(rootDir string) []string
func (*SolutionLayer) ComputeExpandedInputs ¶ added in v0.24.0
func (l *SolutionLayer) ComputeExpandedInputs(rootDir string) []string
func (*SolutionLayer) GetOutputDir ¶ added in v0.24.0
func (l *SolutionLayer) GetOutputDir(rootDir string) string
GetOutputDir returns the output dir. The output dir can be relative to the root dir of the solution.
func (*SolutionLayer) GetRulesFile ¶ added in v0.24.0
func (l *SolutionLayer) GetRulesFile(rootDir string) string
GetRulesFile returns the rules file. The rules file is a file in the template dir.
func (*SolutionLayer) GetTemplatesDir ¶ added in v0.24.0
func (l *SolutionLayer) GetTemplatesDir(rootDir string) string
GetTemplatesDir returns the templates dir. The templates dir is a sub directory of the template dir.
func (*SolutionLayer) ResolveTemplateDir ¶ added in v0.24.0
func (l *SolutionLayer) ResolveTemplateDir(rootDir string) string
ResolveTemplateDir resolves the template dir. The template dir can be a relative path to the root dir of the solution. If the template dir is not a relative path, it is considered as a template name. The template name is used to find the template dir in the template cache dir.
func (*SolutionLayer) Validate ¶ added in v0.13.13
func (l *SolutionLayer) Validate() error