waka-cli

Command-line client for the WakaTime API


Keywords
cli, statistics, time-tracking, wakatime, client, rust, wakatime-api
License
EUPL-1.2

Documentation

WakaTime client for Rust

Crates.io Safety Dance docs.rs CI License: EUPL-1.2

A client for the WakaTime API, covering every documented endpoint — coding statistics, summaries, durations, heartbeats, goals, insights, leaderboards, organizations, and the write operations.

This repository is a workspace containing two crates:

  • waka — the API client library (this document)
  • waka-cli — a command-line client built on top of it

Supported endpoints

Authentication works with an API key (new_with_api_key) or an OAuth 2.0 access token (new_with_bearer_token). The write endpoints are tested against mocks only; their request shapes follow the developer docs.

Usage

Add the dependency:

[dependencies]
waka = "0.2.0"
use std::error::Error;
use waka::{SummariesOptions, WakaTimeClientBuilder};

#[tokio::main]
pub async fn main() -> Result<(), Box<dyn Error>> {
    dotenvy::dotenv().ok();
    let api_key = std::env::var("WAKATIME_API_KEY").expect("Missing WAKATIME_API_KEY variable");

    let client = WakaTimeClientBuilder::new_with_api_key(api_key)
        .with_user("sunside")
        .build()?;

    let summary = client
        .summaries("2023-01-01", "2023-01-08", SummariesOptions::default())
        .await?;
    println!("{summary:?}");

    Ok(())
}

See examples/example.rs for all supported endpoints.