package configcli

type Config struct {
	PullRequestTitle string     `json:"pull_request_title" yaml:"pull_request_title"`
	PullRequestBody  string     `json:"pull_request_body" yaml:"pull_request_body"`
	Branches         []string   `json:"branches" yaml:"branches"`
	Source           *Source    `json:"source" yaml:"source"`
	UpdateOpt        *UpdateOpt `json:"update_opt" yaml:"update_opt"`
}

type Source struct {
	TypeGit    string `json:"type" yaml:"type" env:"GIT_TYPE"`
  Username string `json:"username" yaml:"username" env:"GIT_USERNAME"`
	Password      string `json:"password" yaml:"password" env:"GIT_PASSWORD,GIT_TOKEN"`
	APIURL     string `json:"apiurl" yaml:"apiurl" env:"GIT_API"`
	Repository string `json:"repository" yaml:"repository" env:"GIT_REPO"`
	Owner      string `json:"owner" yaml:"owner" env:"GIT_OWNER"`
}

type UpdateOpt struct {
	Pre     bool `json:"pre" yaml:"pre" default:"false"`
	Major   bool `json:"major" yaml:"major" default:"false"`
	UpMajor bool `json:"up_major" yaml:"up_major" default:"false"`
	Cached  bool `json:"cached" yaml:"cached" default:"true"`
}

type Cli struct {
	Command string `flag:"name=command,desc='choice command(update, close, checkupdaue, list)',default=''"`
	Path    string `flag:"name=path,desc='title of mod',default=''"`
}

func NewConfig() *Config {
	return &Config{
		Source:    &Source{},
		UpdateOpt: &UpdateOpt{},
	}
}
