func runRehashCmd()

in cli/mfg_cmds.go [356:408]


func runRehashCmd(cmd *cobra.Command, args []string) {
	if len(args) < 1 {
		ImgmodUsage(cmd, nil)
	}

	mfgDir := args[0]

	outDir, err := CalcOutFilename(mfgDir)
	if err != nil {
		ImgmodUsage(cmd, err)
	}

	m, man, err := readMfgDir(mfgDir)
	if err != nil {
		ImgmodUsage(cmd, err)
	}

	if err := m.RefillHash(man.EraseVal); err != nil {
		ImgmodUsage(nil, err)
	}

	hash, err := m.Hash(man.EraseVal)
	if err != nil {
		ImgmodUsage(nil, err)
	}

	// Update manifest.
	man.MfgHash = hex.EncodeToString(hash)

	// Write new artifacts.
	if err := EnsureOutDir(mfgDir, outDir); err != nil {
		ImgmodUsage(nil, err)
	}
	binPath := fmt.Sprintf("%s/%s", outDir, man.BinPath)

	newBin, err := m.Bytes(man.EraseVal)
	if err != nil {
		ImgmodUsage(nil, err)
	}
	if err := WriteFile(newBin, binPath); err != nil {
		ImgmodUsage(nil, err)
	}

	json, err := man.MarshalJson()
	if err != nil {
		ImgmodUsage(nil, err)
	}

	manPath := fmt.Sprintf("%s/%s", outDir, mfg.MANIFEST_FILENAME)
	if err := WriteFile(json, manPath); err != nil {
		ImgmodUsage(nil, err)
	}
}