api

package
v0.27.0 Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2018 License: Apache-2.0 Imports: 8 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AKSAsset added in v0.16.0

type AKSAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Azure       `json:",inline" yaml:",inline" hcl:",inline"`

	ClusterName       string `json:"cluster_name" yaml:"cluster_name" hcl:"cluster_name"`
	KubernetesVersion string `json:"kubernetes_version" yaml:"kubernetes_version" hcl:"kubernetes_version"`
	PublicKey         string `json:"public_key" yaml:"public_key" hcl:"public_key"`
	NodeCount         string `json:"node_count" yaml:"node_count" hcl:"node_count"`
	NodeType          string `json:"node_type" yaml:"node_type" hcl:"node_type"`
	DiskGB            string `json:"disk_gb" yaml:"disk_gb" hcl:"disk_gb"`
}

AKSAsset

type Asset

type Asset struct {
	Inline      *InlineAsset      `json:"inline,omitempty" yaml:"inline,omitempty" hcl:"inline,omitempty"`
	Docker      *DockerAsset      `json:"docker,omitempty" yaml:"docker,omitempty" hcl:"docker,omitempty"`
	DockerLayer *DockerLayerAsset `json:"dockerlayer,omitempty" yaml:"dockerlayer,omitempty" hcl:"dockerlayer,omitempty"`
	GitHub      *GitHubAsset      `json:"github,omitempty" yaml:"github,omitempty" hcl:"github,omitempty"`
	Web         *WebAsset         `json:"web,omitempty" yaml:"web,omitempty" hcl:"web,omitempty"`
	Helm        *HelmAsset        `json:"helm,omitempty" yaml:"helm,omitempty" hcl:"helm,omitempty"`
	Local       *LocalAsset       `json:"local,omitempty" yaml:"local,omitempty" hcl:"local,omitempty"`
	Terraform   *TerraformAsset   `json:"terraform,omitempty" yaml:"terraform,omitempty" hcl:"terraform,omitempty"`
	AmazonEKS   *EKSAsset         `json:"amazon_eks,omitempty" yaml:"amazon_eks,omitempty" hcl:"amazon_eks,omitempty"`
	GoogleGKE   *GKEAsset         `json:"google_gke,omitempty" yaml:"google_gke,omitempty" hcl:"google_gke,omitempty"`
	AzureAKS    *AKSAsset         `json:"azure_aks,omitempty" yaml:"azure_aks,omitempty" hcl:"azure_aks,omitempty"`
}

Asset is a spec to generate one or more deployment assets

type AssetShared

type AssetShared struct {
	// Dest is where this file should be output
	Dest string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"`
	// Mode is where this file should be output
	Mode os.FileMode `json:"mode,omitempty" yaml:"mode,omitempty" hcl:"mode,omitempty"`
	// Description is an optional description
	Description string `json:"description,omitempty" yaml:"description,omitempty" hcl:"description,omitempty"`
	// When is an optional boolean to determine whether to pull asset
	When string `json:"when,omitempty" yaml:"when,omitempty" hcl:"when,omitempty"`
}

AssetShared is attributes common to all assets

type Assets

type Assets struct {
	V1 []Asset `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}

Assets is the top level assets object

type Azure added in v0.16.0

type Azure struct {
	TenantID               string `json:"tenant_id" yaml:"tenant_id" hcl:"tenant_id"`
	SubscriptionID         string `json:"subscription_id" yaml:"subscription_id" hcl:"subscription_id"`
	ServicePrincipalID     string `json:"service_principal_id" yaml:"service_principal_id" hcl:"service_principal_id"`
	ServicePrincipalSecret string `json:"service_principal_secret" yaml:"service_principal_secret" hcl:"service_principal_secret"`
	ResourceGroupName      string `json:"resource_group_name" yaml:"resource_group_name" hcl:"resource_group_name"`
	Location               string `json:"location" yaml:"location" hcl:"location"`
}

type Config

type Config struct {
	V1 []libyaml.ConfigGroup `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}

