@@ -19,6 +19,7 @@ package main
1919
2020import (
2121 "bytes"
22+ "encoding/json"
2223 "flag"
2324 "io/ioutil"
2425 "log"
4344 operatingSystem = flag .String ("operatingSystem" , "linux" , "Operating system to create docker image for, eg. linux." )
4445 osVersion = flag .String ("osVersion" , "" , "Operating system version to create docker image for (primarily for windows)." )
4546 labelsArray utils.ArrayStringFlags
47+ labelsFilesArray utils.ArrayStringFlags
4648 ports utils.ArrayStringFlags
4749 volumes utils.ArrayStringFlags
4850 entrypointPrefix utils.ArrayStringFlags
5557
5658func main () {
5759 flag .Var (& labelsArray , "labels" , "Augment the Label of the previous layer." )
60+ flag .Var (& labelsFilesArray , "labelsFile" , "Augment the Label of the previous layer (json file with string-to-string dict)." )
5861 flag .Var (& ports , "ports" , "Augment the ExposedPorts of the previous layer." )
5962 flag .Var (& volumes , "volumes" , "Augment the Volumes of the previous layer." )
6063 flag .Var (& entrypointPrefix , "entrypointPrefix" , "Prefix the Entrypoint with the specified arguments." )
@@ -83,6 +86,20 @@ func main() {
8386 }
8487 }
8588
89+ for _ , labelFile := range labelsFilesArray {
90+ labelsBlob , err := ioutil .ReadFile (labelFile )
91+ if err != nil {
92+ log .Fatalf ("Failed to read the labels JSON file: %v" , err )
93+ }
94+ labels := make (map [string ]string )
95+ if err := json .Unmarshal (labelsBlob , & labels ); err != nil {
96+ log .Fatalf ("Can't parse JSON file %q: %v" , labelFile , err )
97+ }
98+ for name , value := range labels {
99+ labelsArray = append (labelsArray , name + "=" + value )
100+ }
101+ }
102+
86103 stamper , err := compat .NewStamper (stampInfoFile )
87104 if err != nil {
88105 log .Fatalf ("Failed to initialize the stamper: %v" , err )
0 commit comments