Skip to content

Commit 9959e88

Browse files
committed
Configのロード方法のリファクタリング
1 parent 436d58a commit 9959e88

3 files changed

Lines changed: 24 additions & 29 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module github.com/Sinhalite/microcms-backup-tool
22

3-
go 1.19
3+
go 1.22.1

main.go

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,9 @@ import (
1212
"time"
1313
)
1414

15-
func (c *Config) setConfig(target string, serviceId string, apiKey string, endpoints []string, requestUnit int) {
16-
c.Target = target
17-
c.ServiceID = serviceId
18-
c.APIKey = apiKey
19-
c.Endpoints = endpoints
20-
c.RequestUnit = requestUnit
21-
}
22-
23-
func (c *Config) loadConfig() error {
15+
func (c *Client) loadConfig() error {
2416
// デフォルト値を設定
25-
c.RequestUnit = 10
17+
c.Config.RequestUnit = 10
2618

2719
f, err := os.Open("config.json")
2820
if err != nil {
@@ -32,22 +24,19 @@ func (c *Config) loadConfig() error {
3224

3325
d := json.NewDecoder(f)
3426
d.DisallowUnknownFields()
35-
d.Decode(c)
27+
d.Decode(c.Config)
3628
return nil
3729
}
3830

39-
func initOption(modeFlag string) (*Config, error) {
40-
option := &Config{}
31+
func (c *Client) initOption(modeFlag string) error {
4132
var err error
42-
4333
// コマンドライン引数で"-mode=auto"がセットされていたら、対話式のメッセージは表示しない
4434
if modeFlag == "auto" {
45-
err := option.loadConfig()
46-
return option, err
35+
err := c.loadConfig()
36+
return err
4737
}
4838

4939
// 対話式でオプションをセット
50-
5140
var target string
5241
var serviceId string
5342
var apiKey string
@@ -59,7 +48,7 @@ func initOption(modeFlag string) (*Config, error) {
5948
fmt.Println("> モードを選択してください(auto / manual)")
6049
for scanner.Scan() {
6150
if scanner.Text() == "auto" {
62-
err = option.loadConfig()
51+
err = c.loadConfig()
6352
break
6453
}
6554

@@ -110,7 +99,7 @@ func initOption(modeFlag string) (*Config, error) {
11099
} else if len(scanner.Text()) > 0 {
111100
num, err := strconv.Atoi(scanner.Text())
112101
if err != nil {
113-
return nil, err
102+
return err
114103
}
115104
requestUnit = num
116105
break
@@ -125,21 +114,27 @@ func initOption(modeFlag string) (*Config, error) {
125114
}
126115
}
127116

128-
option.setConfig(target, serviceId, apiKey, endpoints, requestUnit)
117+
c.Config = &Config{
118+
Target: target,
119+
ServiceID: serviceId,
120+
APIKey: apiKey,
121+
Endpoints: endpoints,
122+
RequestUnit: requestUnit,
123+
}
129124
break
130125
}
131126
}
132-
return option, err
127+
return err
133128
}
134129

135130
func main() {
136-
client := &Client{}
137-
// コマンドライン因数の取得
131+
client := &Client{&Config{}}
132+
133+
// コマンドライン引数の取得
138134
modeFlag := flag.String("mode", "", "mode value")
139135
flag.Parse()
140136

141-
var err error
142-
client.Config, err = initOption(*modeFlag)
137+
err := client.initOption(*modeFlag)
143138
if err != nil {
144139
log.Fatal("正常にオプションをセットできませんでした")
145140
}

media.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ func (c *Client) getMediaAry(requiredRequestCount int, requestUnit int) ([]Media
105105

106106
func (c *Client) saveMedia(mediaAry []Media, totalCount int, baseDir string) error {
107107
for i, media := range mediaAry {
108+
// 進捗状況の表示
109+
fmt.Printf("[%d / %d] %s\n", i+1, totalCount, media.Url)
110+
108111
client := new(http.Client)
109112
req, _ := http.NewRequest("GET", media.Url, nil)
110113
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
@@ -144,9 +147,6 @@ func (c *Client) saveMedia(mediaAry []Media, totalCount int, baseDir string) err
144147
if err != nil {
145148
return err
146149
}
147-
148-
// 進捗状況の表示
149-
fmt.Printf("[%d / %d] %s\n", i+1, totalCount, media.Url)
150150
}
151151
return nil
152152
}

0 commit comments

Comments
 (0)