Config is the top level config object

type ConfigStep

type ConfigStep struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
}

func (*ConfigStep) Shared

func (c *ConfigStep) Shared() *StepShared

func (ConfigStep) ShortName

func (c ConfigStep) ShortName() string

type DockerAsset

type DockerAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Image       string `json:"image" yaml:"image" hcl:"image"`
	Source      string `json:"source" yaml:"source" hcl:"source"`
}

DockerAsset is an asset that declares a docker image

type DockerLayerAsset

type DockerLayerAsset struct {
	DockerAsset `json:",inline" yaml:",inline" hcl:",inline"`
	Layer       string `json:"layer" yaml:"layer" hcl:"layer"`
}

DockerLayerAsset is an asset that will unpack a docker layer at `dest`

type EKSAsset

type EKSAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`

	ClusterName string `json:"cluster_name,omitempty" yaml:"cluster_name,omitempty" hcl:"cluster_name,omitempty"`
	Region      string `json:"region,omitempty" yaml:"region,omitempty" hcl:"region,omitempty"`

	CreatedVPC        *amazoneks.EKSCreatedVPC        `json:"created_vpc,omitempty" yaml:"created_vpc,omitempty" hcl:"created_vpc,omitempty"`
	ExistingVPC       *amazoneks.EKSExistingVPC       `json:"existing_vpc,omitempty" yaml:"existing_vpc,omitempty" hcl:"existing_vpc,omitempty"`
	AutoscalingGroups []amazoneks.EKSAutoscalingGroup `json:"autoscaling_groups,omitempty" yaml:"autoscaling_groups,omitempty" hcl:"autoscaling_groups,omitempty"`
}

EKSAsset

type EntitlementValue added in v0.24.0

type EntitlementValue struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

EntitlementValue is a single entitlement value

type Entitlements added in v0.24.0

type Entitlements struct {
	Meta         Meta               `json:"meta"`
	Signature    string             `json:"signature"`
	Values       []EntitlementValue `json:"values,omitempty"`
	Utilizations []Utilization      `json:"utilizations,omitempty"`
}

Entitlements is a signed object containing entitlments info+metadata

type GCPProvider

type GCPProvider struct {
	Credentials string `json:"credentials,omitempty" yaml:"credentials,omitempty" hcl:"credentials,omitempty"`
	Project     string `json:"project,omitempty" yaml:"project,omitempty" hcl:"project,omitempty"`
	Region      string `json:"region,omitempty" yaml:"region,omitempty" hcl:"region,omitempty"`
}

type GKEAsset

type GKEAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`

	GCPProvider `json:",inline" yaml:",inline" hcl:",inline"`

	// ClusterName required
	ClusterName      string `json:"cluster_name" yaml:"cluster_name" hcl:"cluster_name"`
	Zone             string `json:"zone,omitempty" yaml:"zone,omitempty" hcl:"zone,omitempty"`
	InitialNodeCount string `json:"initial_node_count,omitempty" yaml:"initial_node_count,omitempty" hcl:"initial_node_count,omitempty"`
	MachineType      string `json:"machine_type,omitempty" yaml:"machine_type,omitempty" hcl:"machine_type,omitempty"`
	AdditionalZones  string `json:"additional_zones,omitempty" yaml:"additional_zones,omitempty" hcl:"additional_zones,omitempty"`
	MinMasterVersion string `json:"min_master_version,omitempty" yaml:"min_master_version,omitempty" hcl:"min_master_version,omitempty"`
}

GKEAsset

type GitHubAsset

type GitHubAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Repo        string `json:"repo" yaml:"repo" hcl:"repo"`
	Ref         string `json:"ref" yaml:"ref" hcl:"ref"`
	Path        string `json:"path" yaml:"path" hcl:"path"`
	Source      string `json:"source" yaml:"source" hcl:"source"`
	Proxy       bool   `json:"proxy" yaml:"proxy" hcl:"proxy"`
	StripPath   string `json:"strip_path" yaml:"strip_path" hcl:"strip_path"`
}

