Skip to content

Commit e72b102

Browse files
authored
Add hooks for some Platform.sh commands (#75)
1 parent a405fb2 commit e72b102

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

commands/local_var_expose.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ var localVariableExposeFromTunnelCmd = &console.Command{
5353
tunnel := envs.Tunnel{Project: project}
5454

5555
if c.Bool("off") {
56-
terminal.Eprintln("Stop exposing tunnel service environment variables ")
56+
terminal.Eprintln("Stop exposing tunnel service environment variables")
5757
return tunnel.Expose(false)
5858
}
5959

commands/platformsh.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ func NewPlatformShCLI() (*platformshCLI, error) {
5858
&console.BoolFlag{Name: "no", Aliases: []string{"n"}},
5959
&console.BoolFlag{Name: "yes", Aliases: []string{"y"}},
6060
)
61+
if _, ok := platformshBeforeHooks[command.FullName()]; !ok {
62+
// do not parse flags if we don't have hooks
63+
command.FlagParsing = console.FlagParsingSkipped
64+
}
6165
p.Commands = append(p.Commands, command)
6266
}
6367
return p, nil
@@ -98,6 +102,12 @@ func (p *platformshCLI) proxyPSHCmd(commandName string) console.ActionFunc {
98102
}
99103
}
100104

105+
if hook, ok := platformshBeforeHooks[commandName]; ok {
106+
if err := hook(c); err != nil {
107+
return err
108+
}
109+
}
110+
101111
args := os.Args[1:]
102112
for i := range args {
103113
if args[i] == c.Command.UserName {

commands/platformsh_hooks.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package commands
2+
3+
import (
4+
"github.com/symfony-cli/console"
5+
"github.com/symfony-cli/symfony-cli/envs"
6+
"github.com/symfony-cli/symfony-cli/local/platformsh"
7+
"github.com/symfony-cli/terminal"
8+
)
9+
10+
var platformshBeforeHooks = map[string]console.BeforeFunc{
11+
"tunnel:close": func(c *console.Context) error {
12+
terminal.Eprintln("Stop exposing tunnel service environment variables")
13+
14+
app := c.String("app")
15+
env := c.String("environment")
16+
var project *platformsh.Project
17+
projectID := c.String("project")
18+
if projectID == "" {
19+
projectDir, err := getProjectDir(c.String("dir"))
20+
if err != nil {
21+
return err
22+
}
23+
project, err = platformsh.ProjectFromDir(projectDir, false)
24+
if err != nil {
25+
return err
26+
}
27+
if app != "" {
28+
project.App = app
29+
}
30+
if env != "" {
31+
project.Env = env
32+
}
33+
} else {
34+
project = &platformsh.Project{
35+
ID: projectID,
36+
App: app,
37+
Env: env,
38+
}
39+
}
40+
41+
tunnel := envs.Tunnel{Project: project}
42+
return tunnel.Expose(false)
43+
},
44+
}

0 commit comments

Comments
 (0)