stdlib: added @dagger(input) and @dagger(output) attributes

Signed-off-by: Sam Alba <sam.alba@gmail.com>
This commit is contained in:
Sam Alba 2021-05-26 12:23:44 +02:00
parent 42e91c0a30
commit 7009d01835
19 changed files with 121 additions and 119 deletions

View File

@ -14,22 +14,22 @@ import (
config: aws.#Config
// Source is the Cloudformation template (JSON/YAML string)
source: string
source: string @dagger(input)
// Stackname is the cloudformation stack
stackName: string
stackName: string @dagger(input)
// Stack parameters
parameters: [string]: _
parameters: [string]: _ @dagger(input)
// Behavior when failure to create/update the Stack
onFailure: *"DO_NOTHING" | "ROLLBACK" | "DELETE"
onFailure: *"DO_NOTHING" | "ROLLBACK" | "DELETE" @dagger(input)
// Timeout for waiting for the stack to be created/updated (in minutes)
timeout: *10 | uint
timeout: *10 | uint @dagger(input)
// Never update the stack if already exists
neverUpdate: *false | bool
neverUpdate: *false | bool @dagger(input)
#files: {
"/entrypoint.sh": #Code
@ -44,7 +44,7 @@ import (
}
}
outputs: [string]: string
outputs: [string]: string @dagger(output)
outputs: #up: [
op.#Load & {

View File

