@@ -9,22 +9,56 @@ import (
9
9
"fmt"
10
10
"net"
11
11
"os"
12
+ "regexp"
13
+ "runtime"
12
14
"strings"
13
15
14
16
"github.com/calmh/psmcli/completion"
17
+ "github.com/calmh/upgrade"
15
18
"golang.org/x/crypto/ssh/terminal"
16
19
)
17
20
18
21
var (
19
- Version = "unknown-dev"
22
+ Version = "unknown-dev"
23
+ signingKey = []byte (`-----BEGIN EC PUBLIC KEY-----
24
+ MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBYyrh+aRcAmqSAReHq00XgaJC5Zn3
25
+ JC/rlXAM5M2ODmMElLypAtnmUYFJTnmQD1KSwV49GFwFy+iqzNa9AfQ4gQQB+RmV
26
+ Q2n12crDe2nU9oI0aPZFkIlqrjA0Ky0jT8rpWhmuRc+Bq8XS4q8mY32RFSaceLXo
27
+ N62RXYtkeHL+D41Ct+I=
28
+ -----END EC PUBLIC KEY-----` )
20
29
)
21
30
22
31
func main () {
23
32
verbose := flag .Bool ("v" , false , "Verbose output" )
33
+ doUpgrade := flag .Bool ("upgrade" , false , "Upgrade to latest version" )
24
34
flag .Usage = usage
25
35
flag .Parse ()
26
36
dst := flag .Arg (0 )
27
37
38
+ if * doUpgrade {
39
+ rels , err := upgrade .GithubReleases ("calmh/psmcli" , Version , true , false )
40
+ if err != nil {
41
+ fmt .Println (err )
42
+ os .Exit (1 )
43
+ }
44
+
45
+ exp := regexp .MustCompile ("-" + runtime .GOOS + "-" + runtime .GOARCH )
46
+ for _ , rel := range rels {
47
+ assets := upgrade .MatchingAssets (exp , rel )
48
+ if len (assets ) == 1 {
49
+ fmt .Println ("Trying" , assets [0 ].Name , "..." )
50
+ err = upgrade .ToURL (assets [0 ].URL , signingKey )
51
+ if err == nil {
52
+ fmt .Println ("Upgraded" )
53
+ return
54
+ }
55
+ fmt .Println (err )
56
+ }
57
+ }
58
+
59
+ os .Exit (1 )
60
+ }
61
+
28
62
if dst == "" {
29
63
usage ()
30
64
os .Exit (2 )
@@ -226,6 +260,7 @@ func usage() {
226
260
fmt .Println ()
227
261
fmt .Println ("Usage:" )
228
262
fmt .Println (" psmcli [-v] <host:port>" )
263
+ fmt .Println (" psmcli -upgrade" )
229
264
}
230
265
231
266
func printResponse (res response ) {
0 commit comments