Skip to content
This repository has been archived by the owner on Jul 11, 2022. It is now read-only.

Commit

Permalink
move all site related commands to actions
Browse files Browse the repository at this point in the history
Signed-off-by: Jason McCallister <jason@craftcms.com>
  • Loading branch information
jasonmccallister committed Apr 8, 2020
1 parent aef63e0 commit 6bcc484
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 379 deletions.
58 changes: 58 additions & 0 deletions internal/action/site_add_actions.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package action

import "fmt"

func NginxReload(name string) (*Action, error) {
return &Action{
Type: "exec",
UseSyscall: false,
Args: []string{"exec", name, "--", "sudo", "service", "nginx", "restart"},
}, nil
}

func CreateSiteSymllink(name, site string) (*Action, error) {
return &Action{
Type: "exec",
UseSyscall: false,
Args: []string{"exec", name, "--", "sudo", "ln", "-s", "/etc/nginx/sites-available/" + site, "/etc/nginx/sites-enabled/"},
}, nil
}

func CopyNginxTemplate(name, site string) (*Action, error) {
return &Action{
Type: "exec",
UseSyscall: false,
Args: []string{"exec", name, "--", "sudo", "cp", "/opt/nitro/nginx/template.conf", "/etc/nginx/sites-available/" + site},
}, nil
}

func CreateNginxSiteDirectory(name, site string) (*Action, error) {
return &Action{
Type: "exec",
UseSyscall: false,
Args: []string{"exec", name, "--", "mkdir", "-p", "/app/sites/" + site},
}, nil
}

func ChangeTemplateVariables(name, site, dir, php string) (*[]Action, error) {
var actions []Action

actions = append(actions, *changeVariables(name, site, "CHANGEPATH", site))
actions = append(actions, *changeVariables(name, site, "CHANGESERVERNAME", site))
actions = append(actions, *changeVariables(name, site, "CHANGEPUBLICDIR", dir))
actions = append(actions, *changeVariables(name, site, "CHANGEPHPVERSION", php))

return &actions, nil
}

func changeVariables(name, site, variable, actual string) *Action {
file := fmt.Sprintf("/etc/nginx/sites-available/%v", site)

sedCmd := "s|" + variable + "|" + actual + "|g"

return &Action{
Type: "exec",
UseSyscall: false,
Args: []string{"exec", name, "--", "sudo", "sed", "-i", sedCmd, file},
}
}
45 changes: 27 additions & 18 deletions internal/cmd/site_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/spf13/cobra"

"github.com/craftcms/nitro/config"
"github.com/craftcms/nitro/internal/action"
"github.com/craftcms/nitro/internal/nitro"
"github.com/craftcms/nitro/validate"
)
Expand All @@ -15,7 +16,7 @@ var siteAddCommand = &cobra.Command{
Short: "Add a site to machine",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
machineName := config.GetString("name", flagMachineName)
name := config.GetString("name", flagMachineName)
php := config.GetString("php", flagPhpVersion)
localDirectory := args[0]
domainName := args[1]
Expand All @@ -27,33 +28,41 @@ var siteAddCommand = &cobra.Command{
return err
}

var commands []nitro.Command
// attach the provided localDirectory to /app/sites/domainName.test
commands = append(commands, nitro.Mount(machineName, localDirectory, domainName))
// create localDirectory directory
commands = append(commands, nitro.CreateNewDirectoryForSite(machineName, domainName))
// copy the template
commands = append(commands, nitro.CopyNginxTemplate(machineName, domainName))
// change template variables
commands = append(commands, nitro.ChangeVariablesInTemplate(machineName, domainName, flagPublicDir, php)...)
// make link for nginx localDirectory
commands = append(commands, nitro.LinkNginxSite(machineName, domainName))
// reload nginx
commands = append(commands, nitro.ReloadNginx(machineName))
var actions []action.Action

mountAction, _ := action.Mount(name, localDirectory, domainName)
actions = append(actions, *mountAction)

createDirectoryAction, _ := action.CreateNginxSiteDirectory(name, domainName)
actions = append(actions, *createDirectoryAction)

copyTemplateAction, _ := action.CopyNginxTemplate(name, domainName)
actions = append(actions, *copyTemplateAction)

changeVarsActions, _ := action.ChangeTemplateVariables(name, domainName, flagPublicDir, php)
for _, a := range *changeVarsActions {
actions = append(actions, a)
}

createSymlinkAction, _ := action.CreateSiteSymllink(name, domainName)
actions = append(actions, *createSymlinkAction)

reloadNginxAction, _ := action.NginxReload(name)
actions = append(actions, *reloadNginxAction)

if flagDebug {
for _, command := range commands {
fmt.Println(command.Type, command.Args)
for _, a := range actions {
fmt.Println(a.Args)
}

return nil
}

return nitro.Run(nitro.NewMultipassRunner("multipass"), commands)
return nitro.RunAction(nitro.NewMultipassRunner("multipass"), actions)
},
PostRun: func(cmd *cobra.Command, args []string) {
fmt.Println(
fmt.Sprintf("added site %q to machine %q", args[1], config.GetString("name", flagMachineName)),
fmt.Sprintf("added site %q to %q", args[1], config.GetString("name", flagMachineName)),
)
},
}
Expand Down
61 changes: 0 additions & 61 deletions internal/nitro/add_site.go

This file was deleted.

Loading

0 comments on commit 6bcc484

Please # to comment.