kasl-cli 1.0.0

kasl is a comprehensive command-line utility 🛠️ designed to streamline the tracking of work activities 📊, including start times ⏰, pauses ⏸, and task completion
Documentation
# Kasl - Key Activity Synchronization and Logging

# A comprehensive command-line utility for tracking work activities, 

# managing tasks, and generating productivity reports.



# The crate is published as "kasl-cli" (the "kasl" name on crates.io belongs

# to an unrelated project); the binary, library and app identity stay "kasl".

[package]

name = "kasl-cli"

version = "1.0.0"

edition = "2024"

rust-version = "1.97"

description = "kasl is a comprehensive command-line utility 🛠️ designed to streamline the tracking of work activities 📊, including start times ⏰, pauses ⏸, and task completion"

repository = "https://github.com/lacodda/kasl.git"

authors = ["Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)"]

readme = "README.md"

license = "MIT"

keywords = ["cli", "tool", "work", "time", "flow"]

categories = ["command-line-utilities"]

build = "build.rs"

exclude = ["docs/", "tools/", ".github/", ".changeset/", "kasl.webp", "CNAME"]



[lib]

name = "kasl"



[[bin]]

name = "kasl"

path = "src/main.rs"



# Short alias, matching the `ka` brand code. Same program under a second name,

# so `ka report` and `kasl report` are interchangeable. Data paths and

# self-update key off the `kasl` bin above, not off whichever name was typed.

[[bin]]

name = "ka"

path = "src/bin/ka.rs"



# Application metadata used during build process

[package.metadata]

owner = "lacodda"



# Runtime dependencies

[dependencies]

# Error handling

anyhow = "1.0.104"    # Flexible error handling

thiserror = "2.0.19" # Custom error types



# Logging and tracing

tracing = "0.1.44"                                                            # Structured logging

tracing-subscriber = { version = "0.3.23", features = ["env-filter", "fmt"] }



# Encoding and cryptography

base64 = "0.23.1"                              # Base64 encoding/decoding

aes = "0.9.2"                                  # AES encryption

cbc = { version = "0.2.1", features = ["alloc"] } # CBC block mode with padding



# Date and time handling

chrono = "0.4.45" # Date and time library



# Command-line interface

clap = { version = "4.6.6", features = ["derive"] } # CLI argument parsing

dialoguer = "0.12.0"                                 # Interactive prompts



# Data presentation

prettytable-rs = "0.10.0" # Terminal tables



# HTTP client and async runtime

reqwest = { version = "0.13.4", features = ["json", "multipart", "cookies", "query"] }

tokio = { version = "1.53.1", features = ["full"] }



# Database

rusqlite = { version = "0.40.1", features = ["bundled", "chrono"] }



# Serialization

serde = { version = "1.0.229", features = ["derive"] }

serde_json = "1.0.151"



# System and file operations

dotenv = "0.15.0"      # Environment variables from .env files

tar = "0.4.46"         # TAR archive handling

flate2 = "1.1.9"       # Compression

rdev = "0.5.3"         # Input device monitoring

parking_lot = "0.12.5" # Faster synchronization primitives

sysinfo = "0.39.6"     # System information

encoding_rs = "0.8.35" # Text encoding conversion



# Data export formats

csv = "1.4.0"              # CSV reading/writing

rust_xlsxwriter = "0.97.1" # Excel file generation

indicatif = "0.18.6"

terminal_size = "0.4.4"

unicode-width = "0.2.2"

clap_complete = "4.6.9"

keyring = { version = "4.1.6", features = ["apple-native-keyring-store", "windows-native-keyring-store", "zbus-secret-service-keyring-store"] }



# Build-time dependencies

[build-dependencies]

toml = "1.1.4"    # TOML parsing for build script

winres = "0.1.12" # Windows resource embedding

dotenv = "0.15.0" # Environment variables during build



# Platform-specific dependencies for Unix systems

[target.'cfg(unix)'.dependencies]

nix = { version = "0.31.3", features = ["process", "poll"] }



# Desktop toasts on Linux/macOS (XDG / NSUserNotification)

[target.'cfg(not(windows))'.dependencies]

notify-rust = "=4.11.0"



# Platform-specific dependencies for Windows

[target.'cfg(windows)'.dependencies]

win-toast-notify = "0.1.6"

winapi = { version = "0.3", features = [

    "processthreadsapi",

    "winnt",

    "handleapi",

    "errhandlingapi",

    "securitybaseapi",

    "processenv",

    "winbase",

    "namedpipeapi",

    "fileapi",

    "minwindef",

    "consoleapi",

    "synchapi",

    "wincontypes",

] }



# Development dependencies for testing

[dev-dependencies]

serial_test = "4.0.1"

tempfile = "3.27.0"    # Temporary files for tests

test-context = "0.5.8" # Test setup/teardown utilities