Add support for prefixing generated code paths.
このコミットが含まれているのは:
コミット
ee9aade57f
|
@ -101,22 +101,22 @@ func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
|||
return
|
||||
}
|
||||
// Implementation
|
||||
dir := pm.PrivatePackage().Path()
|
||||
file := jen.NewFilePath(dir)
|
||||
priv := pm.PrivatePackage()
|
||||
file := jen.NewFilePath(priv.Path())
|
||||
file.Add(i.Definition().Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s.go", i.PropertyName()),
|
||||
Directory: dir,
|
||||
Directory: priv.WriteDir(),
|
||||
})
|
||||
// Interface
|
||||
dir = pm.PublicPackage().Path()
|
||||
file = jen.NewFilePath(dir)
|
||||
pub := pm.PublicPackage()
|
||||
file = jen.NewFilePath(pub.Path())
|
||||
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s_interface.go", i.PropertyName()),
|
||||
Directory: dir,
|
||||
Directory: pub.WriteDir(),
|
||||
})
|
||||
}
|
||||
for _, i := range v.NFProps {
|
||||
|
@ -126,25 +126,25 @@ func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
|||
return
|
||||
}
|
||||
// Implementation
|
||||
dir := pm.PrivatePackage().Path()
|
||||
file := jen.NewFilePath(dir)
|
||||
priv := pm.PrivatePackage()
|
||||
file := jen.NewFilePath(priv.Path())
|
||||
s, t := i.Definitions()
|
||||
file.Add(s.Definition()).Line().Add(t.Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s.go", i.PropertyName()),
|
||||
Directory: dir,
|
||||
Directory: priv.WriteDir(),
|
||||
})
|
||||
// TODO: Interface
|
||||
dir = pm.PublicPackage().Path()
|
||||
file = jen.NewFilePath(dir)
|
||||
pub := pm.PublicPackage()
|
||||
file = jen.NewFilePath(pub.Path())
|
||||
for _, intf := range i.InterfaceDefinitions(pm.PublicPackage()) {
|
||||
file.Add(intf.Definition())
|
||||
}
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s_interface.go", i.PropertyName()),
|
||||
Directory: dir,
|
||||
Directory: pub.WriteDir(),
|
||||
})
|
||||
}
|
||||
for _, i := range v.Types {
|
||||
|
@ -154,32 +154,32 @@ func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
|||
return
|
||||
}
|
||||
// Implementation
|
||||
dir := pm.PrivatePackage().Path()
|
||||
file := jen.NewFilePath(dir)
|
||||
priv := pm.PrivatePackage()
|
||||
file := jen.NewFilePath(priv.Path())
|
||||
file.Add(i.Definition().Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s.go", i.TypeName()),
|
||||
Directory: dir,
|
||||
Directory: priv.WriteDir(),
|
||||
})
|
||||
// TODO: Interface
|
||||
dir = pm.PublicPackage().Path()
|
||||
file = jen.NewFilePath(dir)
|
||||
pub := pm.PublicPackage()
|
||||
file = jen.NewFilePath(pub.Path())
|
||||
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: fmt.Sprintf("gen_%s_interface.go", i.TypeName()),
|
||||
Directory: dir,
|
||||
Directory: pub.WriteDir(),
|
||||
})
|
||||
}
|
||||
// TODO: For Manager
|
||||
dir := c.VocabularyRoot.PrivatePackage().Path()
|
||||
file := jen.NewFilePath(dir)
|
||||
priv := c.VocabularyRoot.PrivatePackage()
|
||||
file := jen.NewFilePath(priv.Path())
|
||||
file.Add(v.Manager.PrivateManager().Definition())
|
||||
f = append(f, &File{
|
||||
F: file,
|
||||
FileName: "gen_manager.go",
|
||||
Directory: dir,
|
||||
Directory: priv.WriteDir(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ func init() {
|
|||
|
||||
var (
|
||||
input = flag.String("input", "spec.json", "Input JSON-LD specification used to generate Go code.")
|
||||
// TODO: Be more rigorous when applying this. Also, clear the default value I am using for convenience.
|
||||
prefix = flag.String("prefix", "github.com/cjslep/activity/tools/exp/tmp", "Package prefix to use for all generated package paths. This should be the prefix in the GOPATH directory if generating in a subdirectory.")
|
||||
// TODO: Use this flag
|
||||
root = flag.String("root", "github.com/go-fed/activity/", "Go import path prefix for generated packages")
|
||||
xmlpkg = flag.String("xmlpkg", "github.com/go-fed/activity/tools/exp/ref/xml", "Go package location for known XML references")
|
||||
|
@ -58,6 +60,7 @@ func (l *list) Set(v string) error {
|
|||
}
|
||||
|
||||
func main() {
|
||||
// TODO: Use only one kind of flag style.
|
||||
var ref list
|
||||
var refspec list
|
||||
var refpkg list
|
||||
|
@ -82,11 +85,11 @@ func main() {
|
|||
}
|
||||
c := &convert.Converter{
|
||||
Registry: registry,
|
||||
VocabularyRoot: props.NewPackageManager("gen/as"),
|
||||
VocabularyRoot: props.NewPackageManager(*prefix, "gen/as"),
|
||||
PropertyPackagePolicy: convert.PropertyFlatUnderRoot,
|
||||
PropertyPackageRoot: props.NewPackageManager("gen/as/props"),
|
||||
PropertyPackageRoot: props.NewPackageManager(*prefix, "gen/as/props"),
|
||||
TypePackagePolicy: convert.TypeFlatUnderRoot,
|
||||
TypePackageRoot: props.NewPackageManager("gen/as/types"),
|
||||
TypePackageRoot: props.NewPackageManager(*prefix, "gen/as/types"),
|
||||
}
|
||||
f, err := c.Convert(p)
|
||||
if err != nil {
|
||||
|
|
|
@ -8,13 +8,15 @@ import (
|
|||
// PackageManager manages the path and names of a package consisting of a public
|
||||
// and a private portion.
|
||||
type PackageManager struct {
|
||||
prefix string
|
||||
root string
|
||||
public string
|
||||
private string
|
||||
}
|
||||
|
||||
func NewPackageManager(root string) *PackageManager {
|
||||
func NewPackageManager(prefix, root string) *PackageManager {
|
||||
return &PackageManager{
|
||||
prefix: prefix,
|
||||
root: root,
|
||||
public: "",
|
||||
private: "internal",
|
||||
|
@ -48,6 +50,7 @@ func (p *PackageManager) toPackage(suffix string, public bool) Package {
|
|||
s := strings.Split(path, "/")
|
||||
name := s[len(s)-1]
|
||||
return Package{
|
||||
prefix: p.prefix,
|
||||
path: path,
|
||||
name: name,
|
||||
isPublic: public,
|
||||
|
@ -56,6 +59,7 @@ func (p *PackageManager) toPackage(suffix string, public bool) Package {
|
|||
}
|
||||
|
||||
type Package struct {
|
||||
prefix string
|
||||
path string
|
||||
name string
|
||||
isPublic bool
|
||||
|
@ -63,6 +67,10 @@ type Package struct {
|
|||
}
|
||||
|
||||
func (p Package) Path() string {
|
||||
return p.prefix + "/" + p.path
|
||||
}
|
||||
|
||||
func (p Package) WriteDir() string {
|
||||
return p.path
|
||||
}
|
||||
|
||||
|
|
読み込み中…
新しいイシューから参照