use anyhow::{Context, Result};
use sessions_cli::update_config;
use std::process::{self, Command};
fn main() {
if let Err(e) = run() {
eprintln!("Error: {:#}", e);
process::exit(1);
}
}
fn count_claude_processes() -> u32 {
let output = Command::new("ps").args(["aux"]).output();
if let Ok(output) = output {
let stdout = String::from_utf8_lossy(&output.stdout);
let count = stdout
.lines()
.filter(|line| {
let fields: Vec<&str> = line.split_whitespace().collect();
if fields.len() > 10 {
let command = fields[10];
command == "claude"
} else {
false
}
})
.count() as u32;
return count;
}
0
}
fn run() -> Result<()> {
let actual_processes = count_claude_processes();
let config = update_config(|config| {
config.count = actual_processes;
})
.context("Failed to update session configuration")?;
println!("─"); println!("────────────────────────────────"); println!("📊 Active sessions: {}", config.count);
println!("────────────────────────────────"); println!();
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use std::process::{Command, Stdio};
#[test]
fn test_run_function() {
let result = run();
assert!(result.is_ok() || result.is_err());
}
#[test]
fn test_binary_execution() {
let output = Command::new("cargo")
.args(&["run", "--bin", "session-start"])
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.output();
assert!(output.is_ok());
}
#[test]
fn test_count_claude_processes() {
let count = count_claude_processes();
let _ = count;
}
}