Skip to content

Commit

Permalink
Add hooks for some Platform.sh commands (#75)
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Jan 31, 2022
1 parent a405fb2 commit e72b102
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 1 deletion.
2 changes: 1 addition & 1 deletion commands/local_var_expose.go
Expand Up @@ -53,7 +53,7 @@ var localVariableExposeFromTunnelCmd = &console.Command{
tunnel := envs.Tunnel{Project: project}

if c.Bool("off") {
terminal.Eprintln("Stop exposing tunnel service environment variables ")
terminal.Eprintln("Stop exposing tunnel service environment variables")
return tunnel.Expose(false)
}

Expand Down
10 changes: 10 additions & 0 deletions commands/platformsh.go
Expand Up @@ -58,6 +58,10 @@ func NewPlatformShCLI() (*platformshCLI, error) {
&console.BoolFlag{Name: "no", Aliases: []string{"n"}},
&console.BoolFlag{Name: "yes", Aliases: []string{"y"}},
)
if _, ok := platformshBeforeHooks[command.FullName()]; !ok {
// do not parse flags if we don't have hooks
command.FlagParsing = console.FlagParsingSkipped
}
p.Commands = append(p.Commands, command)
}
return p, nil
Expand Down Expand Up @@ -98,6 +102,12 @@ func (p *platformshCLI) proxyPSHCmd(commandName string) console.ActionFunc {
}
}

if hook, ok := platformshBeforeHooks[commandName]; ok {
if err := hook(c); err != nil {
return err
}
}

args := os.Args[1:]
for i := range args {
if args[i] == c.Command.UserName {
Expand Down
44 changes: 44 additions & 0 deletions commands/platformsh_hooks.go
@@ -0,0 +1,44 @@
package commands

import (
"github.com/symfony-cli/console"
"github.com/symfony-cli/symfony-cli/envs"
"github.com/symfony-cli/symfony-cli/local/platformsh"
"github.com/symfony-cli/terminal"
)

var platformshBeforeHooks = map[string]console.BeforeFunc{
"tunnel:close": func(c *console.Context) error {
terminal.Eprintln("Stop exposing tunnel service environment variables")

app := c.String("app")
env := c.String("environment")
var project *platformsh.Project
projectID := c.String("project")
if projectID == "" {
projectDir, err := getProjectDir(c.String("dir"))
if err != nil {
return err
}
project, err = platformsh.ProjectFromDir(projectDir, false)
if err != nil {
return err
}
if app != "" {
project.App = app
}
if env != "" {
project.Env = env
}
} else {
project = &platformsh.Project{
ID: projectID,
App: app,
Env: env,
}
}

tunnel := envs.Tunnel{Project: project}
return tunnel.Expose(false)
},
}

0 comments on commit e72b102

Please sign in to comment.