Support multiple target.

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
This commit is contained in:
Bo-Yi Wu
2016-12-19 16:29:38 +08:00
parent bfb8c6795c
commit 91ef54d3d6
2 changed files with 40 additions and 39 deletions
+3 -4
View File
@@ -44,10 +44,9 @@ func main() {
Usage: "ssh private key",
EnvVar: "PLUGIN_KEY,SCP_KEY",
},
cli.StringFlag{
cli.StringSliceFlag{
Name: "target",
Value: "/",
Usage: "Target path on the server, default to '/'",
Usage: "Target path on the server",
EnvVar: "PLUGIN_TARGET",
},
cli.StringSliceFlag{
@@ -153,7 +152,7 @@ func run(c *cli.Context) error {
Username: c.String("username"),
Password: c.String("password"),
Key: c.String("key"),
Target: c.String("target"),
Target: c.StringSlice("target"),
Source: c.StringSlice("source"),
Debug: c.Bool("debug"),
Remove: c.Bool("rm"),
+37 -35
View File
@@ -39,7 +39,7 @@ type (
Username string
Password string
Key string
Target string
Target []string
Source []string
Debug bool
Remove bool
@@ -77,10 +77,10 @@ func (p Plugin) Exec() error {
return errors.New("missing ssh config (Host, Username, Password or Key)")
}
if len(p.Config.Source) == 0 {
log.Println("missing source file list config")
if len(p.Config.Source) == 0 || len(p.Config.Target) == 0 {
log.Println("missing source or target config")
return errors.New("missing source file list config")
return errors.New("missing source or target config")
}
files := trimPath(p.Config.Source)
@@ -123,11 +123,39 @@ func (p Plugin) Exec() error {
return err
}
// remove target before upload data
if p.Config.Remove {
log.Println("Remove target folder: " + p.Config.Target)
for _, target := range p.Config.Target {
// remove target before upload data
if p.Config.Remove {
log.Println("Remove target folder: " + target)
response, err := ssh.Run(fmt.Sprintf("rm -rf %s", p.Config.Target))
response, err := ssh.Run(fmt.Sprintf("rm -rf %s", target))
if p.Config.Debug {
log.Println(response)
}
if err != nil {
log.Println(err.Error())
return err
}
}
// mkdir path
log.Println("create remote folder " + target)
response, err := ssh.Run(fmt.Sprintf("mkdir -p %s", target))
if p.Config.Debug {
log.Println(response)
}
if err != nil {
log.Println(err.Error())
return err
}
// untar file
log.Println("untar remote file " + dest)
response, err = ssh.Run(fmt.Sprintf("tar -xf %s -C %s", dest, target))
if p.Config.Debug {
log.Println(response)
@@ -139,35 +167,9 @@ func (p Plugin) Exec() error {
}
}
// mkdir path
log.Println("create remote folder " + p.Config.Target)
response, err := ssh.Run(fmt.Sprintf("mkdir -p %s", p.Config.Target))
if p.Config.Debug {
log.Println(response)
}
if err != nil {
log.Println(err.Error())
return err
}
// untar file
log.Println("untar remote file " + dest)
response, err = ssh.Run(fmt.Sprintf("tar -xf %s -C %s", dest, p.Config.Target))
if p.Config.Debug {
log.Println(response)
}
if err != nil {
log.Println(err.Error())
return err
}
// remove tar file
log.Println("remove remote file " + dest)
response, err = ssh.Run(fmt.Sprintf("rm -rf %s", dest))
response, err := ssh.Run(fmt.Sprintf("rm -rf %s", dest))
if p.Config.Debug {
log.Println(response)