github.com/beauknowssoftware/makehcl@v0.0.0-20200322000747-1b9bb1e1c008/build/cross_platform.hcl (about)

     1  // cross platform binaries
     2  var {
     3    go_envs = [
     4      {
     5        goos : "darwin",
     6        goarch : "386"
     7      },
     8      {
     9        goos : "darwin",
    10        goarch : "amd64"
    11      },
    12      {
    13        goos : "linux",
    14        goarch : "386"
    15      },
    16      {
    17        goos : "linux",
    18        goarch : "amd64"
    19      },
    20    ]
    21    env_cmds = flatten([
    22    for cmd in var.cmds : [
    23    for env in var.go_envs : {
    24      path : cmd.path,
    25      bin : path("bin/", env.goos, env.goarch, basename(cmd.path)),
    26      env : env,
    27    }
    28    ]
    29    ])
    30  }
    31  dynamic rule {
    32    alias    = "env_bins"
    33    for_each = var.env_cmds
    34    as       = "cmd"
    35  
    36    target       = cmd.bin
    37    dependencies = ".test"
    38    command      = "go build -o ${target} ./${cmd.path}"
    39  
    40    environment = {
    41      GOOS   = cmd.env.goos
    42      GOARCH = cmd.env.goarch
    43    }
    44  }