in newt/cli/image_cmds.go [76:148]
func createImageRunCmd(cmd *cobra.Command, args []string) {
var verAsTimestamp bool
var ver image.ImageVersion
var err error
if len(args) < 2 {
NewtUsage(cmd, util.NewNewtError("Must specify target and version"))
}
if useV1 && useV2 {
NewtUsage(cmd, util.NewNewtError("Either -1, or -2, but not both"))
}
if !useV1 {
useV2 = true
}
TryGetProject()
targetName := args[0]
t := ResolveTarget(targetName)
if t == nil {
NewtUsage(cmd, util.NewNewtError("Invalid target name: "+targetName))
}
if args[1] == "timestamp" {
verAsTimestamp = true
} else {
verAsTimestamp = false
ver, err = image.ParseVersion(args[1])
if err != nil {
NewtUsage(cmd, err)
}
}
b, err := builder.NewTargetBuilder(t)
if err != nil {
NewtUsage(nil, err)
}
keys, _, err := parseKeyArgs(args[2:])
if err != nil {
NewtUsage(cmd, err)
}
if err := b.Build(); err != nil {
NewtUsage(nil, err)
}
if verAsTimestamp {
stat, err := os.Stat(b.AppBuilder.AppElfPath())
if err != nil {
NewtUsage(nil, err)
}
ver.Major = uint8(stat.ModTime().Year() % 1000)
ver.Minor = uint8(stat.ModTime().Month())
ver.Rev = uint16(stat.ModTime().Day())
ver.BuildNum = uint32(stat.ModTime().Hour()*10000 +
stat.ModTime().Minute()*100 + stat.ModTime().Second())
}
if useV1 {
err = imgprod.ProduceAllV1(b, ver, keys, encKeyFilename, encKeyIndex,
hdrPad, imagePad, sections, useLegacyTLV)
} else {
err = imgprod.ProduceAll(b, ver, keys, encKeyFilename, encKeyIndex,
hdrPad, imagePad, sections, useLegacyTLV)
}
if err != nil {
NewtUsage(nil, err)
}
}