const phaseSeparator … type RunnerOptions … type RunData … type Runner … type phaseRunner … // NewRunner return a new runner for composable kubeadm workflows. func NewRunner() *Runner { … } // AppendPhase adds the given phase to the ordered sequence of phases managed by the runner. func (e *Runner) AppendPhase(t Phase) { … } // computePhaseRunFlags return a map defining which phase should be run and which not. // PhaseRunFlags are computed according to RunnerOptions. func (e *Runner) computePhaseRunFlags() (map[string]bool, error) { … } // SetDataInitializer allows to setup a function that initialize the runtime data shared // among all the phases included in the workflow. // The method will receive in input the cmd that triggers the Runner (only if the runner is BindToCommand) func (e *Runner) SetDataInitializer(builder func(cmd *cobra.Command, args []string) (RunData, error)) { … } // InitData triggers the creation of runtime data shared among all the phases included in the workflow. // This action can be executed explicitly out, when it is necessary to get the RunData // before actually executing Run, or implicitly when invoking Run. func (e *Runner) InitData(args []string) (RunData, error) { … } // Run the kubeadm composable kubeadm workflows. func (e *Runner) Run(args []string) error { … } // Help returns text with the list of phases included in the workflow. func (e *Runner) Help(cmdUse string) string { … } // SetAdditionalFlags allows to define flags to be added // to the subcommands generated for each phase (but not existing in the parent command). // Please note that this command needs to be done before BindToCommand. // Nb. if a flag is used only by one phase, please consider using phase LocalFlags. func (e *Runner) SetAdditionalFlags(fn func(*pflag.FlagSet)) { … } // BindToCommand bind the Runner to a cobra command by altering // command help, adding phase related flags and by adding phases subcommands // Please note that this command needs to be done once all the phases are added to the Runner. func (e *Runner) BindToCommand(cmd *cobra.Command) { … } func inheritsFlags(sourceFlags, targetFlags *pflag.FlagSet, cmdFlags []string) { … } // visitAll provides a utility method for visiting all the phases in the workflow // in the execution order and executing a func on each phase. // Nested phase are visited immediately after their parent phase. func (e *Runner) visitAll(fn func(*phaseRunner) error) error { … } // prepareForExecution initialize the internal state of the Runner (the list of phaseRunner). func (e *Runner) prepareForExecution() { … } // addPhaseRunner adds the phaseRunner for a given phase to the phaseRunners list func addPhaseRunner(e *Runner, parentRunner *phaseRunner, phase Phase) { … } // cleanName makes phase name suitable for the runner help, by lowercasing the name // and removing args descriptors, if any func cleanName(name string) string { … }