333e3ff
// Helper for parsing glide.lock file and spitting out
333e3ff
// bundled provides statements for an rpm spec file.
333e3ff
package main
333e3ff
333e3ff
import (
333e3ff
	"fmt"
333e3ff
	"io/ioutil"
333e3ff
	"log"
333e3ff
	"path"
333e3ff
333e3ff
	yaml "gopkg.in/yaml.v2"
333e3ff
)
333e3ff
333e3ff
type Import struct {
333e3ff
	Name        string
333e3ff
	Version     string
333e3ff
	Subpackages []string
333e3ff
}
333e3ff
333e3ff
type Glide struct {
333e3ff
	Hash        string
333e3ff
	Updated     string
333e3ff
	Imports     []Import
333e3ff
	TestImports []Import
333e3ff
}
333e3ff
333e3ff
func main() {
333e3ff
	yamlFile, err := ioutil.ReadFile("glide.lock")
333e3ff
	if err != nil {
333e3ff
		log.Fatal(err)
333e3ff
	}
333e3ff
333e3ff
	var glide Glide
333e3ff
	err = yaml.Unmarshal(yamlFile, &glide)
333e3ff
	if err != nil {
333e3ff
		log.Fatal(err)
333e3ff
	}
333e3ff
333e3ff
	for _, imp := range glide.Imports {
333e3ff
		// we need format like this:
333e3ff
		// Provides: bundled(golang(github.com/coreos/go-oidc/oauth2)) = %{version}-5cf2aa52da8c574d3aa4458f471ad6ae2240fe6b
333e3ff
		for _, subp := range imp.Subpackages {
333e3ff
			name := path.Join(imp.Name, subp)
333e3ff
			fmt.Printf("Provides: bundled(golang(%s)) = %s-%s\n", name, "%{version}", imp.Version)
333e3ff
		}
333e3ff
	}
333e3ff
}