Skip to content

Commit eda6df2

Browse files
committed
Merge pull request exercism#59 from isbadawi/config-flag
Add -c/--config flag to specify config file path.
2 parents 48e1058 + 890c2bd commit eda6df2

5 files changed

Lines changed: 23 additions & 21 deletions

File tree

configuration/from_file.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"io/ioutil"
66
)
77

8-
func FromFile(dir string) (c Config, err error) {
9-
bytes, err := ioutil.ReadFile(Filename(dir))
8+
func FromFile(path string) (c Config, err error) {
9+
bytes, err := ioutil.ReadFile(path)
1010
if err != nil {
1111
return
1212
}

configuration/to_file.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ import (
66
"io/ioutil"
77
)
88

9-
func ToFile(dir string, c Config) error {
9+
func ToFile(path string, c Config) error {
1010
bytes, err := json.Marshal(c)
1111
if err != nil {
1212
return err
1313
}
1414

15-
filename := Filename(dir)
16-
err = ioutil.WriteFile(filename, bytes, 0644)
15+
err = ioutil.WriteFile(path, bytes, 0644)
1716
if err != nil {
1817
return err
1918
}
20-
fmt.Printf("Your credentials have been written to %s\n", filename)
19+
fmt.Printf("Your credentials have been written to %s\n", path)
2120
return nil
2221
}

configuration/to_file_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
func TestReadingWritingConfig(t *testing.T) {
1010
tmpDir, err := ioutil.TempDir("", "")
11+
filename := Filename(tmpDir)
1112
assert.NoError(t, err)
1213

1314
writtenConfig := Config{
@@ -16,9 +17,9 @@ func TestReadingWritingConfig(t *testing.T) {
1617
ExercismDirectory: "/exercism/directory",
1718
}
1819

19-
ToFile(tmpDir, writtenConfig)
20+
ToFile(filename, writtenConfig)
2021

21-
loadedConfig, err := FromFile(tmpDir)
22+
loadedConfig, err := FromFile(filename)
2223
assert.NoError(t, err)
2324

2425
assert.Equal(t, writtenConfig, loadedConfig)

exercism.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"path/filepath"
88
)
99

10-
func logout(dir string) {
11-
os.Remove(configuration.Filename(dir))
10+
func logout(path string) {
11+
os.Remove(path)
1212
}
1313

1414
func absolutePath(path string) (string, error) {

main.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@ func main() {
1515
app.Name = "exercism"
1616
app.Usage = "A command line tool to interact with http://exercism.io"
1717
app.Version = VERSION
18+
app.Flags = []cli.Flag{
19+
cli.StringFlag{"config, c", configuration.Filename(configuration.HomeDir()), "path to config file"},
20+
}
1821
app.Commands = []cli.Command{
1922
{
2023
Name: "current",
2124
ShortName: "c",
2225
Usage: "Show the current assignments",
2326
Action: func(c *cli.Context) {
24-
config, err := configuration.FromFile(configuration.HomeDir())
27+
config, err := configuration.FromFile(c.GlobalString("config"))
2528
if err != nil {
2629
fmt.Println("Are you sure you are logged in? Please login again.")
2730
return
@@ -44,7 +47,7 @@ func main() {
4447
ShortName: "d",
4548
Usage: "Fetch first assignment for each language from exercism.io",
4649
Action: func(c *cli.Context) {
47-
config, err := configuration.FromFile(configuration.HomeDir())
50+
config, err := configuration.FromFile(c.GlobalString("config"))
4851
if err != nil {
4952
config, err = configuration.Demo()
5053
if err != nil {
@@ -76,8 +79,7 @@ func main() {
7679
return
7780
}
7881

79-
config, err := configuration.FromFile(configuration.HomeDir())
80-
82+
config, err := configuration.FromFile(c.GlobalString("config"))
8183
if err != nil {
8284
if len(c.Args()) == 0 {
8385
fmt.Println("Are you sure you are logged in? Please login again.")
@@ -112,23 +114,23 @@ func main() {
112114
ShortName: "l",
113115
Usage: "Save exercism.io api credentials",
114116
Action: func(c *cli.Context) {
115-
configuration.ToFile(configuration.HomeDir(), askForConfigInfo())
117+
configuration.ToFile(c.GlobalString("config"), askForConfigInfo());
116118
},
117119
},
118120
{
119121
Name: "logout",
120122
ShortName: "o",
121123
Usage: "Clear exercism.io api credentials",
122124
Action: func(c *cli.Context) {
123-
logout(configuration.HomeDir())
125+
logout(c.GlobalString("config"))
124126
},
125127
},
126128
{
127129
Name: "peek",
128130
ShortName: "p",
129131
Usage: "Fetch upcoming assignment from exercism.io",
130132
Action: func(c *cli.Context) {
131-
config, err := configuration.FromFile(configuration.HomeDir())
133+
config, err := configuration.FromFile(c.GlobalString("config"))
132134
if err != nil {
133135
fmt.Println("Are you sure you are logged in? Please login again.")
134136
return
@@ -157,7 +159,7 @@ func main() {
157159
"to a file and have not submitted it, and you're trying to restore the last " +
158160
"submitted version, first move that file out of the way, then call restore.",
159161
Action: func(c *cli.Context) {
160-
config, err := configuration.FromFile(configuration.HomeDir())
162+
config, err := configuration.FromFile(c.GlobalString("config"))
161163
if err != nil {
162164
fmt.Println("Are you sure you are logged in? Please login again.")
163165
return
@@ -184,7 +186,7 @@ func main() {
184186
ShortName: "s",
185187
Usage: "Submit code to exercism.io on your current assignment",
186188
Action: func(c *cli.Context) {
187-
config, err := configuration.FromFile(configuration.HomeDir())
189+
config, err := configuration.FromFile(c.GlobalString("config"))
188190
if err != nil {
189191
fmt.Println("Are you sure you are logged in? Please login again.")
190192
return
@@ -237,7 +239,7 @@ func main() {
237239
ShortName: "u",
238240
Usage: "Delete the last submission",
239241
Action: func(c *cli.Context) {
240-
config, err := configuration.FromFile(configuration.HomeDir())
242+
config, err := configuration.FromFile(c.GlobalString("config"))
241243
if err != nil {
242244
fmt.Println("Are you sure you are logged in? Please login again.")
243245
return
@@ -261,7 +263,7 @@ func main() {
261263
ShortName: "w",
262264
Usage: "Get the github username that you are logged in as",
263265
Action: func(c *cli.Context) {
264-
config, err := configuration.FromFile(configuration.HomeDir())
266+
config, err := configuration.FromFile(c.GlobalString("config"))
265267
if err != nil {
266268
fmt.Println("Are you sure you are logged in? Please login again.")
267269
return

0 commit comments

Comments
 (0)