utils

package
v1.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2021 License: Apache-2.0 Imports: 19 Imported by: 8

Documentation

Index

Constants

View Source
const (
	// Common flags
	Global             = "global"
	ResolutionServerId = "server-id-resolve"
	DeploymentServerId = "server-id-deploy"
	ResolutionRepo     = "repo-resolve"
	DeploymentRepo     = "repo-deploy"

	// Maven flags
	ResolutionReleasesRepo  = "repo-resolve-releases"
	ResolutionSnapshotsRepo = "repo-resolve-snapshots"
	DeploymentReleasesRepo  = "repo-deploy-releases"
	DeploymentSnapshotsRepo = "repo-deploy-snapshots"

	// Gradle flags
	UsesPlugin          = "uses-plugin"
	UseWrapper          = "use-wrapper"
	DeployMavenDesc     = "deploy-maven-desc"
	DeployIvyDesc       = "deploy-ivy-desc"
	IvyDescPattern      = "ivy-desc-pattern"
	IvyArtifactsPattern = "ivy-artifacts-pattern"

	// Nuget flags
	NugetV2 = "nuget-v2"
)
View Source
const (
	InsertValuePromptMsg = "Insert the value for "
	DummyDefaultAnswer   = "-"
)
View Source
const (
	PressTabMsg      = " (press Tab for options):"
	InvalidAnswerMsg = "Invalid answer. Please select value from the suggestions list."
	VariableUseMsg   = " You may use dynamic variable in the form of ${key}."
	EmptyValueMsg    = "The value cannot be empty. Please enter a valid value."
	OptionalKey      = "OptionalKey"
	SaveAndExit      = ":x"

	// Boolean answers
	True  = "true"
	False = "false"

	CommaSeparatedListMsg = "The value should be a comma separated list"
)
View Source
const BUILD_CONF_VERSION = 1
View Source
const PathErrorSuffixMsg = " please enter a path, in which the new template file will be created"

Variables

View Source
var BoolQuestionInfo = QuestionInfo{
	Options:   GetBoolSuggests(),
	AllowVars: true,
	Writer:    WriteBoolAnswer,
}
View Source
var FreeStringQuestionInfo = QuestionInfo{
	Options:   nil,
	AllowVars: false,
	Writer:    WriteStringAnswer,
}

Common questions

View Source
var IntQuestionInfo = QuestionInfo{
	Options:   nil,
	AllowVars: true,
	Writer:    WriteIntAnswer,
}
View Source
var StringListQuestionInfo = QuestionInfo{
	Msg:       CommaSeparatedListMsg,
	Options:   nil,
	AllowVars: true,
	Writer:    WriteStringArrayAnswer,
}
View Source
var VarPattern = regexp.MustCompile(`^\$\{\w+\}+$`)

Var can be inserted in the form of ${key}

Functions

func AskFromList

func AskFromList(msg, promptPrefix string, allowVars bool, options []prompt.Suggest, defaultValue string) string

Ask question with list of possible answers. If answer is empty and defaultValue isn't, return defaultValue. Otherwise, the answer must be chosen from the list, but can be a variable if allowVars set to true.

func AskFromListWithMismatchConfirmation

func AskFromListWithMismatchConfirmation(promptPrefix, misMatchMsg string, options []prompt.Suggest) string

Ask question with list of possible answers. If the provided answer does not appear in list, confirm the choice.

func AskString

func AskString(msg, promptPrefix string, allowEmpty bool, allowVars bool) string

Ask question with free string answer, allow an empty string as an answer

func AskStringWithDefault

func AskStringWithDefault(msg, promptPrefix, defaultValue string) string

Ask question with free string answer. If answer is empty and defaultValue isn't, return defaultValue. Otherwise, answer cannot be empty. Variable aren't checked and can be part of the answer.

func ConvertTemplateToMap

func ConvertTemplateToMap(tuc TemplateUserCommand) (map[string]interface{}, error)

func ConvertToSuggests

func ConvertToSuggests(options []string) []prompt.Suggest

func CreateBuildConfig

func CreateBuildConfig(c *cli.Context, confType utils.ProjectType) (err error)

func GetBoolSuggests

func GetBoolSuggests() []prompt.Suggest

func GetSuggestsFromKeys

func GetSuggestsFromKeys(keys []string, SuggestionMap map[string]prompt.Suggest) []prompt.Suggest

func OptionalKeyCallback

