spec

package
v0.25.6 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package spec defines the specification types for the object api. Any change to the API has direct impact on the user.

Index

Constants

This section is empty.

Variables

View Source
var ApigearModuleSchema []byte
View Source
var ApigearRulesSchema []byte
View Source
var ApigearScenarioSchema []byte
View Source
var ApigearSolutionSchema []byte

Functions

func CheckCsvFile

func CheckCsvFile(name string) error

func CheckFile

func CheckFile(file string) (*gojsonschema.Result, error)

func CheckFileAndType added in v0.21.0

func CheckFileAndType(file string, t DocumentType) (*gojsonschema.Result, error)

func CheckIdlFile

func CheckIdlFile(name string) error

func CheckJson added in v0.8.0

func CheckJson(t DocumentType, jsonDoc []byte) (*gojsonschema.Result, error)

func CheckNdjsonFile

func CheckNdjsonFile(name string) error

func DocumentTypeFromFileName

func DocumentTypeFromFileName(fn string) (string, error)

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 JsonToYaml(data []byte) ([]byte, error)

func LoadSchema

func LoadSchema(t DocumentType) (gojsonschema.JSONLoader, error)

func YamlToJson

func YamlToJson(data []byte) ([]byte, error)

Types

type ActionEntry added in v0.6.1

type ActionEntry map[string]map[string]any

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

func (r *RulesDoc) ComputeFeatures(wanted []string) error

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

func (r *RulesDoc) FeatureNamesMap() map[string]bool

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 ScopeType

type ScopeType string

ScopeType is the type of a scope.

const (
	ScopeSystem    ScopeType = "system"
	ScopeModule    ScopeType = "module"
	ScopeInterface ScopeType = "interface"
	ScopeStruct    ScopeType = "struct"
	ScopeEnum      ScopeType = "enum"
)

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"`
	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

Jump to

Keyboard shortcuts

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