Skip to content

Commit f238341

Browse files
authored
Merge pull request #47 from jungaretti/private-app
Move business logic to cmd package
2 parents 8ac9115 + 94b65e7 commit f238341

File tree

7 files changed

+37
-54
lines changed

7 files changed

+37
-54
lines changed

cmd/common.go

-9
This file was deleted.

cmd/deploy.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/spf13/cobra"
1010
)
1111

12-
func newDeployCmd(app *App) *cobra.Command {
12+
func newDeployCmd(provider dns.Provider) *cobra.Command {
1313
var shouldCreate bool
1414
var shouldDelete bool
1515

@@ -20,7 +20,7 @@ func newDeployCmd(app *App) *cobra.Command {
2020
creating new records.`,
2121
Args: cobra.ExactArgs(1),
2222
RunE: func(cmd *cobra.Command, args []string) error {
23-
return deploy(app, args[0], shouldCreate, shouldDelete)
23+
return deploy(provider, args[0], shouldCreate, shouldDelete)
2424
},
2525
}
2626

@@ -30,13 +30,13 @@ creating new records.`,
3030
return deploy
3131
}
3232

33-
func deploy(app *App, configFile string, shouldCreate bool, shouldDelete bool) error {
33+
func deploy(provider dns.Provider, configFile string, shouldCreate bool, shouldDelete bool) error {
3434
config, err := config.ReadFile(configFile)
3535
if err != nil {
3636
return fmt.Errorf("reading config: %v", err)
3737
}
3838

39-
from, err := app.Provider.AllRecords(config.Domain)
39+
from, err := provider.AllRecords(config.Domain)
4040
if err != nil {
4141
return fmt.Errorf("fetching existing records: %v", err)
4242
}
@@ -51,7 +51,7 @@ func deploy(app *App, configFile string, shouldCreate bool, shouldDelete bool) e
5151
if shouldDelete {
5252
fmt.Println("Deleting", len(removed), "records...")
5353
for _, record := range removed {
54-
err := app.Provider.DeleteRecord(config.Domain, record)
54+
err := provider.DeleteRecord(config.Domain, record)
5555
if err != nil {
5656
return fmt.Errorf("couldn't delete record: %v", err)
5757
}
@@ -66,7 +66,7 @@ func deploy(app *App, configFile string, shouldCreate bool, shouldDelete bool) e
6666
if shouldCreate {
6767
fmt.Println("Creating", len(added), "records...")
6868
for _, record := range added {
69-
err := app.Provider.CreateRecord(config.Domain, record)
69+
err := provider.CreateRecord(config.Domain, record)
7070
if err != nil {
7171
return fmt.Errorf("couldn't create record: %v", err)
7272
}

cmd/deploy_test.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,14 @@ records:
2323
t.Fatal("could not seed config to temp file", err)
2424
}
2525

26-
provider := console.NewMockProvider()
27-
mockApp := &App{
28-
Provider: provider,
29-
}
26+
mockProvider := console.NewMockProvider()
3027

31-
err = deploy(mockApp, configFile, true, true)
28+
err = deploy(mockProvider, configFile, true, true)
3229
if err != nil {
3330
t.Fatal("did not deploy records", err)
3431
}
3532

36-
records, err := provider.AllRecords("plantbasedbacon.xyz")
33+
records, err := mockProvider.AllRecords("plantbasedbacon.xyz")
3734
if err != nil {
3835
t.Fatal("could not fetch records after deployment", err)
3936
}

cmd/ping.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package cmd
22

33
import (
4+
"bacon/pkg/dns"
45
"fmt"
56

67
"github.com/spf13/cobra"
78
)
89

9-
func newPingCmd(app *App) *cobra.Command {
10+
func newPingCmd(provider dns.Provider) *cobra.Command {
1011
ping := &cobra.Command{
1112
Use: "ping",
1213
Short: "Check authentication status",
1314
Args: cobra.NoArgs,
1415
RunE: func(cmd *cobra.Command, args []string) error {
15-
return ping(app)
16+
return ping(provider)
1617
},
1718
}
1819
return ping
1920
}
2021

21-
func ping(app *App) error {
22-
err := app.Provider.CheckAuth()
22+
func ping(provider dns.Provider) error {
23+
err := provider.CheckAuth()
2324
if err != nil {
2425
return err
2526
}

cmd/print.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,28 @@ package cmd
22

33
import (
44
"bacon/pkg/config"
5+
"bacon/pkg/dns"
56
"fmt"
67
"strconv"
78

89
"github.com/spf13/cobra"
910
"gopkg.in/yaml.v3"
1011
)
1112

12-
func newPrintCmd(app *App) *cobra.Command {
13+
func newPrintCmd(provider dns.Provider) *cobra.Command {
1314
print := &cobra.Command{
1415
Use: "print <domain>",
1516
Short: "Print existing records",
1617
Args: cobra.ExactArgs(1),
1718
RunE: func(cmd *cobra.Command, args []string) error {
18-
return print(app, args[0])
19+
return print(provider, args[0])
1920
},
2021
}
2122
return print
2223
}
2324

24-
func print(app *App, domain string) error {
25-
records, err := app.Provider.AllRecords(domain)
25+
func print(provider dns.Provider, domain string) error {
26+
records, err := provider.AllRecords(domain)
2627
if err != nil {
2728
return err
2829
}

cmd/root.go

+17-10
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,38 @@
11
package cmd
22

33
import (
4-
"fmt"
4+
"bacon/pkg/dns"
5+
"bacon/pkg/providers/porkbun"
56
"os"
67

78
"github.com/spf13/cobra"
9+
"github.com/subosito/gotenv"
810
)
911

10-
func Execute(app *App) {
11-
root := newRootCmd(app)
12+
func Execute() {
13+
// Loads .env in the current directory
14+
gotenv.Load()
1215

13-
if err := root.Execute(); err != nil {
14-
fmt.Println(err)
16+
var porkbunApiKey = os.Getenv("PORKBUN_API_KEY")
17+
var porkbunSecretApiKey = os.Getenv("PORKBUN_SECRET_KEY")
18+
var porkbunProvider = porkbun.NewPorkbunProvider(porkbunApiKey, porkbunSecretApiKey)
19+
20+
root := newRootCmd(porkbunProvider)
21+
err := root.Execute()
22+
if err != nil {
1523
os.Exit(1)
1624
}
1725
}
1826

19-
func newRootCmd(app *App) *cobra.Command {
27+
func newRootCmd(provider dns.Provider) *cobra.Command {
2028
root := &cobra.Command{
2129
Use: "bacon",
2230
Short: "Bacon is a tasty DNS manager for Porkbun",
2331
}
2432

25-
// Use command constructors to share one app
26-
root.AddCommand(newPingCmd(app))
27-
root.AddCommand(newDeployCmd(app))
28-
root.AddCommand(newPrintCmd(app))
33+
root.AddCommand(newPingCmd(provider))
34+
root.AddCommand(newDeployCmd(provider))
35+
root.AddCommand(newPrintCmd(provider))
2936

3037
return root
3138
}

main.go

+1-15
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,8 @@ package main
22

33
import (
44
"bacon/cmd"
5-
"bacon/pkg/providers/porkbun"
6-
"os"
7-
8-
"github.com/subosito/gotenv"
95
)
106

117
func main() {
12-
// Loads .env in the current directory
13-
gotenv.Load()
14-
15-
var porkbunApiKey = os.Getenv("PORKBUN_API_KEY")
16-
var porkbunSecretApiKey = os.Getenv("PORKBUN_SECRET_KEY")
17-
18-
app := cmd.App{
19-
Provider: porkbun.NewPorkbunProvider(porkbunApiKey, porkbunSecretApiKey),
20-
}
21-
22-
cmd.Execute(&app)
8+
cmd.Execute()
239
}

0 commit comments

Comments
 (0)