github.com/taylorchu/generic@v0.0.0-20171113184323-cd81575befa2/cmd/generic/config_v1.go (about)

     1  package main
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/taylorchu/generic/rewrite"
     7  )
     8  
     9  // ConfigV1 specifies rewrite inputs.
    10  type ConfigV1 rewrite.Spec
    11  
    12  // NewConfig creates a new rewrite context.
    13  func NewConfig(pkgPath, newPkgPath string, rules ...string) (*ConfigV1, error) {
    14  	c := &ConfigV1{
    15  		Import: pkgPath,
    16  	}
    17  	if strings.HasPrefix(newPkgPath, ".") {
    18  		c.Local = true
    19  		c.Name = strings.TrimPrefix(newPkgPath, ".")
    20  	} else {
    21  		c.Name = newPkgPath
    22  	}
    23  
    24  	typeMap, err := ParseTypeMap(rules)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  	c.TypeMap = typeMap
    29  
    30  	return c, nil
    31  }
    32  
    33  func (c1 *ConfigV1) RewritePackage() error {
    34  	spec := rewrite.Spec(*c1)
    35  	c := rewrite.Config{
    36  		Spec: []*rewrite.Spec{&spec},
    37  	}
    38  	return c.RewritePackage()
    39  }