Blob Blame Raw
// Helper for parsing glide.lock file and spitting out
// bundled provides statements for an rpm spec file.
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"path"

	yaml "gopkg.in/yaml.v2"
)

type Import struct {
	Name        string
	Version     string
	Subpackages []string
}

type Glide struct {
	Hash        string
	Updated     string
	Imports     []Import
	TestImports []Import
}

func main() {
	yamlFile, err := ioutil.ReadFile("glide.lock")
	if err != nil {
		log.Fatal(err)
	}

	var glide Glide
	err = yaml.Unmarshal(yamlFile, &glide)
	if err != nil {
		log.Fatal(err)
	}

	for _, imp := range glide.Imports {
		// we need format like this:
		// Provides: bundled(golang(github.com/coreos/go-oidc/oauth2)) = %{version}-5cf2aa52da8c574d3aa4458f471ad6ae2240fe6b
		for _, subp := range imp.Subpackages {
			name := path.Join(imp.Name, subp)
			fmt.Printf("Provides: bundled(golang(%s)) = %s-%s\n", name, "%{version}", imp.Version)
		}
	}
}