Skip to content

Commit 96dc1c7

Browse files
committed
Merge pull request #74 from Tonkpils/fetch-by-language
Fetch by language
2 parents c9fc21c + e388254 commit 96dc1c7

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

fetch_endpoint.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ func FetchEndpoint(args []string) string {
88
if len(args) == 0 {
99
return FetchEndpoints["current"]
1010
}
11-
return fmt.Sprintf("%s/%s/%s", FetchEndpoints["exercise"], args[0], args[1])
11+
12+
endpoint := FetchEndpoints["exercise"]
13+
for _, arg := range args {
14+
endpoint = fmt.Sprintf("%s/%s", endpoint, arg)
15+
}
16+
17+
return endpoint
1218
}

fetch_endpoint_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,9 @@ func TestFetchExerciseEndpoint(t *testing.T) {
1616
actual := FetchEndpoint([]string{"language", "slug"})
1717
assert.Equal(t, expected, actual)
1818
}
19+
20+
func TestFetchExerciseEndpointByLanguage(t *testing.T) {
21+
expected := "/api/v1/assignments/language"
22+
actual := FetchEndpoint([]string{"language"})
23+
assert.Equal(t, expected, actual)
24+
}

main.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,15 @@ func main() {
9292
ShortName: "f",
9393
Usage: "Fetch assignments from exercism.io",
9494
Action: func(c *cli.Context) {
95-
if len(c.Args()) != 0 && len(c.Args()) != 2 {
96-
fmt.Println("Usage: exercism fetch\n or: exercism fetch LANGUAGE EXERCISE")
95+
argCount := len(c.Args())
96+
if argCount < 0 || argCount > 2 {
97+
fmt.Println("Usage: exercism fetch\n or: exercism fetch LANGUAGE\n or: exercism fetch LANGUAGE EXERCISE")
9798
return
9899
}
99100

100101
config, err := configuration.FromFile(c.GlobalString("config"))
101102
if err != nil {
102-
if len(c.Args()) == 0 {
103+
if argCount == 0 || argCount == 1 {
103104
fmt.Println("Are you sure you are logged in? Please login again.")
104105
return
105106
} else {
@@ -117,6 +118,18 @@ func main() {
117118
return
118119
}
119120

121+
if len(assignments) == 0 {
122+
noAssignmentMessage := "No assignments found"
123+
if argCount == 2 {
124+
fmt.Printf("%s for %s - %s\n", noAssignmentMessage, c.Args()[0], c.Args()[1])
125+
} else if argCount == 1 {
126+
fmt.Printf("%s for %s\n", noAssignmentMessage, c.Args()[0])
127+
} else {
128+
fmt.Printf("%s\n", noAssignmentMessage)
129+
}
130+
return
131+
}
132+
120133
for _, a := range assignments {
121134
err := SaveAssignment(config.ExercismDirectory, a)
122135
if err != nil {

0 commit comments

Comments
 (0)