blob: 870bbe0482a1adee1a415b07714f754f38be8e30 [file] [log] [blame]
// Package cfg handles working with the Glide configuration files.
//
// The cfg package contains the ability to parse (unmarshal) and write (marshal)
// glide.yaml and glide.lock files. These files contains the details about
// projects managed by Glide.
//
// To convert yaml into a cfg.Config instance use the cfg.ConfigFromYaml function.
// The yaml, typically in a glide.yaml file, has the following structure.
//
// package: github.com/Masterminds/glide
// homepage: https://masterminds.github.io/glide
// license: MIT
// owners:
// - name: Matt Butcher
// email: technosophos@gmail.com
// homepage: http://technosophos.com
// - name: Matt Farina
// email: matt@mattfarina.com
// homepage: https://www.mattfarina.com
// ignore:
// - appengine
// excludeDirs:
// - node_modules
// import:
// - package: gopkg.in/yaml.v2
// - package: github.com/Masterminds/vcs
// version: ^1.2.0
// repo: git@github.com:Masterminds/vcs
// vcs: git
// - package: github.com/codegangsta/cli
// - package: github.com/Masterminds/semver
// version: ^1.0.0
//
// These elements are:
//
// - package: The top level package is the location in the GOPATH. This is used
// for things such as making sure an import isn't also importing the top level
// package.
// - homepage: To find the place where you can find details about the package or
// applications. For example, http://k8s.io
// - license: The license is either an SPDX license string or the filepath to the
// license. This allows automation and consumers to easily identify the license.
// - owners: The owners is a list of one or more owners for the project. This
// can be a person or organization and is useful for things like notifying the
// owners of a security issue without filing a public bug.
// - ignore: A list of packages for Glide to ignore importing. These are package
// names to ignore rather than directories.
// - excludeDirs: A list of directories in the local codebase to exclude from
// scanning for dependencies.
// - import: A list of packages to import. Each package can include:
// - package: The name of the package to import and the only non-optional item.
// - version: A semantic version, semantic version range, branch, tag, or
// commit id to use.
// - repo: If the package name isn't the repo location or this is a private
// repository it can go here. The package will be checked out from the
// repo and put where the package name specifies. This allows using forks.
// - vcs: A VCS to use such as git, hg, bzr, or svn. This is only needed
// when the type cannot be detected from the name. For example, a repo
// ending in .git or on GitHub can be detected to be Git. For a repo on
// Bitbucket we can contact the API to discover the type.
// - testImport: A list of development packages not already listed under import.
// Each package has the same details as those listed under import.
package cfg