@@ -306,17 +306,18 @@ func main() {
306
306
case "log" :
307
307
option .toTailLog = true
308
308
case "restart" :
309
- option .noBuild = true
310
- option .noUpload = true
311
- deploy (servers )
309
+ // option.noBuild = true
310
+ // option.noUpload = true
311
+ // deploy(servers)
312
+ restart (servers )
312
313
case "inspect" :
313
314
inspectScript (servers , args [1 ])
314
315
case "rollback" :
315
316
if len (args ) == 1 {
316
317
fmt .Println ("please specify rollback command or version" )
317
318
os .Exit (1 )
318
319
}
319
- if args [1 ] == "ls" || args [1 ] == "list" {
320
+ if args [1 ] == "l" || args [ 1 ] == " ls" || args [1 ] == "list" {
320
321
lsRollbackVersions (servers , args [1 ] == "list" )
321
322
} else {
322
323
rollback (servers , strings .TrimSpace (args [1 ]))
@@ -454,7 +455,7 @@ func getBuildLog() string {
454
455
vcs , checksum := retrieveChecksum ()
455
456
info += vcs + " Checksum: " + checksum
456
457
457
- info += "Composer: " + retrieveAuthor ()
458
+ info += "Composer: " + retrieveAuthor () + " \n "
458
459
459
460
info += "Build At: " + time .Now ().String ()
460
461
@@ -480,23 +481,21 @@ func retrieveChecksum() (vcs, checksum string) {
480
481
return
481
482
}
482
483
483
- func retrieveAuthor () ( author string ) {
484
+ func retrieveAuthor () string {
484
485
name , err := ioutil .ReadFile (".harp-composer" )
485
486
if err == nil && len (name ) > 0 {
486
- return string (name )
487
+ return strings . TrimSpace ( string (name ) )
487
488
}
488
489
489
- author = tryCmd ("git" , "config" , "user.name" )
490
- if author != "" {
491
- return
490
+ if author := tryCmd ("git" , "config" , "user.name" ); author != "" {
491
+ return strings .TrimSpace (author )
492
492
}
493
493
494
- author = tryCmd ("whoami" )
495
- if author != "" {
496
- return
494
+ if author := tryCmd ("whoami" ); author != "" {
495
+ return strings .TrimSpace (author )
497
496
}
498
497
499
- return "Unknown "
498
+ return "anonymous "
500
499
}
501
500
502
501
func isUsingGit () bool {
@@ -718,9 +717,9 @@ func inspectScript(servers []*Server, name string) {
718
717
case "deploy" :
719
718
fmt .Println (s .retrieveDeployScript ())
720
719
case "restart" :
721
- fmt .Println (s .retrieveRestartScript ())
720
+ fmt .Println (s .retrieveRestartScript (retrieveAuthor () ))
722
721
case "kill" :
723
- fmt .Println (s .retrieveKillScript ())
722
+ fmt .Println (s .retrieveKillScript (retrieveAuthor () ))
724
723
case "rollback" :
725
724
fmt .Println (s .retrieveRollbackScript ())
726
725
default :
@@ -738,7 +737,7 @@ func kill(servers []*Server) {
738
737
739
738
session := s .getSession ()
740
739
defer session .Close ()
741
- output , err := session .CombinedOutput (s .retrieveKillScript ())
740
+ output , err := session .CombinedOutput (s .retrieveKillScript (retrieveAuthor () ))
742
741
if err != nil {
743
742
exitf ("failed to exec %s: %s %s" , option .script , string (output ), err )
744
743
}
@@ -748,13 +747,28 @@ func kill(servers []*Server) {
748
747
wg .Wait ()
749
748
}
750
749
751
- func (s * Server ) retrieveKillScript () string {
750
+ var killScriptTmpl = template .Must (template .New ("" ).Parse (`set -e
751
+ if [[ -f {{.Home}}/harp/{{.App.Name}}/app.pid ]]; then
752
+ target=$(cat {{.Home}}/harp/{{.App.Name}}/app.pid);
753
+ if ps -p $target > /dev/null; then
754
+ kill -KILL $target; > /dev/null 2>&1;
755
+ fi
756
+ {{.GetHarpComposer}}
757
+ echo "[harp] $(date) $harp_composer killed server" | tee -a {{.LogPath}} {{.HistoryLogPath}} >/dev/null
758
+ fi` ))
759
+
760
+ func (s * Server ) retrieveKillScript (who string ) string {
752
761
s .initPathes ()
753
762
var buf bytes.Buffer
754
763
if err := killScriptTmpl .Execute (& buf , struct {
755
764
Config
756
765
* Server
757
- }{Config : cfg , Server : s }); err != nil {
766
+ GetHarpComposer string
767
+ }{
768
+ Config : cfg ,
769
+ Server : s ,
770
+ GetHarpComposer : s .GetHarpComposer (who ),
771
+ }); err != nil {
758
772
exitf (err .Error ())
759
773
}
760
774
if option .debug {
@@ -763,14 +777,24 @@ func (s *Server) retrieveKillScript() string {
763
777
return buf .String ()
764
778
}
765
779
766
- var killScriptTmpl = template .Must (template .New ("" ).Parse (`set -e
767
- if [[ -f {{.Home}}/harp/{{.App.Name}}/app.pid ]]; then
768
- target=$(cat {{.Home}}/harp/{{.App.Name}}/app.pid);
769
- if ps -p $target > /dev/null; then
770
- kill -KILL $target; > /dev/null 2>&1;
771
- fi
772
- echo "[harp] $(date) server killed" >> {{.LogPath}}
773
- fi` ))
780
+ func restart (servers []* Server ) {
781
+ var wg sync.WaitGroup
782
+ for _ , server := range servers {
783
+ wg .Add (1 )
784
+ go func (s * Server ) {
785
+ defer func () { wg .Done () }()
786
+
787
+ session := s .getSession ()
788
+ defer session .Close ()
789
+ output , err := session .CombinedOutput (s .retrieveRestartScript (retrieveAuthor ()))
790
+ if err != nil {
791
+ exitf ("failed to exec %s: %s %s" , option .script , string (output ), err )
792
+ }
793
+ log .Printf ("%s restarted\n " , s )
794
+ }(server )
795
+ }
796
+ wg .Wait ()
797
+ }
774
798
775
799
func initXC () {
776
800
goroot := strings .TrimSpace (cmd ("go" , "env" , "GOROOT" ))
@@ -795,6 +819,4 @@ func cleanCaches() {
795
819
}
796
820
}
797
821
798
- func printVersion () {
799
- fmt .Printf ("0.5.%d\n " , version )
800
- }
822
+ func printVersion () { fmt .Printf ("0.6.%d\n " , version ) }
0 commit comments