@ -15,7 +15,7 @@ import (
// ECR credentials
username: "AWS"
secret: out
secret: out @dagger(output)
aws.#Script & {
always: true

View File

@ -11,22 +11,22 @@ import (
config: aws.#Config
// ECS cluster name
cluster: string
cluster: string @dagger(input)
// Arn of the task to run
taskArn: string
taskArn: string @dagger(input)
// Environment variables of the task
containerEnvironment: [string]: string
containerEnvironment: [string]: string @dagger(input)
// Container name
containerName: string
containerName: string @dagger(input)
// Container command to give
containerCommand: [...string]
containerCommand: [...string] @dagger(input)
// Task role ARN
roleArn: string | *""
roleArn: string | *"" @dagger(input)
containerOverrides: {
containerOverrides: [{

View File

@ -11,15 +11,15 @@ import (
config: aws.#Config
// EKS cluster name
clusterName: string
clusterName: string @dagger(input)
// Kubectl version
version: *"v1.19.9" | string
version: *"v1.19.9" | string @dagger(input)
// kubeconfig is the generated kube configuration file
kubeconfig: {
// FIXME There is a problem with dagger.#Secret type
string
string @dagger(output)
#up: [
op.#Load & {

View File

@ -10,12 +10,14 @@ import (
config: aws.#Config
// ListenerArn
listenerArn: string
listenerArn: string @dagger(input)
// Optional vhost for reusing priorities
vhost?: string
vhost?: string @dagger(input)
// exported priority
priority: out @dagger(output)
out: string
aws.#Script & {

View File

@ -11,18 +11,18 @@ import (
config: aws.#Config
// DB name
name: string
name: string @dagger(input)
// ARN of the database instance
dbArn: string
dbArn: string @dagger(input)
// ARN of the database secret (for connecting via rds api)
secretArn: string
secretArn: string @dagger(input)
dbType: "mysql" | "postgres"
dbType: "mysql" | "postgres" @dagger(input)
// Name of the DB created
out: string
out: string @dagger(output)
aws.#Script & {
"config": config

View File

@ -7,7 +7,7 @@ import (
// Build a Docker image from source, using included Dockerfile
#Build: {
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
#up: [
op.#DockerBuild & {
@ -20,7 +20,7 @@ import (
// Pull a docker container
#Pull: {
// Remote ref (example: "index.docker.io/alpine:latest")
from: string
from: string @dagger(input)
#up: [
op.#FetchContainer & {ref: from},
@ -30,10 +30,10 @@ import (
// Push a docker image
#Push: {
// Remote ref (example: "index.docker.io/alpine:latest")
ref: string
ref: string @dagger(input)
// Image
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
#up: [
op.#Load & {from: source},
@ -46,8 +46,8 @@ import (
// Build a Docker image from the provided Dockerfile contents
// FIXME: incorporate into #Build
#ImageFromDockerfile: {
dockerfile: string
context: dagger.#Artifact
dockerfile: string @dagger(input)
context: dagger.#Artifact @dagger(input)
#up: [
op.#DockerBuild & {

View File

@ -7,9 +7,9 @@ import (
)
#Create: {
filename: !=""
permissions: int | *0o644
contents: string | bytes
filename: !="" @dagger(input)
permissions: int | *0o644 @dagger(input)
contents: string | bytes @dagger(input)
#up: [
op.#WriteFile & {dest: filename, content: contents, mode: permissions},
@ -17,12 +17,12 @@ import (
}
#Append: {
filename: !=""
permissions: int | *0o644
contents: string | bytes
from: dagger.#Artifact
filename: !="" @dagger(input)
permissions: int | *0o644 @dagger(input)
contents: string | bytes @dagger(input)
from: dagger.#Artifact @dagger(input)
orig: (#read & {path: filename, "from": from}).data
orig: (#read & {path: filename, "from": from}).data @dagger(output)
#up: [
op.#WriteFile & {dest: filename, content: "\(orig)\(contents)", mode: permissions},
@ -30,16 +30,16 @@ import (
}
#Read: {
filename: !=""
from: dagger.#Artifact
contents: (#read & {path: filename, "from": from}).data
filename: !="" @dagger(input)
from: dagger.#Artifact @dagger(input)
contents: (#read & {path: filename, "from": from}).data @dagger(output)
}
#read: {
path: !=""
from: dagger.#Artifact
path: !="" @dagger(input)
from: dagger.#Artifact @dagger(input)
data: {
string
string @dagger(output)
#up: [
op.#Load & {"from": from},
op.#Export & {source: path},
@ -48,12 +48,12 @@ import (
}
#Glob: {
glob: !=""
filenames: [...string]
from: dagger.#Artifact
files: (_#glob & {"glob": glob, "from": from}).data
glob: !="" @dagger(input)
filenames: [...string] @dagger(input)
from: dagger.#Artifact @dagger(input)
files: (_#glob & {"glob": glob, "from": from}).data @dagger(output)
// trim suffix because ls always ends with newline
filenames: strings.Split(strings.TrimSuffix(files, "\n"), "\n")
filenames: strings.Split(strings.TrimSuffix(files, "\n"), "\n") @dagger(output)
}
_#glob: {

View File

@ -7,9 +7,9 @@ import (
// Base Google Cloud Config
#Config: {
// GCP region
region: string
region: string @dagger(input)
// GCP projcet
project: string
project: string @dagger(input)
// GCP service key
serviceKey: dagger.#Secret
serviceKey: dagger.#Secret @dagger(input)
}

View File

@ -13,7 +13,7 @@ import (
// GCR credentials
username: "oauth2accesstoken"
secret: {
string
string @dagger(output)
#up: [
op.#Load & {

View File

@ -11,15 +11,15 @@ import (
config: gcp.#Config
// GKE cluster name
clusterName: string
clusterName: string @dagger(input)
// Kubectl version
version: *"v1.19.9" | string
version: *"v1.19.9" | string @dagger(input)
// kubeconfig is the generated kube configuration file
kubeconfig: {
// FIXME There is a problem with dagger.#Secret type
string
string @dagger(output)
#up: [
op.#Load & {

View File

@ -7,9 +7,9 @@ import (
// A git repository
#Repository: {
remote: string
ref: string
subdir: string | *""
remote: string @dagger(input)
ref: string @dagger(input)
subdir: string | *"" @dagger(input)
#up: [
op.#FetchGit & {

View File

@ -11,8 +11,8 @@ import (
// A standalone go environment
#Container: {
// Go version to use
version: *"1.16" | string
source: dagger.#Artifact
version: *"1.16" | string @dagger(input)
source: dagger.#Artifact @dagger(input)
os.#Container & {
env: CGO_ENABLED: "0"
@ -38,16 +38,16 @@ import (
#Go: {
// Go version to use
version: *"1.16" | string
version: *"1.16" | string @dagger(input)
// Arguments to the Go binary
args: [...string]
args: [...string] @dagger(input)
// Source Directory to build
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Environment variables
env: [string]: string
env: [string]: string @dagger(input)
#up: [
op.#FetchContainer & {
@ -70,30 +70,30 @@ import (
#Build: {
// Go version to use
version: *#Go.version | string
version: *#Go.version | string @dagger(input)
// Source Directory to build
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Packages to build
packages: *"." | string
packages: *"." | string @dagger(input)
// Target architecture
arch: *"amd64" | string
arch: *"amd64" | string @dagger(input)
// Target OS
os: *"linux" | string
os: *"linux" | string @dagger(input)
// Build tags to use for building
tags: *"" | string
tags: *"" | string @dagger(input)
// LDFLAGS to use for linking
ldflags: *"" | string
ldflags: *"" | string @dagger(input)
// Specify the targeted binary name
output: string
output: string @dagger(output)
env: [string]: string
env: [string]: string @dagger(input)
#up: [
op.#Copy & {
@ -111,13 +111,13 @@ import (
#Test: {
// Go version to use
version: *#Go.version | string
version: *#Go.version | string @dagger(input)
// Source Directory to build
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Packages to test
packages: *"." | string
packages: *"." | string @dagger(input)
#Go & {
"version": version

View File

@ -13,26 +13,26 @@ import (
// A Yarn package.
#Package: {
// Application source code
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Environment variables
env: [string]: string
env: [string]: string @dagger(input)
// Write the contents of `environment` to this file,
// in the "envfile" format.
writeEnvFile: string | *""
writeEnvFile: string | *"" @dagger(input)
// Read build output from this directory
// (path must be relative to working directory).
buildDir: string | *"build"
buildDir: string | *"build" @dagger(input)
// Run this yarn script
script: string | *"build"
script: string | *"build" @dagger(input)
build: os.#Dir & {
from: ctr
path: "/build"
}
} @dagger(output)
ctr: os.#Container & {
image: alpine.#Image & {

View File

@ -11,47 +11,47 @@ import (
// Install a Helm chart
#Chart: {
// Helm deployment name
name: string
name: string @dagger(input)
// Helm chart to install from source
chartSource: dagger.#Artifact
chartSource: dagger.#Artifact @dagger(input)
// Helm chart to install from repository
chart?: string
chart?: string @dagger(input)
// Helm chart repository (defaults to stable)
repository: *"https://charts.helm.sh/stable" | string
repository: *"https://charts.helm.sh/stable" | string @dagger(input)
// Helm values (either a YAML string or a Cue structure)
values?: string
values?: string @dagger(input)
// Kubernetes Namespace to deploy to
namespace: string
namespace: string @dagger(input)
// Helm action to apply
action: *"installOrUpgrade" | "install" | "upgrade"
action: *"installOrUpgrade" | "install" | "upgrade" @dagger(input)
// time to wait for any individual Kubernetes operation (like Jobs for hooks)
timeout: string | *"5m"
timeout: string | *"5m" @dagger(input)
// if set, will wait until all Pods, PVCs, Services, and minimum number of
// Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state
// before marking the release as successful.
// It will wait for as long as timeout
wait: *true | bool
wait: *true | bool @dagger(input)
// if set, installation process purges chart on fail.
// The wait option will be set automatically if atomic is used
atomic: *true | bool
atomic: *true | bool @dagger(input)
// Kube config file
kubeconfig: dagger.#Secret
kubeconfig: dagger.#Secret @dagger(input)
// Helm version
version: *"3.5.2" | string
version: *"3.5.2" | string @dagger(input)
// Kubectl version
kubectlVersion: *"v1.19.9" | string
kubectlVersion: *"v1.19.9" | string @dagger(input)
#up: [
op.#Load & {

View File

@ -47,19 +47,19 @@ import (
#Apply: {
// Kubernetes config to deploy
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Kubernetes config to deploy inlined in a string
sourceInline?: string
sourceInline?: string @dagger(input)
// Kubernetes Namespace to deploy to
namespace: string
namespace: string @dagger(input)
// Version of kubectl client
version: *"v1.19.9" | string
version: *"v1.19.9" | string @dagger(input)
// Kube config file
kubeconfig: dagger.#Secret
kubeconfig: dagger.#Secret @dagger(input)
#code: #"""
kubectl create namespace "$KUBE_NAMESPACE" || true

View File

@ -8,7 +8,7 @@ import (
#Kustomization: {
// Kustomize binary version
version: *"v3.8.7" | string
version: *"v3.8.7" | string @dagger(input)
#code: #"""
[ -e /usr/local/bin/kubectl ] || {
@ -46,13 +46,13 @@ import (
// Apply a Kubernetes Kustomize folder
#Kustomize: {
// Kubernetes source
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
// Optional Kustomization file
kustomization: string
kustomization: string @dagger(input)
// Kustomize binary version
version: *"v3.8.7" | string
version: *"v3.8.7" | string @dagger(input)
#code: #"""
cp /kustomization.yaml /source | true

View File

@ -10,10 +10,10 @@ import (
#Account: {
// Use this Netlify account name
// (also referred to as "team" in the Netlify docs)
name: string | *""
name: string | *"" @dagger(input)
// Netlify authentication token
token: dagger.#Secret
token: dagger.#Secret @dagger(input)
}
// A Netlify site
@ -22,16 +22,16 @@ import (
account: #Account
// Contents of the application to deploy
contents: dagger.#Artifact
contents: dagger.#Artifact @dagger(input)
// Deploy to this Netlify site
name: string
name: string @dagger(input)
// Host the site at this address
customDomain?: string
customDomain?: string @dagger(input)
// Create the Netlify site if it doesn't exist?
create: bool | *true
create: bool | *true @dagger(input)
// Website url
url: {
@ -39,7 +39,7 @@ import (
from: ctr
path: "/netlify/url"
}
}.read.data
}.read.data @dagger(output)
// Unique Deploy URL
deployUrl: {
@ -47,7 +47,7 @@ import (
from: ctr
path: "/netlify/deployUrl"
}
}.read.data
}.read.data @dagger(output)
// Logs URL for this deployment
logsUrl: {
@ -55,7 +55,7 @@ import (
from: ctr
path: "/netlify/logsUrl"
}
}.read.data
}.read.data @dagger(output)
ctr: os.#Container & {
image: alpine.#Image & {

View File

@ -8,13 +8,13 @@ import (
)
#Configuration: {
version: string | *"latest"
version: string | *"latest" @dagger(input)
source: dagger.#Artifact
source: dagger.#Artifact @dagger(input)
tfvars?: [string]: _
tfvars?: [string]: _ @dagger(input)
env: [string]: string
env: [string]: string @dagger(input)
state: #up: [
op.#FetchContainer & {
@ -61,5 +61,5 @@ import (
},
]
...
}
} @dagger(output)
}