GitHubAsset is an asset whose contents are specified directly in the Spec

type GithubContent

type GithubContent struct {
	Repo  string       `json:"repo" yaml:"repo" hcl:"repo" meta:"repo"`
	Path  string       `json:"path" yaml:"path" hcl:"path" meta:"path"`
	Ref   string       `json:"ref" yaml:"ref" hcl:"ref" meta:"ref"`
	Files []GithubFile `json:"files" yaml:"files" hcl:"files" meta:"files"`
}

type GithubFile

type GithubFile struct {
	Name string `json:"name" yaml:"name" hcl:"name" meta:"name"`
	Path string `json:"path" yaml:"path" hcl:"path" meta:"path"`
	Sha  string `json:"sha" yaml:"sha" hcl:"sha" meta:"sha"`
	Size int64  `json:"size" yaml:"size" hcl:"size" meta:"size"`
	Data string `json:"data" yaml:"data" hcl:"data" meta:"data"`
}

GithubFile

type HelmAsset

type HelmAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Values      map[string]interface{} `json:"values" yaml:"values" hcl:"values"`
	HelmOpts    []string               `json:"helm_opts" yaml:"helm_opts" hcl:"helm_opts"`
	// GitHub references a github asset from which to pull the chart
	GitHub *GitHubAsset `json:"github,omitempty" yaml:"github,omitempty" hcl:"github,omitempty"`
	// HelmFetch pulls a chart as 'helm fetch' would
	HelmFetch *HelmFetch `json:"helm_fetch,omitempty" yaml:"helm_fetch,omitempty" hcl:"helm_fetch,omitempty"`
	// Local is an escape hatch, most impls will use github or some sort of ChartMuseum thing
	Local      *LocalHelmOpts `json:"local,omitempty" yaml:"local,omitempty" hcl:"local,omitempty"`
	ValuesFrom *ValuesFrom    `json:"values_from,omitempty" yaml:"values_from,omitempty" hcl:"values_from,omitempty"`
}

HelmAsset is an asset that declares a helm chart on github

type HelmFetch

type HelmFetch struct {
	ChartRef string `json:"chart_ref" yaml:"chart_ref" hcl:"chart_ref"`
	RepoURL  string `json:"repo_url" yaml:"repo_url" hcl:"repo_url"`
	Version  string `json:"version" yaml:"version" hcl:"version"`
}

type HelmIntro

type HelmIntro struct {
	IsUpdate   bool
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
}

HelmIntro is a lifecycle step to render persisted README.md in the .ship folder

func (*HelmIntro) Shared

func (h *HelmIntro) Shared() *StepShared

func (*HelmIntro) ShortName

func (h *HelmIntro) ShortName() string

type HelmValues

type HelmValues struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Path       string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"`
}

HelmValues is a lifecycle step to render persisted values.yaml in the .ship folder and save user input changes to values.yaml

func (*HelmValues) Shared

func (h *HelmValues) Shared() *StepShared

func (*HelmValues) ShortName

func (h *HelmValues) ShortName() string

type Image

type Image struct {
	URL      string `json:"url" yaml:"url" hcl:"url" meta:"url"`
	Source   string `json:"source" yaml:"source" hcl:"source" meta:"source"`
	AppSlug  string `json:"appSlug" yaml:"appSlug" hcl:"appSlug" meta:"appSlug"`
	ImageKey string `json:"imageKey" yaml:"imageKey" hcl:"imageKey" meta:"imageKey"`
}

Image

type InlineAsset

type InlineAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Contents    string `json:"contents" yaml:"contents" hcl:"contents"`
}

InlineAsset is an asset whose contents are specified directly in the Spec

