var dependencies []vendor.Dependency if deleteAll { dependencies = make([]vendor.Dependency, len(m.Dependencies)) copy(dependencies, m.Dependencies) } else { p := args[0] dependency, err := m.GetDependencyForImportpath(p) if err != nil { return fmt.Errorf("could not get dependency: %v", err) } dependencies = append(dependencies, dependency) } for _, d := range dependencies { path := d.Importpath if err := m.RemoveDependency(d); err != nil { return fmt.Errorf("dependency could not be deleted: %v", err) } if err := vendor.RemoveAll(filepath.Join(ctx.Projectdir(), "vendor", "src", filepath.FromSlash(path))); err != nil { // TODO(dfc) need to apply vendor.cleanpath here to remove indermediate directories. return fmt.Errorf("dependency could not be deleted: %v", err) } } return vendor.WriteManifest(manifestFile(ctx), m) }, AddFlags: addDeleteFlags, }
if err := vendor.RemoveAll(filepath.Join(ctx.Projectdir(), "vendor", "src", filepath.FromSlash(d.Importpath))); err != nil { // TODO(dfc) need to apply vendor.cleanpath here to remove indermediate directories. return fmt.Errorf("dependency could not be deleted: %v", err) } dst := filepath.Join(ctx.Projectdir(), "vendor", "src", filepath.FromSlash(dep.Importpath)) src := filepath.Join(wc.Dir(), dep.Path) if err := vendor.Copypath(dst, src); err != nil { return err } if err := m.AddDependency(dep); err != nil { return err } if err := vendor.WriteManifest(manifestFile(ctx), m); err != nil { return err } if err := wc.Destroy(); err != nil { return err } } return nil }, AddFlags: addUpdateFlags, }