package main

import (
	"dagger.io/dagger"
	"dagger.io/dagger/core"
)

dagger.#Plan & {
	actions: {
		image: core.#Pull & {
			source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3"
		}

		exec: core.#Exec & {
			input: image.output
			args: [
				"sh", "-c",
				#"""
					echo -n hello world > /output.txt
					"""#,
			]
		}

		dir: core.#Mkdir & {
			input: dagger.#Scratch
			path:  "/dir"
		}

		dirfoo: core.#WriteFile & {
			input:    dir.output
			path:     "/dir/foo"
			contents: "foo"
		}

		dirfoo2: core.#WriteFile & {
			input:    dir.output
			path:     "/dir/foo"
			contents: "foo2"
		}

		dirbar: core.#WriteFile & {
			input:    dir.output
			path:     "/dir/bar"
			contents: "bar"
		}

		test: {
			merge: core.#Merge & {
				inputs: [
					dir.output,
					dirfoo.output,
					dirbar.output,
					exec.output,
					dirfoo2.output,
				]
			}

			verify_merge_output: core.#ReadFile & {
				input: merge.output
				path:  "/output.txt"
			} & {
				contents: "hello world"
			}
			verify_merge_dirbar: core.#ReadFile & {
				input: merge.output
				path:  "/dir/bar"
			} & {
				contents: "bar"
			}
			verify_merge_dirfoo: core.#ReadFile & {
				input: merge.output
				path:  "/dir/foo"
			} & {
				contents: "foo2"
			}
		}
	}
}