type KubectlApply

type KubectlApply struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Path       string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"`
	Kubeconfig string `json:"kubeconfig,omitempty" yaml:"kubeconfig,omitempty" hcl:"kubeconfig,omitempty"`
}

KubectlApply is a lifeycle step to execute `apply` for a kubeconfig asset

func (*KubectlApply) Shared

func (k *KubectlApply) Shared() *StepShared

func (*KubectlApply) ShortName

func (k *KubectlApply) ShortName() string

type Kustomize

type Kustomize struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Base       string `json:"base,omitempty" yaml:"base,omitempty" hcl:"base,omitempty"`
	Dest       string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"`
	Overlay    string `json:"overlay,omitempty" yaml:"overlay,omitempty" hcl:"overlay,omitempty"`
}

Kustomize is a lifeycle step to generate overlays for generated assets. It does not take a kustomization.yml, rather it will generate one in the .ship/ folder

func (*Kustomize) OverlayPath added in v0.16.0

func (k *Kustomize) OverlayPath() string

func (*Kustomize) Shared

func (k *Kustomize) Shared() *StepShared

func (*Kustomize) ShortName

func (k *Kustomize) ShortName() string

type KustomizeIntro

type KustomizeIntro struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
}

KustomizeIntro is a lifeycle step to display an informative intro page for kustomize

func (*KustomizeIntro) Shared

func (k *KustomizeIntro) Shared() *StepShared

func (*KustomizeIntro) ShortName

func (k *KustomizeIntro) ShortName() string

type Lifecycle

