// Helpers to run PowerShell commands in containers package powershell import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/docker" ) // Run a PowerShell (pwsh) script in a Docker container // This does not suppore Windows containers or Windows PowerShell. // Since this is a thin wrapper over docker.#Run, we embed it. // Whether to embed or wrap is a case-by-case decision, like in Go. #Run: { // The script to execute script: { // A directory containing one or more PowerShell scripts directory: dagger.#FS // Name of the file to execute filename: string _directory: directory _filename: filename } | { // Script contents contents: string _filename: "run.ps1" _write: core.#WriteFile & { input: dagger.#Scratch path: _filename "contents": contents } _directory: _write.output } // Arguments to the script args: [...string] // Where in the container to mount the scripts directory _mountpoint: "/powershell/scripts" docker.#Run & { command: { name: "pwsh" "args": args flags: "-File": "\(_mountpoint)/\(script._filename)" } mounts: "Pwsh scripts": { contents: script._directory dest: _mountpoint } } }