func NewTargetTester(target *target.Target, testPkg *pkg.LocalPackage) (*TargetBuilder, error) { if err := target.Validate(testPkg == nil); err != nil { return nil, err } bspPkg, err := pkg.NewBspPackage(target.Bsp()) if err != nil { return nil, err } compilerPkg, err := project.GetProject().ResolvePackage( bspPkg.Repo(), bspPkg.CompilerName) if err != nil { return nil, err } t := &TargetBuilder{ target: target, bspPkg: bspPkg, compilerPkg: compilerPkg, appPkg: target.App(), loaderPkg: target.Loader(), testPkg: testPkg, injectedSettings: map[string]string{}, } return t, nil }
// Tells you if a target's directory contains extra user files (i.e., files // other than pkg.yml). func targetContainsUserFiles(t *target.Target) (bool, error) { contents, err := ioutil.ReadDir(t.Package().BasePath()) if err != nil { return false, err } userFiles := false for _, node := range contents { name := node.Name() if name != "." && name != ".." && name != pkg.PACKAGE_FILE_NAME && name != target.TARGET_FILENAME { userFiles = true break } } return userFiles, nil }
func targetDelOne(t *target.Target) error { if !targetForce { // Determine if the target directory contains extra user files. If it // does, a prompt (or force) is required to delete it. userFiles, err := targetContainsUserFiles(t) if err != nil { return err } if userFiles { scanner := bufio.NewScanner(os.Stdin) fmt.Printf("Target directory %s contains some extra content; "+ "delete anyway? (y/N): ", t.Package().BasePath()) rc := scanner.Scan() if !rc || strings.ToLower(scanner.Text()) != "y" { return nil } } } if err := os.RemoveAll(t.Package().BasePath()); err != nil { return util.NewNewtError(err.Error()) } util.StatusMessage(util.VERBOSITY_DEFAULT, "Target %s successfully deleted.\n", t.FullName()) return nil }
func loaderFromPaths(t *target.Target) []string { if t.LoaderName == "" { return nil } return []string{ /* <loader>.elf */ builder.AppElfPath(t.Name(), builder.BUILD_NAME_LOADER, t.Loader().Name()), /* <app>.img */ builder.AppImgPath(t.Name(), builder.BUILD_NAME_LOADER, t.Loader().Name()), } }
func appFromPaths(t *target.Target) []string { return []string{ /* <app>.elf */ builder.AppElfPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), /* <app>.img */ builder.AppImgPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), /* manifest.json */ builder.ManifestPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), } }
func bootLoaderFromPaths(t *target.Target) []string { return []string{ /* boot.elf */ builder.AppElfPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), /* boot.elf.bin */ builder.AppBinPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), /* manifest.json */ builder.ManifestPath(t.Name(), builder.BUILD_NAME_APP, t.App().Name()), } }