package netlify import ( "dagger.io/dagger" "dagger.io/alpine" "dagger.io/os" ) // A Netlify account #Account: { // Use this Netlify account name // (also referred to as "team" in the Netlify docs) name: string | *"" // Netlify authentication token token: dagger.#Secret } // A Netlify site #Site: { // Netlify account this site is attached to account: #Account // Contents of the application to deploy contents: dagger.#Artifact // Deploy to this Netlify site name: string // Host the site at this address customDomain?: string // Create the Netlify site if it doesn't exist? create: bool | *true // Website url url: { os.#File & { from: ctr path: "/netlify/url" } }.read.data // Unique Deploy URL deployUrl: { os.#File & { from: ctr path: "/netlify/deployUrl" } }.read.data // Logs URL for this deployment logsUrl: { os.#File & { from: ctr path: "/netlify/logsUrl" } }.read.data ctr: os.#Container & { image: alpine.#Image & { package: { bash: "=~5.1" jq: "=~1.6" curl: "=~7.76" yarn: "=~1.22" } } setup: [ "yarn global add netlify-cli@2.47.0", ] // set in netlify.sh.cue // FIXME: use embedding once cue supports it command: _ env: { NETLIFY_SITE_NAME: name if (create) { NETLIFY_SITE_CREATE: "1" } if customDomain != _|_ { NETLIFY_DOMAIN: customDomain } NETLIFY_ACCOUNT: account.name NETLIFY_AUTH_TOKEN: account.token } dir: "/src" mount: "/src": from: contents } }