1package generator 2 3import ( 4 "strings" 5 "text/template" 6) 7 8var packageFuncs = template.FuncMap{ 9 "ToLower": strings.ToLower, 10 "UnExport": unexport, 11 "Replace": strings.Replace, 12 "Generate": func() string { return "go:generate" }, // yes, this seems insane but ensures that we can use `go generate ./...` from the main package 13} 14 15const packageTemplate string = `{{.Header}}// Code generated by counterfeiter. DO NOT EDIT. 16package {{.DestinationPackage}} 17 18import ( 19 {{- range $index, $import := .Imports.ByAlias}} 20 {{$import}} 21 {{- end}} 22) 23 24//{{.Generate}} counterfeiter . {{.Name}} 25 26// {{.Name}} is a generated interface representing the exported functions 27// in the {{.TargetPackage}} package. 28type {{.Name}} interface { 29 {{- range .Methods}} 30 {{.Name}}({{.Params.AsNamedArgsWithTypes}}) {{.Returns.AsReturnSignature}} 31 {{- end}} 32} 33 34type {{.Name}}Shim struct {} 35 36{{- range .Methods}} 37func (p *{{$.Name}}Shim) {{.Name}}({{.Params.AsNamedArgsWithTypes}}) {{.Returns.AsReturnSignature}} { 38 {{if .Returns.HasLength}}return {{end}}{{$.TargetAlias}}.{{.Name}}({{.Params.AsNamedArgsForInvocation}}) 39} 40{{end}} 41var _ {{.Name}} = new({{.Name}}Shim) 42` 43