func (ctx *Context) modifyAdd(pkg *Package) error { var err error src := pkg.Dir if pkg.Status == StatusVendor { src, _, err = ctx.findImportDir("", pkg.Canonical) if err != nil { return err } } dest := filepath.Join(ctx.RootDir, ctx.VendorFolder, pathos.SlashToFilepath(pkg.Canonical)) // TODO: This might cause other issues or might be hiding the underlying issues. Examine in depth later. if pathos.FileStringEquals(src, dest) { return nil } ctx.Operation = append(ctx.Operation, &Operation{ Pkg: pkg, Src: src, Dest: dest, }) // Update vendor file with correct Local field. vp := ctx.VendorFilePackageCanonical(pkg.Canonical) if vp == nil { vp = &vendorfile.Package{ Add: true, Canonical: pkg.Canonical, Local: path.Join(ctx.VendorFileToFolder, pkg.Canonical), } ctx.VendorFile.Package = append(ctx.VendorFile.Package, vp) } // Find the VCS information. system, err := vcs.FindVcs(pkg.Gopath, src) if err != nil { return err } if system != nil { if system.Dirty { return ErrDirtyPackage{pkg.Canonical} } vp.Revision = system.Revision if system.RevisionTime != nil { vp.RevisionTime = system.RevisionTime.Format(time.RFC3339) } } mvSet := make(map[*Package]struct{}, 3) ctx.makeSet(pkg, mvSet) for r := range mvSet { to := path.Join(ctx.RootImportPath, ctx.VendorFolder, r.Canonical) dprintf("RULE: %s -> %s\n", r.Local, to) ctx.RewriteRule[r.Local] = to } return nil }
func (ctx *Context) modifyAdd(pkg *Package) error { var err error src := pkg.Dir if pkg.Status == StatusVendor { src, _, err = ctx.findImportDir("", pkg.Canonical) if err != nil { return err } } // If the canonical package is also the local package, then the package // isn't copied locally already and has already been checked for tags. // If it has been vendored the source still needs to be examined. // Examine here and add to the operations list. var ignoreFile []string if cpkg, found := ctx.Package[pkg.Canonical]; found { ignoreFile = cpkg.ignoreFile } else { srcDir, err := os.Open(src) if err != nil { return err } fl, err := srcDir.Readdir(-1) srcDir.Close() if err != nil { return err } for _, fi := range fl { if fi.IsDir() { continue } if fi.Name()[0] == '.' { continue } tags, err := ctx.getFileTags(filepath.Join(src, fi.Name()), nil) if err != nil { return err } for _, tag := range tags { for _, ignore := range ctx.ignoreTag { if tag == ignore { ignoreFile = append(ignoreFile, fi.Name()) } } } } } dest := filepath.Join(ctx.RootDir, ctx.VendorFolder, pathos.SlashToFilepath(pkg.Canonical)) // TODO: This might cause other issues or might be hiding the underlying issues. Examine in depth later. if pathos.FileStringEquals(src, dest) { return nil } ctx.Operation = append(ctx.Operation, &Operation{ Pkg: pkg, Src: src, Dest: dest, IgnoreFile: ignoreFile, }) // Update vendor file with correct Local field. vp := ctx.VendorFilePackagePath(pkg.Canonical) if vp == nil { vp = &vendorfile.Package{ Add: true, Path: pkg.Canonical, } ctx.VendorFile.Package = append(ctx.VendorFile.Package, vp) } // Find the VCS information. system, err := vcs.FindVcs(pkg.Gopath, src) if err != nil { return err } if system != nil { if system.Dirty { return ErrDirtyPackage{pkg.Canonical} } vp.Revision = system.Revision if system.RevisionTime != nil { vp.RevisionTime = system.RevisionTime.Format(time.RFC3339) } } mvSet := make(map[*Package]struct{}, 3) ctx.makeSet(pkg, mvSet) for r := range mvSet { to := path.Join(ctx.RootImportPath, ctx.VendorFolder, r.Canonical) dprintf("RULE: %s -> %s\n", r.Local, to) ctx.RewriteRule[r.Canonical] = to ctx.RewriteRule[r.Local] = to } return nil }
func (ctx *Context) modifyAdd(pkg *Package) error { var err error src := pkg.OriginDir dprintf("found import: %q\n", src) // If the canonical package is also the local package, then the package // isn't copied locally already and has already been checked for tags. // If it has been vendored the source still needs to be examined. // Examine here and add to the operations list. var ignoreFile []string if cpkg, found := ctx.Package[pkg.Canonical]; found { ignoreFile = cpkg.ignoreFile } else { var err error ignoreFile, err = ctx.getIngoreFiles(src) if err != nil { return err } } dest := filepath.Join(ctx.RootDir, ctx.VendorFolder, pathos.SlashToFilepath(pkg.Canonical)) // TODO: This might cause other issues or might be hiding the underlying issues. Examine in depth later. if pathos.FileStringEquals(src, dest) { return nil } dprintf("add op: %q\n", src) ctx.Operation = append(ctx.Operation, &Operation{ Pkg: pkg, Src: src, Dest: dest, IgnoreFile: ignoreFile, }) // Update vendor file with correct Local field. vp := ctx.VendorFilePackagePath(pkg.Canonical) if vp == nil { vp = &vendorfile.Package{ Add: true, Path: pkg.Canonical, } ctx.VendorFile.Package = append(ctx.VendorFile.Package, vp) if pkg.Local != pkg.Canonical && pkg.inVendor { vp.Origin = pkg.Local } } vp.Tree = pkg.Tree // Find the VCS information. system, err := vcs.FindVcs(pkg.Gopath, src) if err != nil { return err } if system != nil { if system.Dirty { return ErrDirtyPackage{pkg.Canonical} } vp.Revision = system.Revision if system.RevisionTime != nil { vp.RevisionTime = system.RevisionTime.Format(time.RFC3339) } } mvSet := make(map[*Package]struct{}, 3) ctx.makeSet(pkg, mvSet) for r := range mvSet { to := path.Join(ctx.RootImportPath, ctx.VendorFolder, r.Canonical) dprintf("RULE: %s -> %s\n", r.Local, to) ctx.RewriteRule[r.Canonical] = to ctx.RewriteRule[r.Local] = to } return nil }