stdlib: io for portable I/O interfaces, os for system primitives
Signed-off-by: Solomon Hykes <sh.github.6811@hykes.org>
This commit is contained in:
parent
114b777402
commit
052a623294
@ -1,59 +1,37 @@
|
||||
package io
|
||||
|
||||
import (
|
||||
"dagger.io/dagger"
|
||||
"dagger.io/dagger/op"
|
||||
)
|
||||
|
||||
// Standard interface for directory operations in cue
|
||||
#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"
|
||||
},
|
||||
]
|
||||
}
|
||||
read: tree: string
|
||||
...
|
||||
}
|
||||
|
||||
// Standard interface for file operations in cue
|
||||
#File: {
|
||||
from: dagger.#Artifact
|
||||
path: string
|
||||
#Reader
|
||||
#Writer
|
||||
...
|
||||
}
|
||||
|
||||
#ReadWriter: #Reader & #Writer
|
||||
|
||||
#Reader: {
|
||||
read: {
|
||||
// FIXME: support different data schemas for different formats
|
||||
format: "string" | "json" | "yaml" | "lines"
|
||||
data: {
|
||||
string
|
||||
#up: [
|
||||
op.#Load & {"from": from},
|
||||
op.#Export & {source: path, "format": format},
|
||||
]
|
||||
...
|
||||
}
|
||||
}
|
||||
...
|
||||
}
|
||||
|
||||
#Writer: {
|
||||
write: *null | {
|
||||
// FIXME: support writing in multiple formats
|
||||
// FIXME: append
|
||||
data: _
|
||||
#up: [
|
||||
op.#Load & {"from": from},
|
||||
op.#WriteFile & {
|
||||
dest: path
|
||||
contents: data
|
||||
},
|
||||
]
|
||||
}
|
||||
...
|
||||
}
|
||||
|
65
stdlib/os/os.cue
Normal file
65
stdlib/os/os.cue
Normal file
@ -0,0 +1,65 @@
|
||||
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
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user