···
259
+
func TestHeartbeat(c *cobra.Command, args []string) error {
260
+
// Initialize a new context with task state
261
+
c.SetContext(context.WithValue(context.Background(), "taskState", &taskState{}))
263
+
printTask(c, "Validating arguments")
265
+
configApiKey, _ := c.Flags().GetString("key")
266
+
configApiURL, _ := c.Flags().GetString("url")
268
+
// If either value is missing, try to load from config file
269
+
if configApiKey == "" || configApiURL == "" {
270
+
userDir, err := os.UserHomeDir()
272
+
errorTask(c, "Validating arguments")
275
+
wakatimePath := filepath.Join(userDir, ".wakatime.cfg")
277
+
cfg, err := ini.Load(wakatimePath)
279
+
errorTask(c, "Validating arguments")
280
+
return errors.New("config file not found and you haven't passed all arguments")
283
+
settings, err := cfg.GetSection("settings")
285
+
errorTask(c, "Validating arguments")
286
+
return errors.New("no settings section in your config")
289
+
// Only load from config if not provided as parameter
290
+
if configApiKey == "" {
291
+
configApiKey = settings.Key("api_key").String()
292
+
if configApiKey == "" {
293
+
errorTask(c, "Validating arguments")
294
+
return errors.New("couldn't find an api_key in your config")
298
+
if configApiURL == "" {
299
+
configApiURL = settings.Key("api_url").String()
300
+
if configApiURL == "" {
301
+
errorTask(c, "Validating arguments")
302
+
return errors.New("couldn't find an api_url in your config")
307
+
completeTask(c, "Arguments look fine!")
309
+
printTask(c, "Loading api client")
311
+
client := wakatime.NewClientWithOptions(configApiKey, configApiURL)
312
+
_, err := client.GetStatusBar()
314
+
errorTask(c, "Loading api client")
318
+
completeTask(c, "Loading api client")
320
+
c.Println("Sending a test heartbeat to", styles.Muted.Render(configApiURL))
322
+
printTask(c, "Sending test heartbeat")
324
+
err = client.SendHeartbeat(testHeartbeat)
327
+
errorTask(c, "Sending test heartbeat")
331
+
completeTask(c, "Sending test heartbeat")
333
+
c.Println("❇️ test heartbeat sent!")