app

package
v0.5.1-17-g6de009c Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2023 License: BSD-3-Clause Imports: 32 Imported by: 3

Documentation

Overview

SPDX-License-Identifier: BSD-3-Clause Copyright (c) 2022, Unikraft GmbH and The KraftKit Authors. Licensed under the BSD-3-Clause License (the "License"). You may not use this file except in compliance with the License.

SPDX-License-Identifier: BSD-3-Clause Copyright (c) 2022, Unikraft GmbH and The KraftKit Authors. Licensed under the BSD-3-Clause License (the "License"). You may not use this file except in compliance with the License.

SPDX-License-Identifier: BSD-3-Clause Copyright (c) 2022, Unikraft GmbH and The KraftKit Authors. Licensed under the BSD-3-Clause License (the "License"). You may not use this file expect in compliance with the License.

SPDX-License-Identifier: Apache-2.0

Copyright 2020 The Compose Specification Authors. Copyright 2022 Unikraft GmbH. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

SPDX-License-Identifier: Apache-2.0

Copyright 2020 The Compose Specification Authors. Copyright 2022 Unikraft GmbH. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	DefaultOutputDir  = "build"
	DefaultConfigFile = ".config"
)

Variables

View Source
var DefaultFileNames = []string{
	"kraft.yaml",
	"kraft.yml",
	"Kraftfile.yml",
	"Kraftfile.yaml",
	"Kraftfile",
}

DefaultFileNames defines the kraft file names for auto-discovery (in order of preference)

Functions

func IsWorkdirInitialized added in v0.2.0

func IsWorkdirInitialized(dir string) bool

IsWorkdirInitialized provides a quick check to determine if whether one of the supported project files (Kraftfiles) is present within a provided working directory.

func ParseYAML added in v0.2.0

func ParseYAML(source []byte) (map[string]interface{}, error)

ParseYAML reads the bytes from a file, parses the bytes into a mapping structure, and returns it.

func Transform added in v0.2.0

func Transform(ctx context.Context, source interface{}, target interface{}, additionalTransformers ...Transformer) error

Transform converts the source into the target struct with compose types transformer and the specified transformers if any.

Types

type Application

type Application interface {
	component.Component

	// WorkingDir returns the path to the application's working directory
	WorkingDir() string

	// Unikraft returns the application's unikraft configuration
	Unikraft(context.Context) core.Unikraft

	// OutDir returns the path to the application's output directory
	OutDir() string

	// Template returns the application's template
	Template() template.Template

	// Libraries returns the application libraries' configurations
	Libraries(ctx context.Context) (lib.Libraries, error)

	// Targets returns the application's targets
	Targets() target.Targets

	// Extensions returns the application's extensions
	Extensions() component.Extensions

	// Kraftfiles returns the application's kraft configuration files
	Kraftfiles() []string

	// MergeTemplate merges the application's configuration with the given
	// configuration
	MergeTemplate(context.Context, Application) (Application, error)

	// IsConfigured returns a boolean to indicate whether the application has been
	// previously configured.  This is deteremined by finding a non-empty
	// `.config` file within the application's source directory
	IsConfigured(target.Target) bool

	// MakeArgs returns the populated `core.MakeArgs` based on the contents of the
	// instantiated `application`.  This information can be passed directly
	// to Unikraft's build system.
	MakeArgs(target.Target) (*core.MakeArgs, error)

	// Make is a method which invokes Unikraft's build system.  You can pass in
	// make options based on the `make` package.  Ultimately, this is an abstract
	// method which will be used by a number of well-known make command goals by
	// Unikraft's build system.
	Make(context.Context, target.Target, ...make.MakeOption) error

	// SyncConfig updates the configuration
	SyncConfig(context.Context, target.Target, ...make.MakeOption) error

	// Configure updates the configuration
	Configure(context.Context, target.Target, kconfig.KeyValueMap, ...make.MakeOption) error

	// Prepare the application
	Prepare(context.Context, target.Target, ...make.MakeOption) error

	// Clean the application
	Clean(context.Context, target.Target, ...make.MakeOption) error

	// Delete the build folder of the application
	Properclean(context.Context, target.Target, ...make.MakeOption) error

	// Fetch component sources for the applications
	Fetch(context.Context, target.Target, ...make.MakeOption) error

	// Set a configuration option for a specific target
	Set(context.Context, target.Target, ...make.MakeOption) error

	// Unset a configuration option for a specific target
	Unset(context.Context, target.Target, ...make.MakeOption) error

	// Build offers an invocation of the Unikraft build system with the contextual
	// information of the application
	Build(context.Context, target.Target, ...BuildOption) error

	// LibraryNames return names for all libraries in this Compose config
	LibraryNames() []string

	// TargetNames return names for all targets in this Compose config
	TargetNames() []string

	// TargetByName returns the `target.Target` based on an input name
	TargetByName(string) (target.Target, error)

	// Components returns a unique list of Unikraft components which this
	// applicatiton consists of
	Components(context.Context) ([]component.Component, error)

	// WithTarget is a reducer that returns the application with only the provided
	// target.
	WithTarget(target.Target) (Application, error)
}

func NewApplicationFromInterface added in v0.3.0

func NewApplicationFromInterface(ctx context.Context, iface map[string]interface{}, popts *ProjectOptions) (Application, error)

func NewApplicationFromOptions added in v0.2.0

func NewApplicationFromOptions(aopts ...ApplicationOption) (Application, error)

NewApplicationFromOptions accepts a series of options and returns a rendered *ApplicationConfig structure

func NewProjectFromOptions added in v0.3.0

func NewProjectFromOptions(ctx context.Context, opts ...ProjectOption) (Application, error)

NewProjectFromOptions load a kraft project based on command line options

type ApplicationOption added in v0.2.0

type ApplicationOption func(ao *application) error

ApplicationOption is a function that manipulates the instantiation of an Application.

func WithConfiguration added in v0.2.0

func WithConfiguration(config ...*kconfig.KeyValue) ApplicationOption

WithConfiguration sets the application's kconfig list

func WithExtensions added in v0.2.0

func WithExtensions(extensions component.Extensions) ApplicationOption

WithExtensions sets the application's extension list

func WithFilename added in v0.2.0

func WithFilename(filename string) ApplicationOption

WithFilename sets the application's file name

func WithKraftfiles added in v0.4.0

func WithKraftfiles(kraftfiles []string) ApplicationOption

WithKraftfiles sets the application's kraft yaml files

func WithLibraries added in v0.2.0

func WithLibraries(libraries lib.Libraries) ApplicationOption

WithLibraries sets the application's library list

func WithName added in v0.2.0

func WithName(name string) ApplicationOption

WithName sets the application component name

func WithOutDir added in v0.2.0

func WithOutDir(outDir string) ApplicationOption

WithOutDir sets the application's output directory

func WithSource added in v0.4.0

func WithSource(source string) ApplicationOption

WithSource sets the library's source which indicates where it was retrieved and in component context and not the origin.

func WithTargets added in v0.2.0

func WithTargets(targets target.Targets) ApplicationOption

WithTargets sets the application's target list

func WithTemplate added in v0.2.0

func WithTemplate(template template.TemplateConfig) ApplicationOption

WithTemplate sets the application's template

func WithUnikraft added in v0.2.0

func WithUnikraft(unikraft core.UnikraftConfig) ApplicationOption

WithUnikraft sets the application's core

func WithVersion added in v0.4.0

func WithVersion(version string) ApplicationOption

WithVersion sets the application version

func WithWorkingDir added in v0.2.0

func WithWorkingDir(workingDir string) ApplicationOption

WithWorkingDir sets the application's working directory

type BuildOption

type BuildOption func(opts *BuildOptions) error

func WithBuildLogFile

func WithBuildLogFile(path string) BuildOption

WithBuildLogFile specifies a path to a file which will be used to save the output from Unikraft's build invocation

func WithBuildMakeOptions

func WithBuildMakeOptions(mopts ...make.MakeOption) BuildOption

WithBuildMakeOptions allows customization of the invocation of the GNU make tool

