44 lines
686 B
Go
44 lines
686 B
Go
package printer
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/mmcloughlin/avo"
|
|
)
|
|
|
|
type Printer interface {
|
|
Print(*avo.File) ([]byte, error)
|
|
}
|
|
|
|
type Builder func(Config) Printer
|
|
|
|
type Config struct {
|
|
Name string
|
|
Argv []string
|
|
Pkg string
|
|
}
|
|
|
|
func NewDefaultConfig() Config {
|
|
cfg := Config{
|
|
Argv: os.Args,
|
|
}
|
|
if cwd, err := os.Getwd(); err == nil {
|
|
cfg.Pkg = filepath.Base(cwd)
|
|
}
|
|
return cfg
|
|
}
|
|
|
|
func (c Config) GeneratedBy() string {
|
|
if c.Argv == nil {
|
|
return c.Name
|
|
}
|
|
return fmt.Sprintf("command: %s", strings.Join(c.Argv, " "))
|
|
}
|
|
|
|
func (c Config) GeneratedWarning() string {
|
|
return fmt.Sprintf("Code generated by %s. DO NOT EDIT.", c.GeneratedBy())
|
|
}
|