package changelog
import (
"dagger.io/dagger"
"universe.dagger.io/docker"
"universe.dagger.io/git"
"universe.dagger.io/examples/changelog.com/elixir/mix"
)
dagger.#Plan & {
// Receive things from client
inputs: {
directories: {
// App source code
app?: _
}
secrets: {
// Docker ID password
docker: _
params: {
app: {
// App name
name: string | *"changelog"
// Address of app base image
image: docker.#Ref | *"thechangelog/runtime:2021-05-29T10.17.12Z"
test: {
// Address of test db image
db: image: docker.#Ref | *"circleci/postgres:12.6"
// Do things
actions: {
name: inputs.params.app.name
// changelog.com source code
source: dagger.#FS
if inputs.directories.app != _|_ {
source: inputs.directories.app.contents
if inputs.directories.app == _|_ {
fetch: git.#Pull & {
remote: "https://github.com/thechangelog/changelog.com"
ref: "master"
source: fetch.output
// Assemble base image
base: docker.#Pull & {
source: inputs.params.app.image
image: base.output
// Download Elixir dependencies
deps: mix.#Get & {
"name": name
"source": source
container: "image": image
// Compile dev environment
dev: mix.#Compile & {
env: "dev"