282759c0e5
In preparation for Europa, we will vendor multiple CUE modules: - `pkg/alpha.dagger.io`: legacy non-europa packages - `pkg/dagger.io`: core Europa packages - `pkg/universe.dagger.io`: Europa universe Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
90 lines
1.2 KiB
CUE
90 lines
1.2 KiB
CUE
package gcs
|
|
|
|
import (
|
|
"alpha.dagger.io/alpine"
|
|
"alpha.dagger.io/dagger/op"
|
|
"alpha.dagger.io/gcp"
|
|
)
|
|
|
|
#List: {
|
|
// GCP Config
|
|
config: gcp.#Config
|
|
|
|
// Target GCP URL (e.g. gs://<bucket-name>/<path>/<sub-path>)
|
|
target: string
|
|
|
|
// URL: dummy URL, used to force a dependency
|
|
url: string
|
|
|
|
contents: {
|
|
string
|
|
|
|
#up: [
|
|
op.#Load & {
|
|
from: gcp.#GCloud & {
|
|
"config": config
|
|
}
|
|
},
|
|
|
|
op.#Exec & {
|
|
args: [
|
|
"/bin/bash",
|
|
"--noprofile",
|
|
"--norc",
|
|
"-eo",
|
|
"pipefail",
|
|
"-c",
|
|
#"""
|
|
gsutil ls -r \#(target) > /contents
|
|
"""#,
|
|
]
|
|
env: URL: url
|
|
},
|
|
|
|
op.#Export & {
|
|
source: "/contents"
|
|
format: "string"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
#VerifyGCS: {
|
|
file: string
|
|
config: gcp.#Config
|
|
target: string
|
|
url: string
|
|
|
|
lists: #List & {
|
|
"config": config
|
|
"target": target
|
|
"url": url
|
|
}
|
|
|
|
test: #up: [
|
|
op.#Load & {
|
|
from: alpine.#Image & {
|
|
package: bash: true
|
|
}
|
|
},
|
|
|
|
op.#WriteFile & {
|
|
dest: "/test"
|
|
content: lists.contents
|
|
},
|
|
|
|
op.#Exec & {
|
|
always: true
|
|
args: [
|
|
"/bin/bash",
|
|
"--noprofile",
|
|
"--norc",
|
|
"-eo",
|
|
"pipefail",
|
|
"-c",
|
|
"grep -q \(file) /test",
|
|
]
|
|
},
|
|
]
|
|
}
|