Skip to main content Svelte Highlight v7.21.1

Earthfile language preview

1. Build target

VERSION, FROM, COPY/RUN, and SAVE ARTIFACT
horizon-dark
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin
atom-one-dark
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin
github-dark
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin
dracula
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin
nord
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin
github
VERSION 0.8
FROM golang:1.22
WORKDIR /app
build:
    COPY src .
    RUN go build -o bin
    SAVE ARTIFACT bin

2. Control flow

FOR/IF with END, unique to Earthly
horizon-dark
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END
atom-one-dark
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END
github-dark
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END
dracula
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END
nord
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END
github
deps:
    FOR pkg IN foo bar
        RUN echo $pkg
    END
    IF [ -f go.mod ]
        RUN go mod download
    END

3. Multi-target image

BUILD another target and SAVE IMAGE
horizon-dark
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest
atom-one-dark
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest
github-dark
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest
dracula
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest
nord
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest
github
VERSION 0.8
FROM alpine:3.19
image:
    BUILD +build
    COPY +build/bin /usr/bin/app
    SAVE IMAGE myapp:latest