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  }