universe: python: Update to 0.2

Update some API references that had fallen out of use.

Notably this no longer ran, since docker.#Run now asks for an "input" not an "image," alpine.#Image became alpine.#Build and you have to reference its output.

Remove a FIXME -- now copies the inline script to the container as a file rather than executing it with python -c.

Add tests

Signed-off-by: Adam Smith <adamsmith@nottheeconomist.com>
This commit is contained in:
Adam Smith
2022-04-04 21:26:17 -07:00
committed by Adam Smith
parent a717ec0734
commit 80d73bc5cb
4 changed files with 94 additions and 7 deletions

View File

@@ -2,28 +2,60 @@
package python
import (
"universe.dagger.io/docker"
"dagger.io/dagger"
"dagger.io/dagger/core"
"universe.dagger.io/docker"
"universe.dagger.io/alpine"
)
// Run a python script in a container
#Run: {
// Contents of the python script
script: string
script: {
// A directory containing one or more bash scripts
directory: dagger.#FS
// Name of the file to execute
filename: string
_directory: directory
_filename: filename
} | {
// Script contents
contents: string
_filename: "run.py"
_write: core.#WriteFile & {
input: dagger.#Scratch
path: _filename
"contents": contents
}
_directory: _write.output
}
// arguments to the script
args: [...string]
// where to mount the script inside the container
_mountpoint: "/run/python"
// FIXME: don't pass the script as argument: write to filesystme instead
docker.#Run & {
command: {
name: "python"
flags: "-c": script
name: "python3"
"args": ["\(_mountpoint)/\(script._filename)"] + args
}
// As a convenience, image defaults to a ready-to-use python environment
image: docker.#Image | *_defaultImage
input: docker.#Image | *_defaultImage.output
_defaultImage: alpine.#Image & {
_defaultImage: alpine.#Build & {
packages: python: version: "3"
}
mounts: "Python script": {
contents: script._directory
dest: _mountpoint
}
}
}