func WithBuildNoPrepare

func WithBuildNoPrepare(noPrepare bool) BuildOption

WithBuildNoPrepare disables calling `make prepare` befere invoking the main Unikraft's build invocation.

func WithBuildProgressFunc

func WithBuildProgressFunc(onProgress func(progress float64)) BuildOption

WithBuildProgressFunc sets an optional progress function which is used as a callback during the ultimate invocation of make within Unikraft's build system

type BuildOptions

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

type ProjectOption added in v0.3.0

type ProjectOption func(*ProjectOptions) error

func WithProjectConfig added in v0.3.0

func WithProjectConfig(config []string) ProjectOption

WithProjectConfig defines a key=value set of variables used for kraft file interpolation as well as with Unikraft's build system

func WithProjectDefaultKraftfiles added in v0.3.0

func WithProjectDefaultKraftfiles() ProjectOption

WithProjectDefaultKraftfiles searches for default kraft files from working directory

func WithProjectInterpolation added in v0.3.0

func WithProjectInterpolation(interpolation bool) ProjectOption

WithProjectInterpolation set ProjectOptions to enable/skip interpolation

func WithProjectKraftfile added in v0.3.0

func WithProjectKraftfile(file string) ProjectOption

WithProjectKraftfile adds a kraft file to the project

func WithProjectName added in v0.3.0

func WithProjectName(name string) ProjectOption

WithProjectName defines ProjectOptions' name

func WithProjectNormalization added in v0.3.0

func WithProjectNormalization(normalization bool) ProjectOption

WithProjectNormalization set ProjectOptions to enable/skip normalization

func WithProjectResolvedPaths added in v0.3.0

func WithProjectResolvedPaths(resolve bool) ProjectOption

WithProjectResolvedPaths set ProjectOptions to enable paths resolution

func WithProjectSkipValidation added in v0.3.0

func WithProjectSkipValidation(skipValidation bool) ProjectOption

WithSkipValidation sets the LoaderOptions to skip validation when loading sections

func WithProjectWorkdir added in v0.3.0

func WithProjectWorkdir(workdir string) ProjectOption

WithProjectWorkdir defines ProjectOptions' working directory

type ProjectOptions added in v0.2.0

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

ProjectOptions group configuration options used to instantiate a new ApplicationConfig from a working directory and set of kraftfiles

func NewProjectOptions added in v0.2.0

func NewProjectOptions(opts ...ProjectOption) (*ProjectOptions, error)

NewProjectOptions creates ProjectOptions

func (*ProjectOptions) AddKraftfile added in v0.3.0

func (popts *ProjectOptions) AddKraftfile(file string) error

AddKraftfile adds and extracts the file contents and attaches it to the ProjectOptions.

func (*ProjectOptions) GetProjectName added in v0.3.0

func (popts *ProjectOptions) GetProjectName() (string, bool)

GetProjectName returns the project name and whether the project name was set impartively (i.e. by the working directory's name)

func (*ProjectOptions) LookupConfig added in v0.3.0

func (popts *ProjectOptions) LookupConfig(key string) (string, bool)

LookupConfig provides a lookup function for config variables

func (*ProjectOptions) RelativePath added in v0.3.0

func (popts *ProjectOptions) RelativePath(path string) string

RelativePath resolve a relative path based project's working directory

func (*ProjectOptions) SetProjectName added in v0.3.0

func (popts *ProjectOptions) SetProjectName(name string, imperativelySet bool)

SetProjectName sets the project name along with whether the name is set imperatively (i.e. whether it was derived from the working directory)

func (*ProjectOptions) Workdir added in v0.3.0

func (popts *ProjectOptions) Workdir() (string, error)

Workdir returns the working directory determined by provided kraft files

type Transformer added in v0.2.0

type Transformer struct {
	TypeOf reflect.Type
	Func   TransformerFunc
}

Transformer defines a map to type transformer

type TransformerFunc added in v0.2.0

type TransformerFunc func(context.Context, interface{}) (interface{}, error)

TransformerFunc defines a function to perform the actual transformation

Jump to

Keyboard shortcuts

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