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)
}
}