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
|
package io
|
||||||
|
|
||||||
import (
|
// Standard interface for directory operations in cue
|
||||||
"dagger.io/dagger"
|
|
||||||
"dagger.io/dagger/op"
|
|
||||||
)
|
|
||||||
|
|
||||||
#Dir: {
|
#Dir: {
|
||||||
from: dagger.#Artifact
|
read: tree: string
|
||||||
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"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Standard interface for file operations in cue
|
||||||
#File: {
|
#File: {
|
||||||
from: dagger.#Artifact
|
#Reader
|
||||||
path: string
|
#Writer
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
#ReadWriter: #Reader & #Writer
|
||||||
|
|
||||||
|
#Reader: {
|
||||||
read: {
|
read: {
|
||||||
|
// FIXME: support different data schemas for different formats
|
||||||
format: "string" | "json" | "yaml" | "lines"
|
format: "string" | "json" | "yaml" | "lines"
|
||||||
data: {
|
data: {
|
||||||
string
|
string
|
||||||
#up: [
|
...
|
||||||
op.#Load & {"from": from},
|
|
||||||
op.#Export & {source: path, "format": format},
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
#Writer: {
|
||||||
write: *null | {
|
write: *null | {
|
||||||
// FIXME: support writing in multiple formats
|
// FIXME: support writing in multiple formats
|
||||||
// FIXME: append
|
// FIXME: append
|
||||||
data: _
|
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