Skip to content

Instantly share code, notes, and snippets.

@xuzhenglun
Last active April 13, 2017 14:56
Show Gist options
  • Save xuzhenglun/3669491f9291b52e66217fc1b88ec70c to your computer and use it in GitHub Desktop.
Save xuzhenglun/3669491f9291b52e66217fc1b88ec70c to your computer and use it in GitHub Desktop.
migrate dep's json to Toml
package main
import (
"encoding/json"
"io/ioutil"
"log"
toml "github.com/pelletier/go-toml"
)
type rawProject struct {
Name string `toml:"name" json:"name,omitempty"`
Branch string `toml:"branch,omitempty" json:"branch,omitempty"`
Revision string `toml:"revision,omitempty" json:"revision,omitempty"`
Version string `toml:"version,omitempty" json:"version,omitempty"`
Source string `toml:"source,omitempty" json:"source,omitempty"`
}
type Manifest struct {
Dependencies []rawProject `toml:"dependencies,omitempty" json:"-"`
OldDependencies map[string]rawProject `toml:"-" json:"dependencies,omitempty"`
Overrides []rawProject `toml:"overrides,omitempty" json:"-"`
OldOverrides map[string]rawProject `toml:"-" json:"overrides,omitempty"`
Ignores []string `toml:"ignores,omitempty" json:"ignores,omitempty"`
Required []string `toml:"required,omitempty" json:"required,omitempty"`
}
func main() {
m, err := ioutil.ReadFile("manifest.json")
if err != nil {
log.Fatal(err)
}
manifest := Manifest{}
if err := json.Unmarshal(m, &manifest); err != nil {
log.Fatal(err)
}
for name, project := range manifest.OldDependencies {
project.Name = name
manifest.Dependencies = append(manifest.Dependencies, project)
}
for name, project := range manifest.OldOverrides {
project.Name = name
manifest.Dependencies = append(manifest.Overrides, project)
}
result, err := toml.Marshal(manifest)
if err != nil {
log.Fatal(err)
}
if err := ioutil.WriteFile("Gopkg.toml", result, 0666); err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment