package installers import ( "fmt" ) type Installer struct { Name string // Name is the display name of the installer. Desc string // Desc briefly explains what the installer does. Priority int // Priority defines the order of installation. Lower number comes before higher number. Default is 0. Setup func() // Setup contains logic regarding the setup process. Reminders []string // Reminders for manual tasks user has to perform. Shows after all Setup functions are executed. } // list of installers var Installers []*Installer func register(installer *Installer) { for i, reminder := range installer.Reminders { installer.Reminders[i] = fmt.Sprintf("[%s] %s", installer.Name, reminder) } Installers = append(Installers, installer) }