This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/stdlib/file/file.cue
Tony Worm 0e32bc68f8 add file ops
Signed-off-by: Tony Worm <tony@hofstadter.io>
2021-03-15 22:08:54 -07:00

73 lines
1.3 KiB
CUE

package file
import (
"strings"
"dagger.io/dagger"
)
#Create: {
filename: !=""
permissions: int | *0o644
contents: string | bytes
#compute: [
dagger.#WriteFile & { dest: filename, content: contents, mode: permissions}
]
}
#Append: {
filename: !=""
permissions: int | *0o644
contents: string | bytes
from: dagger.#Artifact
orig: (#read & { path: filename, "from": from }).data
#compute: [
dagger.#WriteFile & { dest: filename, content: "\(orig)\(contents)", mode: permissions}
]
}
#Read: {
filename: !=""
from: dagger.#Artifact
contents: (#read & { path: filename, "from": from }).data
}
#read: {
path: !=""
from: dagger.#Artifact
data: {
string
#compute: [
dagger.#Load & {"from": from},
dagger.#Export & { source: path }
]
}
}
#Glob: {
glob: !=""
filenames: [...string]
from: dagger.#Artifact
files: (_#glob & { "glob": glob, "from": from }).data
// trim suffix because ls always ends with newline
filenames: strings.Split(strings.TrimSuffix(files, "\n"), "\n")
}
_#glob: {
glob: !=""
from: dagger.#Artifact
data: {
string
_tmppath: "/tmp/ls.out"
#compute: [
dagger.#Load & {"from": from},
dagger.#Exec & {
args: ["sh", "-c", "ls \(glob) > \(_tmppath)"]
},
dagger.#Export & { source: _tmppath }
]
}
}