/ just.nu
just.nu
1 def main [] {} 2 3 def "main docker build" [ 4 --version (-v): string 5 --push (-p) 6 ] { 7 let repo = "forge.dnaka91.rocks/dnaka91/capsule" 8 9 let workspace = open Cargo.toml | get workspace.package 10 let package = open capsule/Cargo.toml | get package 11 let version = $version | default { $package | get version } 12 13 let labels = { 14 org.containers.image.title: ($package | get name) 15 org.containers.image.description: ($package | get description?) 16 org.containers.image.url: ($workspace | get homepage) 17 org.containers.image.source: ($workspace | get repository) 18 org.containers.image.version: $version 19 org.containers.image.created: (date now | date to-timezone utc | format date "%+") 20 org.containers.image.revision: (jj log --no-graph -r @- -T 'commit_id') 21 org.containers.image.license: ($workspace | get license) 22 } 23 | items { |key, value| ["--label" $"($key)=($value)"] } 24 | flatten 25 26 let platforms = [ 27 linux/amd64 28 linux/arm64 29 ] 30 | str join "," 31 32 ( 33 docker buildx build 34 (if $push { --push } else { --load }) 35 --platform $platforms 36 --tag $"($repo):($version)" 37 ...$labels 38 . 39 ) 40 }