func runJoinCmd()

in cli/mfg_cmds.go [209:270]


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

	splitDir := args[0]
	outDir := args[1]

	mm, err := readManifest(splitDir + "/mfg")
	if err != nil {
		ImgmodUsage(cmd, err)
	}
	areas, err := extractFlashAreas(mm)
	if err != nil {
		ImgmodUsage(cmd, err)
	}

	nbmap, err := createNameBlobMap(splitDir, areas)
	if err != nil {
		ImgmodUsage(nil, err)
	}

	bin, err := imfg.Join(nbmap, mm.EraseVal, areas)
	if err != nil {
		ImgmodUsage(nil, err)
	}

	m, err := mfg.Parse(bin, mm.Meta.EndOffset, mm.EraseVal)
	if err != nil {
		ImgmodUsage(nil, err)
	}

	infos, err := ioutil.ReadDir(splitDir + "/mfg")
	if err != nil {
		ImgmodUsage(nil, errors.Wrapf(err,
			"Error reading source mfg directory: %s"))
	}
	for _, info := range infos {
		if info.Name() != mfg.MFG_BIN_IMG_FILENAME {
			src := splitDir + "/mfg/" + info.Name()
			dst := outDir + "/" + info.Name()
			if info.IsDir() {
				err = CopyDir(src, dst)
			} else {
				err = CopyFile(src, dst)
			}
			if err != nil {
				ImgmodUsage(nil, err)
			}
		}
	}

	finalBin, err := m.Bytes(mm.EraseVal)
	if err != nil {
		ImgmodUsage(nil, err)
	}

	binPath := fmt.Sprintf("%s/%s", outDir, mfg.MFG_BIN_IMG_FILENAME)
	if err := WriteFile(finalBin, binPath); err != nil {
		ImgmodUsage(nil, err)
	}
}