func runSplitCmd()

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