type Lifecycle struct {
	V1 []Step `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}

A Lifecycle is the top-level lifecycle object

type LocalAsset added in v0.27.0

type LocalAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Path        string `json:"path" yaml:"path" hcl:"path"`
}

LocalAsset is an asset whose contents are on the local fs

type LocalHelmOpts

type LocalHelmOpts struct {
	ChartRoot string `json:"chart_root" yaml:"chart_root" hcl:"chart_root"`
}

LocalHelmOpts specifies a helm chart that should be templated using other assets that are already present at `ChartRoot`

type Message

type Message struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Contents   string `json:"contents" yaml:"contents" hcl:"contents"`
	Level      string `json:"level,omitempty" yaml:"level,omitempty" hcl:"level,omitempty"`
}

Message is a lifeycle step to print a message

func (*Message) Shared

func (m *Message) Shared() *StepShared

func (*Message) ShortName

func (m *Message) ShortName() string

type Meta added in v0.24.0

type Meta struct {
	LastUpdated time.Time `json:"last_updated"`
	CustomerID  string    `json:"customer_id"`
}

Meta describes metadata about an entitlements payload

type Release

type Release struct {
	Metadata ReleaseMetadata
	Spec     Spec
}

Release

func (*Release) FindRenderRoot added in v0.21.0

func (r *Release) FindRenderRoot() string

func (*Release) FindRenderStep added in v0.16.0

func (r *Release) FindRenderStep() *Render

type ReleaseMetadata

type ReleaseMetadata struct {
	ReleaseID       string          `json:"releaseId" yaml:"releaseId" hcl:"releaseId" meta:"release-id"`
	CustomerID      string          `json:"customerId" yaml:"customerId" hcl:"customerId" meta:"customer-id"`
	InstallationID  string          `json:"installation" yaml:"installation" hcl:"installation" meta:"installation-id"`
	ChannelID       string          `json:"channelId" yaml:"channelId" hcl:"channelId" meta:"channel-id"`
	ChannelName     string          `json:"channelName" yaml:"channelName" hcl:"channelName" meta:"channel-name"`
	ChannelIcon     string          `json:"channelIcon" yaml:"channelIcon" hcl:"channelIcon" meta:"channel-icon"`
	Semver          string          `json:"semver" yaml:"semver" hcl:"semver" meta:"release-version"`
	ReleaseNotes    string          `json:"releaseNotes" yaml:"releaseNotes" hcl:"releaseNotes" meta:"release-notes"`
	Created         string          `json:"created" yaml:"created" hcl:"created" meta:"release-date"`
	RegistrySecret  string          `json:"registrySecret" yaml:"registrySecret" hcl:"registrySecret" meta:"registry-secret"`
	Images          []Image         `json:"images" yaml:"images" hcl:"images" meta:"images"`
	GithubContents  []GithubContent `json:"githubContents" yaml:"githubContents" hcl:"githubContents" meta:"githubContents"`
	ShipAppMetadata ShipAppMetadata `json:"shipAppMetadata" yaml:"shipAppMetadata" hcl:"shipAppMetadata" meta:"shipAppMetadata"`
	Entitlements    Entitlements    `json:"entitlements" yaml:"entitlements" hcl:"entitlements" meta:"entitlements"`
}

ReleaseMetadata

func (ReleaseMetadata) ReleaseName

func (r ReleaseMetadata) ReleaseName() string

type Render

type Render struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Root       string `json:"root,omitempty" yaml:"root,omitempty" hcl:"root,omitempty"`
}

Render is a lifeycle step to collect config and render assets

func (*Render) RenderRoot added in v0.21.0

func (r *Render) RenderRoot() string

func (*Render) Shared

func (r *Render) Shared() *StepShared

func (*Render) ShortName

func (r *Render) ShortName() string

type ShipAppMetadata

type ShipAppMetadata struct {
	Description  string `json:"description" yaml:"description" hcl:"description" meta:"description"`
	Version      string `json:"version" yaml:"version" hcl:"version" meta:"version"`
	Icon         string `json:"icon" yaml:"icon" hcl:"icon" meta:"icon"`
	Name         string `json:"name" yaml:"name" hcl:"name" meta:"name"`
	Readme       string `json:"readme" yaml:"readme" hcl:"readme" meta:"readme"`
	URL          string `json:"url" yaml:"url" hcl:"url" meta:"url"`
	ContentSHA   string `json:"contentSHA" yaml:"contentSHA" hcl:"contentSHA" meta:"contentSHA"`
	ReleaseNotes string `json:"releaseNotes" yaml:"releaseNotes" hcl:"releaseNotes" meta:"release-notes"`
}

type Spec

type Spec struct {
	Assets    Assets    `json:"assets" yaml:"assets" hcl:"asset"`
	Lifecycle Lifecycle `json:"lifecycle" yaml:"lifecycle" hcl:"lifecycle"`
	Config    Config    `json:"config" yaml:"config" hcl:"config"`
}

Spec is the top level Ship document that defines an application

type Step

type Step struct {
	Message        *Message        `json:"message,omitempty" yaml:"message,omitempty" hcl:"message,omitempty"`
	Config         *ConfigStep     `json:"config,omitempty" yaml:"config,omitempty" hcl:"config,omitempty"`
	Render         *Render         `json:"render,omitempty" yaml:"render,omitempty" hcl:"render,omitempty"`
	Terraform      *Terraform      `json:"terraform,omitempty" yaml:"terraform,omitempty" hcl:"terraform,omitempty"`
	Kustomize      *Kustomize      `json:"kustomize,omitempty" yaml:"kustomize,omitempty" hcl:"kustomize,omitempty"`
	Unfork         *Unfork         `json:"unfork,omitempty" yaml:"unfork,omitempty" hcl:"unfork,omitempty"`
	KustomizeIntro *KustomizeIntro `json:"kustomizeIntro,omitempty" yaml:"kustomizeIntro,omitempty" hcl:"kustomizeIntro,omitempty"`
	HelmIntro      *HelmIntro      `json:"helmIntro,omitempty" yaml:"helmIntro,omitempty" hcl:"helmIntro,omitempty"`
	HelmValues     *HelmValues     `json:"helmValues,omitempty" yaml:"helmValues,omitempty" hcl:"helmValues,omitempty"`
	KubectlApply   *KubectlApply   `json:"kubectlApply,omitempty" yaml:"kubectlApply,omitempty" hcl:"kubectlApply,omitempty"`
}

Step represents vendor-customized configuration steps & messaging

func (Step) GetStep

func (s Step) GetStep() StepDetails

func (Step) Shared

func (s Step) Shared() *StepShared

func (Step) ShortName

func (s Step) ShortName() string

func (*Step) String

func (s *Step) String() string

type StepDetails

type StepDetails interface {
	Shared() *StepShared
	ShortName() string
}

type StepShared

type StepShared struct {
	ID          string   `json:"id,omitempty" yaml:"id,omitempty" hcl:",key"`
	Description string   `json:"description,omitempty" yaml:"description,omitempty" hcl:"description,omitempty"`
	Requires    []string `json:"requires,omitempty" yaml:"requires,omitempty" hcl:"requires,omitempty"`
	Invalidates []string `json:"invalidates,omitempty" yaml:"invalidates,omitempty" hcl:"invalidates,omitempty"`
}

type Terraform

type Terraform struct {
	StepShared `json:",inline" yaml:",inline" hcl:",inline"`
	Path       string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"`
}

