Skip to content

Commit 963cab2

Browse files
authored
fix(cmd): Persist identity & improve missing identity errors (#34)
Ensures `generate` and `update` commands persist WARP identity. Adds user-friendly errors for `status` and `update` when identity files are missing.
1 parent d91af57 commit 963cab2

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

cloudflare/identity.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func CreateOrUpdateIdentity(license string) (*model.Identity, error) {
4141
identity.Account = iAcc
4242
}
4343

44-
return &identity, nil
44+
return identity, nil
4545
}
4646

4747
func LoadOrCreateIdentity() (*model.Identity, error) {
@@ -58,34 +58,34 @@ func LoadOrCreateIdentity() (*model.Identity, error) {
5858
return identity, nil
5959
}
6060

61-
func LoadIdentity() (model.Identity, error) {
61+
func LoadIdentity() (*model.Identity, error) {
6262
regPath := model.GetRegPath()
6363
confPath := model.GetConfPath()
6464

6565
if _, err := os.Stat(regPath); os.IsNotExist(err) {
66-
return model.Identity{}, err
66+
return nil, err
6767
}
6868
if _, err := os.Stat(confPath); os.IsNotExist(err) {
69-
return model.Identity{}, err
69+
return nil, err
7070
}
7171

7272
regBytes, err := os.ReadFile(regPath)
7373
if err != nil {
74-
return model.Identity{}, err
74+
return nil, err
7575
}
7676
confBytes, err := os.ReadFile(confPath)
7777
if err != nil {
78-
return model.Identity{}, err
78+
return nil, err
7979
}
8080

8181
var regFile model.RegFile
8282
if err := json.Unmarshal(regBytes, &regFile); err != nil {
83-
return model.Identity{}, err
83+
return nil, err
8484
}
8585

8686
var confFile model.ConfFile
8787
if err := json.Unmarshal(confBytes, &confFile); err != nil {
88-
return model.Identity{}, err
88+
return nil, err
8989
}
9090

9191
identity := model.Identity{
@@ -98,10 +98,10 @@ func LoadIdentity() (model.Identity, error) {
9898
}
9999

100100
if len(identity.Config.Peers) < 1 {
101-
return model.Identity{}, errors.New("identity contains 0 peers")
101+
return nil, errors.New("identity contains 0 peers")
102102
}
103103

104-
return identity, nil
104+
return &identity, nil
105105
}
106106

107107
func CreateIdentity(warpAPI *WarpAPI, license string) (model.Identity, error) {

cmd/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var GenerateCmd = &cobra.Command{
2121
func init() {}
2222

2323
func generate(cmd *cobra.Command, args []string) {
24-
ident, err := cloudflare.CreateOrUpdateIdentity("")
24+
ident, err := cloudflare.LoadOrCreateIdentity()
2525
if err != nil {
2626
log.Fatalw("Failed to generate primary identity", zap.Error(err))
2727
}

cmd/status.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package cmd
22

33
import (
4+
"errors"
5+
"fmt"
46
"log"
7+
"os"
58

69
"github.com/spf13/cobra"
710

@@ -24,6 +27,9 @@ var StatusCmd = &cobra.Command{
2427
func status() error {
2528
identity, err := cloudflare.LoadIdentity()
2629
if err != nil {
30+
if os.IsNotExist(err) || errors.Is(err, errors.New("identity contains 0 peers")) {
31+
return fmt.Errorf("WARP identity not found. Please run 'warp generate' to create one")
32+
}
2733
return err
2834
}
2935

cmd/update.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package cmd
22

33
import (
4+
"errors"
45
"fmt"
6+
"os"
57

68
"github.com/spf13/cobra"
79
"github.com/spf13/viper"
@@ -41,6 +43,9 @@ func runUpdate() error {
4143

4244
identity, err := cloudflare.LoadIdentity()
4345
if err != nil {
46+
if os.IsNotExist(err) || errors.Is(err, errors.New("identity contains 0 peers")) {
47+
return fmt.Errorf("WARP identity not found. Please run 'warp generate' to create one")
48+
}
4449
return err
4550
}
4651

@@ -60,7 +65,7 @@ func runUpdate() error {
6065
// Update license if provided
6166
if license != "" {
6267
// Generate configs
63-
_, err = cloudflare.CreateOrUpdateIdentity(license)
68+
identity, err = cloudflare.CreateOrUpdateIdentity(license)
6469
if err != nil {
6570
log.Fatalw("Failed to generate primary identity", zap.Error(err))
6671
}

0 commit comments

Comments
 (0)