Skip to content

Commit c9dac85

Browse files
authored
Merge pull request #13 from foobaragency/restart
fix restart command
2 parents bf10500 + 30f0a6a commit c9dac85

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

cmd/activities.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,32 @@ var createCmd = &cobra.Command{
9595
},
9696
}
9797

98+
var restartCmd = &cobra.Command{
99+
Use: "restart",
100+
Short: "Restart an activity (empty <activity> will restart last activity)",
101+
Run: func(cmd *cobra.Command, args []string) {
102+
activityId, err := cmd.Flags().GetInt("activity")
103+
104+
if activityId == 0 || err != nil {
105+
activities, err := data.GetActivities()
106+
if err != nil {
107+
fmt.Println("Could not retrieve activities", err)
108+
return
109+
}
110+
if len(activities) == 0 {
111+
fmt.Println("No activities found")
112+
return
113+
}
114+
activityId = activities[len(activities)-1].Id
115+
}
116+
117+
err = data.RestartActivity(activityId)
118+
if err != nil {
119+
fmt.Println("Could not restart activity:", err)
120+
}
121+
},
122+
}
123+
98124
var editCmd = &cobra.Command{
99125
Use: "edit <activity>",
100126
Short: "Edit an activity",
@@ -158,6 +184,7 @@ func init() {
158184
activitiesCmd.AddCommand(editCmd)
159185
activitiesCmd.AddCommand(createCmd)
160186
activitiesCmd.AddCommand(deleteCmd)
187+
activitiesCmd.AddCommand(restartCmd)
161188

162189
rootCmd.AddCommand(activitiesCmd)
163190
}

data/activities.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,30 @@ func StartActivity(projectId int, taskId int, description string) error {
134134
return nil
135135
}
136136

137+
func RestartActivity(id int) error {
138+
config := config.Init()
139+
apiKey := config.GetString("api_key")
140+
domain := config.GetString("domain")
141+
if apiKey == "" {
142+
return fmt.Errorf("api_key not set")
143+
}
144+
if domain == "" {
145+
return fmt.Errorf("domain not set")
146+
}
147+
148+
req, _ := http.NewRequest("PATCH", fmt.Sprintf("https://%s.mocoapp.com/api/v1/activities/%d/start_timer", domain, id), nil)
149+
req.Header.Add("Authorization", fmt.Sprintf("Token token=%s", apiKey))
150+
req.Header.Add("Content-Type", "application/json")
151+
152+
client := &http.Client{}
153+
resp, err := client.Do(req)
154+
if err != nil || resp.StatusCode == 422 {
155+
return err
156+
}
157+
defer resp.Body.Close()
158+
return nil
159+
}
160+
137161
func EditActivity(id int, minutes int, description string) error {
138162
config := config.Init()
139163
apiKey := config.GetString("api_key")

0 commit comments

Comments
 (0)