Terraform is a lifeycle step to execute `apply` for a runbook's terraform asset

func (*Terraform) Shared

func (t *Terraform) Shared() *StepShared

func (*Terraform) ShortName

func (t *Terraform) ShortName() string

type TerraformAsset

type TerraformAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	// GitHub references a github asset from which to pull a terraform module
	GitHub *GitHubAsset `json:"github" yaml:"github" hcl:"github"`
	// Inline allows a vendor to specify a terraform module inline in ship
	Inline string `json:"inline,omitempty" yaml:"inline,omitempty" hcl:"inline,omitempty"`
}

TerraformAsset

type Unfork added in v0.27.0

type Unfork struct {
	StepShared   `json:",inline" yaml:",inline" hcl:",inline"`
	UpstreamBase string `json:"upstreamBase" yaml:"upstreamBase" hcl:"upstreamBase"`
	ForkedBase   string `json:"forkedBase" yaml:"forkedBase" hcl:"forkedBase"`
	Dest         string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"`
	Overlay      string `json:"overlay,omitempty" yaml:"overlay,omitempty" hcl:"overlay,omitempty"`
}

Unfork is a lifecycle step to generate patches and overlays for two generates assets that consist of raw K8S YAML

func (*Unfork) OverlayPath added in v0.27.0

func (k *Unfork) OverlayPath() string

func (*Unfork) Shared added in v0.27.0

func (u *Unfork) Shared() *StepShared

func (*Unfork) ShortName added in v0.27.0

func (k *Unfork) ShortName() string

type Utilization added in v0.24.0

type Utilization struct {
	Key   string `json:"key"`
	Value int64  `json:"value"`
}

Utilization is a single utilization value

type ValuesFrom

type ValuesFrom struct {
	Lifecycle *ValuesFromLifecycle `json:"lifecycle,omitempty" yaml:"lifecycle,omitempty" hcl:"lifecycle,omitempty"`
}

type ValuesFromLifecycle

type ValuesFromLifecycle struct{}

type WebAsset

type WebAsset struct {
	AssetShared `json:",inline" yaml:",inline" hcl:",inline"`
	Body        string              `json:"body" yaml:"body" hcl:"body"`
	BodyFormat  string              `json:"bodyFormat" yaml:"bodyFormat" hcl:"bodyFormat"`
	Headers     map[string][]string `json:"headers" yaml:"headers" hcl:"headers"`
	Method      string              `json:"method" yaml:"method" hcl:"method"`
	URL         string              `json:"url" yaml:"url" hcl:"url"`
}

WebAsset is an asset whose contents are specified by the HTML at the corresponding URL

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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