Skip to content

Commit

Permalink
Configのロード方法のリファクタリング
Browse files Browse the repository at this point in the history
  • Loading branch information
Sinhalite committed Mar 24, 2024
1 parent 436d58a commit 9959e88
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 29 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module github.com/Sinhalite/microcms-backup-tool

go 1.19
go 1.22.1
45 changes: 20 additions & 25 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,9 @@ import (
"time"
)

func (c *Config) setConfig(target string, serviceId string, apiKey string, endpoints []string, requestUnit int) {
c.Target = target
c.ServiceID = serviceId
c.APIKey = apiKey
c.Endpoints = endpoints
c.RequestUnit = requestUnit
}

func (c *Config) loadConfig() error {
func (c *Client) loadConfig() error {
// デフォルト値を設定
c.RequestUnit = 10
c.Config.RequestUnit = 10

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

d := json.NewDecoder(f)
d.DisallowUnknownFields()
d.Decode(c)
d.Decode(c.Config)
return nil
}

func initOption(modeFlag string) (*Config, error) {
option := &Config{}
func (c *Client) initOption(modeFlag string) error {
var err error

// コマンドライン引数で"-mode=auto"がセットされていたら、対話式のメッセージは表示しない
if modeFlag == "auto" {
err := option.loadConfig()
return option, err
err := c.loadConfig()
return err
}

// 対話式でオプションをセット

var target string
var serviceId string
var apiKey string
Expand All @@ -59,7 +48,7 @@ func initOption(modeFlag string) (*Config, error) {
fmt.Println("> モードを選択してください(auto / manual)")
for scanner.Scan() {
if scanner.Text() == "auto" {
err = option.loadConfig()
err = c.loadConfig()
break
}

Expand Down Expand Up @@ -110,7 +99,7 @@ func initOption(modeFlag string) (*Config, error) {
} else if len(scanner.Text()) > 0 {
num, err := strconv.Atoi(scanner.Text())
if err != nil {
return nil, err
return err
}
requestUnit = num
break
Expand All @@ -125,21 +114,27 @@ func initOption(modeFlag string) (*Config, error) {
}
}

option.setConfig(target, serviceId, apiKey, endpoints, requestUnit)
c.Config = &Config{
Target: target,
ServiceID: serviceId,
APIKey: apiKey,
Endpoints: endpoints,
RequestUnit: requestUnit,
}
break
}
}
return option, err
return err
}

func main() {
client := &Client{}
// コマンドライン因数の取得
client := &Client{&Config{}}

// コマンドライン引数の取得
modeFlag := flag.String("mode", "", "mode value")
flag.Parse()

var err error
client.Config, err = initOption(*modeFlag)
err := client.initOption(*modeFlag)
if err != nil {
log.Fatal("正常にオプションをセットできませんでした")
}
Expand Down
6 changes: 3 additions & 3 deletions media.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ func (c *Client) getMediaAry(requiredRequestCount int, requestUnit int) ([]Media

func (c *Client) saveMedia(mediaAry []Media, totalCount int, baseDir string) error {
for i, media := range mediaAry {
// 進捗状況の表示
fmt.Printf("[%d / %d] %s\n", i+1, totalCount, media.Url)

client := new(http.Client)
req, _ := http.NewRequest("GET", media.Url, nil)
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
Expand Down Expand Up @@ -144,9 +147,6 @@ func (c *Client) saveMedia(mediaAry []Media, totalCount int, baseDir string) err
if err != nil {
return err
}

// 進捗状況の表示
fmt.Printf("[%d / %d] %s\n", i+1, totalCount, media.Url)
}
return nil
}

0 comments on commit 9959e88

Please sign in to comment.