github.com/thetechnoweenie/graven@v1.0.2/commands/unfreeze.go (about) 1 package commands 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/cbegin/graven/domain" 8 "github.com/cbegin/graven/util" 9 "github.com/urfave/cli" 10 "github.com/cbegin/graven/repotool" 11 "github.com/cbegin/graven/vendortool" 12 ) 13 14 var UnfreezeCommand = cli.Command{ 15 Name: "unfreeze", 16 Usage: "Unfreezes vendor dependencies", 17 Action: unfreeze, 18 } 19 20 func unfreeze(c *cli.Context) error { 21 project, err := domain.FindProject() 22 if err != nil { 23 return err 24 } 25 26 vendorTool, err := selectVendorTool(project) 27 if err != nil { 28 return err 29 } 30 31 err = vendorTool.LoadFile(project) 32 if err != nil { 33 return err 34 } 35 36 for _, p := range vendorTool.Dependencies() { 37 sourceFile := project.ProjectPath(".freezer", p.ArchiveFileName()) 38 targetDir := project.ProjectPath("vendor", p.PackagePath()) 39 40 _, err := os.Stat(sourceFile) 41 if os.IsNotExist(err) { 42 for repoName, repo := range project.Repositories { 43 if repo.HasRole(domain.RepositoryRoleDependency) { 44 if repoTool, ok := repotool.RepoRegistry[repo.Type]; ok { 45 if err := repoTool.DownloadDependency(project, repoName, sourceFile, vendortool.Coordinates(p)); err != nil { 46 fmt.Println(err) 47 } else { 48 err = util.UnzipDir(sourceFile, targetDir) 49 if err != nil { 50 fmt.Println(err) 51 } 52 break 53 } 54 } else { 55 fmt.Printf("Unkown repository type %v for %v\n", repo.Type, repoName) 56 } 57 } 58 } 59 } else { 60 err = util.UnzipDir(sourceFile, targetDir) 61 if err != nil { 62 return err 63 } 64 } 65 66 } 67 68 return nil 69 }