commands

package
v1.3.1-0...-3e602c1 Latest Latest
Warning

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

Go to latest
Published: May 27, 2023 License: GPL-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var SetupServer = &cobra.Command{
	Use:     "setup [ipv4 address]",
	Example: "setup 192.168.178.14",
	Short:   "Prepare a server for deployment",
	Long:    `setup will install all required software on a server. You are then able to deploy projects onto it.`,
	Args:    cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		PrepareContext(args[0], system.ContextActionServerSetup, nil)

		taskRunner := routines.TaskRunner{}
		_ = taskRunner.RunTask(routines.Task{
			Name: fmt.Sprintf("Setting up server at IP \"%s\"", args[0]),
			Run: func(r *routines.Task) error {
				var err error

				for _, module := range system.Context.GetModulesInOrder() {
					moduleSettings := system.GetModuleSettings(module.GetConfig().Name)
					module.Init(moduleSettings)
				}

				prepareSpinner := r.TaskRunner.GetNewSubtaskSpinner("Preparing setup")
				if err := basicSetup(); err != nil {
					if prepareSpinner != nil {
						prepareSpinner.UpdateMessage("Unable to prepare setup. (" + err.Error() + ")")
						prepareSpinner.Error()
					} else {
						fmt.Println("Unable to prepare setup. (" + err.Error() + ")")
					}
					os.Exit(1)
				}
				if prepareSpinner != nil {
					prepareSpinner.Complete()
				}

				sshSpinner := r.TaskRunner.GetNewSubtaskSpinner("Setting up SSH keys")
				if err := setupSshKeys(); err != nil {
					if sshSpinner != nil {
						sshSpinner.UpdateMessage("Unable to setup SSH keys. (\" + err.Error() + \")")
						sshSpinner.Error()
					} else {
						fmt.Println("Unable to setup SSH keys. (" + err.Error() + ")")
					}
					os.Exit(1)
				}
				if sshSpinner != nil {
					sshSpinner.Complete()
				}

				userSpinner := r.TaskRunner.GetNewSubtaskSpinner("Setting up users")
				if err := userSetup(); err != nil {
					if userSpinner != nil {
						userSpinner.UpdateMessage("Unable to create StackHead users. (" + err.Error() + ")")
						userSpinner.Error()
					} else {
						fmt.Println("Unable to create StackHead users. (" + err.Error() + ")")
					}
					os.Exit(1)
				}
				if userSpinner != nil {
					userSpinner.Complete()
				}

				folderSpinner := r.TaskRunner.GetNewSubtaskSpinner("Setting up folders")
				if err := folderSetup(); err != nil {
					if folderSpinner != nil {
						folderSpinner.UpdateMessage("Unable to create folders. (" + err.Error() + ")")
						folderSpinner.Error()
					} else {
						fmt.Println("Unable to create folders. (" + err.Error() + ")")
					}
					os.Exit(1)
				}
				if folderSpinner != nil {
					folderSpinner.Complete()
				}

				versionSpinner := r.TaskRunner.GetNewSubtaskSpinner("Writing StackHead version")
				if err := system.WriteVersion(); err != nil {
					if versionSpinner != nil {
						versionSpinner.UpdateMessage("Unable to write version. (" + err.Error() + ")")
						versionSpinner.Error()
					} else {
						fmt.Println("Unable to write version. (" + err.Error() + ")")
					}
					os.Exit(1)
				}
				if versionSpinner != nil {
					versionSpinner.Complete()
				}

				return err
			},
			ErrorAsErrorMessage: true,
		})

		_ = taskRunner.RunTask(routines.Task{
			Name: fmt.Sprintf("Setting up StackHead Plugins at \"%s\"", args[0]),
			Run: func(r *routines.Task) error {
				var err error

				modules := system.Context.GetModulesInOrder()
				event.MustFire("setup.modules.pre-install", event.M{"modules": modules})
				for _, module := range modules {
					if module.GetConfig().Type == "plugin" || module.GetConfig().Type == "dns" {
						continue
					}
					moduleSpinner := r.TaskRunner.GetNewSubtaskSpinner("Setup " + module.GetConfig().Name)
					event.MustFire(
						"setup.modules.pre-install-module."+module.GetConfig().Type+"."+module.GetConfig().Name,
						event.M{"module": module},
					)
					moduleSettings := system.GetModuleSettings(module.GetConfig().Name)
					if err := module.Install(moduleSettings); err != nil {
						if moduleSpinner != nil {
							moduleSpinner.Error()
						}
						return err
					}
					if moduleSpinner != nil {
						moduleSpinner.Complete()
					}
					event.MustFire(
						"setup.modules.post-install-module."+module.GetConfig().Type+"."+module.GetConfig().Name,
						event.M{"module": module},
					)
				}
				event.MustFire("setup.modules.post-install", event.M{"modules": modules})

				return err
			},
			ErrorAsErrorMessage: true,
		})
	},
}

SetupServer is a command object for Cobra that provides the setup command

Functions

func EnforceNestedValueOption

func EnforceNestedValueOption(name string, value map[string]interface{})

func EnforceSimpleValueOption

func EnforceSimpleValueOption(name string, value map[string]interface{})

func PrepareContext

func PrepareContext(host string, action string, projectDefinition *project.Project)

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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