/ 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  }