66 lines
967 B
CUE
66 lines
967 B
CUE
|
package os
|
||
|
|
||
|
import (
|
||
|
"dagger.io/io"
|
||
|
|
||
|
"dagger.io/dagger"
|
||
|
"dagger.io/dagger/op"
|
||
|
)
|
||
|
|
||
|
#Dir: io.#Dir & {
|
||
|
from: dagger.#Artifact
|
||
|
path: string
|
||
|
|
||
|
// Read the tree structure (not file contents)
|
||
|
read: tree: {
|
||
|
string// FIXME: only raw 'find' output for now
|
||
|
#up: [
|
||
|
op.#FetchContainer & {
|
||
|
ref: "alpine" // FIXME: use alpine or docker package
|
||
|
},
|
||
|
op.#Exec & {
|
||
|
mount: "/data": "from": from
|
||
|
args: [
|
||
|
"sh", "-c",
|
||
|
#"find /data | sed 's/^\/data//' > /export.txt"#,
|
||
|
]
|
||
|
},
|
||
|
op.#Export & {
|
||
|
source: "/export.txt"
|
||
|
format: "string"
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#File: {
|
||
|
from: dagger.#Artifact
|
||
|
path: string
|
||
|
|
||
|
io.#Reader & {
|
||
|
read: {
|
||
|
format: _
|
||
|
data: {
|
||
|
_
|
||
|
#up: [
|
||
|
op.#Load & {"from": from},
|
||
|
op.#Export & {source: path, "format": format},
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
io.#Writer & {
|
||
|
write: *null | {
|
||
|
data: _
|
||
|
#up: [
|
||
|
op.#Load & {"from": from},
|
||
|
op.#WriteFile & {
|
||
|
dest: path
|
||
|
contents: data
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
}
|