blob: 0e6d09b8d1e41d8e5bcbf1bee7d4af0ece36c1c5 [file] [log] [blame]
// Copyright 2020 CUE Authors
//
// 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.
package build
// A File represents a file that is part of the build process.
type File struct {
Filename string `json:"filename"`
Encoding Encoding `json:"encoding,omitempty"`
Interpretation Interpretation `json:"interpretation,omitempty"`
Form Form `json:"form,omitempty"`
Tags map[string]string `json:"tags,omitempty"` // code=go
Source interface{} `json:"-"` // TODO: swap out with concrete type.
}
// A Encoding indicates a file format for representing a program.
type Encoding string
const (
CUE Encoding = "cue"
JSON Encoding = "json"
YAML Encoding = "yaml"
JSONL Encoding = "jsonl"
Text Encoding = "text"
Protobuf Encoding = "proto"
// TODO:
// TOML
// TextProto
// BinProto
Code Encoding = "code" // Programming languages
)
// An Interpretation determines how a certain program should be interpreted.
// For instance, data may be interpreted as describing a schema, which itself
// can be converted to a CUE schema.
type Interpretation string
const (
JSONSchema Interpretation = "jsonschema"
OpenAPI Interpretation = "openapi"
)
// A Form specifies the form in which a program should be represented.
type Form string
const (
Full Form = "full"
Schema Form = "schema"
Struct Form = "struct"
Final Form = "final" // picking default values, may be non-concrete
Graph Form = "graph" // Data only, but allow references
DAG Form = "dag" // Like graph, but don't allow cycles
Data Form = "data" // always final
)