func OptionalKeyCallback(iq *InteractiveQuestionnaire, key string) (value string, err error)

After an optional value was chosen we'll ask for its value.

func ValidateMapEntry

func ValidateMapEntry(key string, value interface{}, writersMap map[string]AnswerWriter) error

func ValidateTemplatePath

func ValidateTemplatePath(templatePath string) error

func WriteBoolAnswer

func WriteBoolAnswer(resultMap *map[string]interface{}, key, value string) error

func WriteIntAnswer

func WriteIntAnswer(resultMap *map[string]interface{}, key, value string) error

func WriteStringAnswer

func WriteStringAnswer(resultMap *map[string]interface{}, key, value string) error

Common writers

func WriteStringArrayAnswer

func WriteStringArrayAnswer(resultMap *map[string]interface{}, key, value string) error

Types

type AnswerWriter

type AnswerWriter func(resultMap *map[string]interface{}, key, value string) error

Each question can have the following properties:

  • Msg - will be printed in separate line
  • PromptPrefix - will be printed before the input cursor in the answer line
  • Options - In case the answer must be selected from a predefined list
  • AllowVars - a flag indicates whether a variable (in form of ${var}) is an acceptable answer despite the predefined list
  • Writer - how to write the answer to the final config map
  • MapKey - the key under which the answer will be written to the configMap
  • Callback - optional function can be executed after the answer was inserted. Can be used to implement some dependencies between questions.

type ConfigFile

type ConfigFile struct {
	Interactive bool             `yaml:"-"`
	Version     int              `yaml:"version,omitempty"`
	ConfigType  string           `yaml:"type,omitempty"`
	Resolver    utils.Repository `yaml:"resolver,omitempty"`
	Deployer    utils.Repository `yaml:"deployer,omitempty"`
	UsePlugin   bool             `yaml:"usePlugin,omitempty"`
	UseWrapper  bool             `yaml:"useWrapper,omitempty"`
}

func NewConfigFile

func NewConfigFile(confType utils.ProjectType, c *cli.Context) *ConfigFile

func (*ConfigFile) VerifyConfigFile

func (configFile *ConfigFile) VerifyConfigFile(configFilePath string) error

Verify config file doesn't exist or prompt to override it

type InteractiveQuestionnaire

type InteractiveQuestionnaire struct {
	QuestionsMap           map[string]QuestionInfo
	MandatoryQuestionsKeys []string
	OptionalKeysSuggests   []prompt.Suggest
	AnswersMap             map[string]interface{}
}

The interactive questionnaire works as follows:

We have to provide a map of QuestionInfo which include all possible questions may be asked.
1. Mandatory Questions:
	* We will ask all the questions in MandatoryQuestionsKeys list one after the other.
2. Optional questions:
	* We have to provide a slice of prompt.Suggest, in which each suggest.Text is a key of a question in the map.
	* After a suggest was chosen from the list, the corresponding question from the map will be asked.
	* Each answer is written to to the configMap using its writer, under the MapKey specified in the questionInfo.
	* We will execute the previous step until the SaveAndExit string was inserted.

func (*InteractiveQuestionnaire) AskQuestion

func (iq *InteractiveQuestionnaire) AskQuestion(question QuestionInfo) (value string, err error)

Ask question steps:

  1. Ask for string/from list
  2. Write the answer to answersMap (if writer provided)
  3. Run callback (if provided)

func (*InteractiveQuestionnaire) Perform

func (iq *InteractiveQuestionnaire) Perform() error

The main function to perform the questionnaire

type QuestionInfo

type QuestionInfo struct {
	Msg          string
	PromptPrefix string
	Options      []prompt.Suggest
	AllowVars    bool
	Writer       AnswerWriter
	MapKey       string
	Callback     questionCallback
}

type Result

type Result struct {
	// contains filtered or unexported fields
}

func (*Result) FailCount

func (r *Result) FailCount() int

func (*Result) Reader

func (r *Result) Reader() *content.ContentReader

func (*Result) SetFailCount

func (r *Result) SetFailCount(failCount int)

func (*Result) SetReader

func (r *Result) SetReader(reader *content.ContentReader)

func (*Result) SetSuccessCount

func (r *Result) SetSuccessCount(successCount int)

func (*Result) SuccessCount

func (r *Result) SuccessCount() int

type TemplateUserCommand

type TemplateUserCommand interface {
	// Returns the file path.
	TemplatePath() string
	// Returns vars to replace in the template content.
	Vars() string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL