diff --git a/pkg/dagger.io/cue.mod/module.cue b/pkg/dagger.io/cue.mod/module.cue new file mode 100644 index 00000000..b2757079 --- /dev/null +++ b/pkg/dagger.io/cue.mod/module.cue @@ -0,0 +1 @@ +module: "dagger.io" diff --git a/pkg/universe.dagger.io/alpine/alpine.cue b/pkg/universe.dagger.io/alpine/alpine.cue index f50fab9b..380a3018 100644 --- a/pkg/universe.dagger.io/alpine/alpine.cue +++ b/pkg/universe.dagger.io/alpine/alpine.cue @@ -22,12 +22,14 @@ let defaultVersion = "3.13.5@sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145 source: "index.docker.io/alpine:\(version)" }, for pkgName, pkg in packages { - run: cmd: { - name: "apk" - args: ["add", "\(pkgName)\(version)"] - flags: { - "-U": true - "--no-cache": true + docker.#Run & { + cmd: { + name: "apk" + args: ["add", "\(pkgName)\(pkg.version)"] + flags: { + "-U": true + "--no-cache": true + } } } }, diff --git a/pkg/universe.dagger.io/cue.mod/pkg/.gitignore b/pkg/universe.dagger.io/cue.mod/pkg/.gitignore new file mode 100644 index 00000000..331f139d --- /dev/null +++ b/pkg/universe.dagger.io/cue.mod/pkg/.gitignore @@ -0,0 +1,5 @@ +# generated by dagger +dagger.lock +alpha.dagger.io +dagger.io +universe.dagger.io \ No newline at end of file diff --git a/pkg/universe.dagger.io/cue.mod/pkg/alpha.dagger.io b/pkg/universe.dagger.io/cue.mod/pkg/alpha.dagger.io deleted file mode 120000 index 961afc64..00000000 --- a/pkg/universe.dagger.io/cue.mod/pkg/alpha.dagger.io +++ /dev/null @@ -1 +0,0 @@ -../../../stdlib \ No newline at end of file diff --git a/pkg/universe.dagger.io/yarn/tests/testdata/package.json b/pkg/universe.dagger.io/yarn/test/testdata/package.json similarity index 100% rename from pkg/universe.dagger.io/yarn/tests/testdata/package.json rename to pkg/universe.dagger.io/yarn/test/testdata/package.json diff --git a/pkg/universe.dagger.io/yarn/tests/testdata2/package.json b/pkg/universe.dagger.io/yarn/test/testdata2/package.json similarity index 100% rename from pkg/universe.dagger.io/yarn/tests/testdata2/package.json rename to pkg/universe.dagger.io/yarn/test/testdata2/package.json diff --git a/pkg/universe.dagger.io/yarn/test/yarn-test.cue b/pkg/universe.dagger.io/yarn/test/yarn-test.cue new file mode 100644 index 00000000..46262d6a --- /dev/null +++ b/pkg/universe.dagger.io/yarn/test/yarn-test.cue @@ -0,0 +1,80 @@ +package yarn + +import ( + "dagger.io/dagger" + "dagger.io/dagger/engine" + + "universe.dagger.io/yarn" + // "universe.dagger.io/alpine" + // "universe.dagger.io/bash" +) + +dagger.#Plan & { + inputs: directories: { + testdata: path: "./testdata" + testdata2: path: "./testdata2" + } + + actions: { + TestReact: { + cache: engine.#CacheDir & { + id: "yarn cache" + } + + pkg: yarn.#Build & { + source: inputs.directories.testdata.contents + "cache": cache + } + + _image: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + // FIXME: use bash.#Script + test: engine.#Exec & { + input: _image.output + mounts: build: { + dest: "/build" + contents: pkg.output + } + args: [ + "sh", "-c", + #""" + test "$(cat /build/test)" = "output" + """#, + ] + } + } + + // FIXME: re-enable? + // TestSecretsAndFile: { + // pkg: #Package & { + // source: inputs.directories.testdata2 + // writeEnvFile: "/.env" + // env: { + // one: "one" + // two: "two" + // } + // secrets: { + // secretone: dagger.#Secret @dagger(input) + // secretwo: dagger.#Secret @dagger(input) + // } + // } + + // test: os.#Container & { + // image: alpine.#Image & { + // package: bash: true + // } + // shell: path: "/bin/bash" + // mount: "/build": from: pkg.build + // command: """ + // content="$(cat /build/env)" + // [[ "${content}" = *"SECRETONE="* ]] && \\ + // [[ "${content}" = *"SECRETWO="* ]] && \\ + // [[ "${content}" = *"ONE=one"* ]] && \\ + // [[ "${content}" = *"TWO=two"* ]] + // """ + // } + // } + } +} diff --git a/pkg/universe.dagger.io/yarn/tests/simple/simple.cue b/pkg/universe.dagger.io/yarn/tests/simple/simple.cue deleted file mode 100644 index 19d771b1..00000000 --- a/pkg/universe.dagger.io/yarn/tests/simple/simple.cue +++ /dev/null @@ -1,11 +0,0 @@ -package yarn - -import ( - "dagger.io/dagger/engine" -) - -b: #Build & { - source: engine.#Scratch -} - -out: b.output diff --git a/pkg/universe.dagger.io/yarn/yarn.cue b/pkg/universe.dagger.io/yarn/yarn.cue index 6f0d839c..46e34b7e 100644 --- a/pkg/universe.dagger.io/yarn/yarn.cue +++ b/pkg/universe.dagger.io/yarn/yarn.cue @@ -30,28 +30,51 @@ import ( // Run this yarn script script: string | *"build" + // Fix for shadowing issues + let yarnScript = script + + // Cache to use, passed by the caller + cache: engine.#CacheDir + // Optional arguments for the script args: [...string] | *[] // Secret variables + // FIXME: not implemented. Are they needed? secrets: [string]: dagger.#Secret + // FIXME: Yarn's version depends on Alpine's version // Yarn version - yarnVersion: *"=~1.22" | string + // yarnVersion: *"=~1.22" | string + + // FIXME: custom base image not supported + image: alpine.#Build & { + packages: { + bash: {} + yarn: {} + } + } // Run yarn in a containerized build environment command: bash.#Run & { - *{ - image: (alpine.#Build & { - bash: version: "=~5.1" - yarn: version: yarnVersion - }).image - env: CUSTOM_IMAGE: "0" - } | { - env: CUSTOM_IMAGE: "1" - } + // FIXME: not working? + // *{ + // _image: alpine.#Build & { + // packages: { + // bash: version: "=~5.1" + // yarn: version: yarnVersion + // } + // } - script: """ + // image: _image.output + // env: CUSTOM_IMAGE: "0" + // } | { + // env: CUSTOM_IMAGE: "1" + // } + + "image": image.output + + script: #""" # Create $ENVFILE_NAME file if set [ -n "$ENVFILE_NAME" ] && echo "$ENVFILE" > "$ENVFILE_NAME" @@ -60,12 +83,12 @@ import ( opts=( $(echo $YARN_ARGS) ) yarn --cwd "$YARN_CWD" run "$YARN_BUILD_SCRIPT" ${opts[@]} mv "$YARN_BUILD_DIRECTORY" /build - """ + """# mounts: { "yarn cache": { dest: "/cache/yarn" - contents: engine.#CacheDir + contents: cache } "package source": { dest: "/src" @@ -74,10 +97,10 @@ import ( // FIXME: mount secrets } - output: directories: "/build": _ + export: directories: "/build": _ env: { - YARN_BUILD_SCRIPT: script + YARN_BUILD_SCRIPT: yarnScript YARN_ARGS: strings.Join(args, "\n") YARN_CACHE_FOLDER: "/cache/yarn" YARN_CWD: cwd @@ -92,5 +115,5 @@ import ( } // The final contents of the package after build - output: command.output.directories."/build".contents + output: command.export.directories."/build".contents } diff --git a/plancontext/fs.go b/plancontext/fs.go index ab6f09c6..f1213ce3 100644 --- a/plancontext/fs.go +++ b/plancontext/fs.go @@ -84,7 +84,7 @@ func (c *fsContext) FromValue(v *compiler.Value) (*FS, error) { id, err := v.LookupPath(fsIDPath).String() if err != nil { - return nil, fmt.Errorf("invalid FS %q: %w", v.Path(), err) + return nil, fmt.Errorf("invalid FS at path %q: %w", v.Path(), err) } fs, ok := c.store[id]