in cli/mfg_cmds.go [164:207]
func runSplitCmd(cmd *cobra.Command, args []string) {
if len(args) < 2 {
ImgmodUsage(cmd, nil)
}
mfgDir := args[0]
outDir := args[1]
m, man, err := readMfgDir(mfgDir)
if err != nil {
ImgmodUsage(cmd, err)
}
bin, err := m.Bytes(man.EraseVal)
if err != nil {
ImgmodUsage(nil, err)
}
areas, err := extractFlashAreas(man)
if err != nil {
ImgmodUsage(nil, err)
}
nbmap, err := imfg.Split(bin, man, areas)
if err != nil {
ImgmodUsage(nil, err)
}
if err := os.Mkdir(outDir, os.ModePerm); err != nil {
ImgmodUsage(nil, errors.Wrapf(err, "failed to make output directory"))
}
for name, data := range nbmap {
filename := fmt.Sprintf("%s/%s.bin", outDir, name)
if err := WriteFile(data, filename); err != nil {
ImgmodUsage(nil, err)
}
}
mfgDstDir := fmt.Sprintf("%s/mfg", outDir)
if err := CopyDir(mfgDir, mfgDstDir); err != nil {
ImgmodUsage(nil, err)
}
}