github.com/ngdinhtoan/glide@v0.12.3/mirrors/mirrors.go (about)

     1  // Package mirrors handles managing mirrors in the running application
     2  package mirrors
     3  
     4  import (
     5  	"fmt"
     6  	"os"
     7  	"path/filepath"
     8  
     9  	"github.com/Masterminds/glide/msg"
    10  	gpath "github.com/Masterminds/glide/path"
    11  )
    12  
    13  var mirrors map[string]*mirror
    14  
    15  func init() {
    16  	mirrors = make(map[string]*mirror)
    17  }
    18  
    19  type mirror struct {
    20  	Repo, Vcs string
    21  }
    22  
    23  // Get retrieves information about an mirror. It returns.
    24  // - bool if found
    25  // - new repo location
    26  // - vcs type
    27  func Get(k string) (bool, string, string) {
    28  	o, f := mirrors[k]
    29  	if !f {
    30  		return false, "", ""
    31  	}
    32  
    33  	return true, o.Repo, o.Vcs
    34  }
    35  
    36  // Load pulls the mirrors into memory
    37  func Load() error {
    38  	home := gpath.Home()
    39  
    40  	op := filepath.Join(home, "mirrors.yaml")
    41  
    42  	var ov *Mirrors
    43  	if _, err := os.Stat(op); os.IsNotExist(err) {
    44  		msg.Debug("No mirrors.yaml file exists")
    45  		ov = &Mirrors{
    46  			Repos: make(MirrorRepos, 0),
    47  		}
    48  		return nil
    49  	} else if err != nil {
    50  		ov = &Mirrors{
    51  			Repos: make(MirrorRepos, 0),
    52  		}
    53  		return err
    54  	}
    55  
    56  	var err error
    57  	ov, err = ReadMirrorsFile(op)
    58  	if err != nil {
    59  		return fmt.Errorf("Error reading existing mirrors.yaml file: %s", err)
    60  	}
    61  
    62  	msg.Info("Loading mirrors from mirrors.yaml file")
    63  	for _, o := range ov.Repos {
    64  		msg.Debug("Found mirror: %s to %s (%s)", o.Original, o.Repo, o.Vcs)
    65  		no := &mirror{
    66  			Repo: o.Repo,
    67  			Vcs:  o.Vcs,
    68  		}
    69  		mirrors[o.Original] = no
    70  	}
    71  
    72  	return nil
    73  }