Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,10 @@ uv run cargo run -- test --reporter llm

## logging

A single knob (`-v` / `-q` flags or `TRYKE_LOG` env) drives both rust
and python verbosity. `RUST_LOG` is honored as a power-user override
for the rust side only. Default is `warn` on rust, off for workers
(no chatter unless asked). See `docs/guides/configuration.md` for the
full precedence chain.
A single knob (`-v` / `-q` flags or `TRYKE_LOG` env) drives both Rust
and Python verbosity. `RUST_LOG` is honored as a power-user override
for the Rust side only. The default is `warn` everywhere. See
`docs/guides/configuration.md` for the full precedence chain.

## running rust tests

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ Released on 2026-07-04.
- Add `--workers` to `tryke server`
- Discover Python environments from `VIRTUAL_ENV`, Conda, and the project
`.venv`
- Resolve one log level for Rust, reporter diagnostics, and Python workers

### Bug Fixes

Expand Down
63 changes: 60 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ tokio = { version = "1", features = [
"process",
] }
tokio-stream = "0.1"
tokio-util = { version = "0.7", features = ["rt"] }
notify = "6"
notify-debouncer-mini = "0.4"
toml = "1.0"
Expand Down
1 change: 1 addition & 0 deletions crates/tryke/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ env_logger = "0.11"
log = "0.4"
tokio = { workspace = true, features = ["signal"] }
tokio-stream = { workspace = true }
tokio-util = { workspace = true }
tryke_config = { workspace = true }
tryke_discovery = { workspace = true, features = ["filesystem"] }
tryke_reporter = { workspace = true, features = ["terminal"] }
Expand Down
3 changes: 3 additions & 0 deletions crates/tryke/src/commands/clean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ use crate::cli::{CleanArgs, GlobalArgs};

pub(crate) fn run_clean_command(args: CleanArgs, global: &GlobalArgs) -> Result<ExitStatus> {
let cwd = env::current_dir()?;

let mut metadata = ProjectMetadata::new(args.root.as_deref().unwrap_or(&cwd));
metadata.apply_configuration_file();
metadata.apply_cli_args(args.project_options(global));
let project = Project::from_metadata(metadata);

let report = tryke_discovery::clean_project_cache(&project)?;

if report.removed_entries == 0 {
Expand All @@ -25,5 +27,6 @@ pub(crate) fn run_clean_command(args: CleanArgs, global: &GlobalArgs) -> Result<
report.cache_dir.display()
);
}

Ok(ExitStatus::Success)
}
51 changes: 27 additions & 24 deletions crates/tryke/src/commands/server.rs
Original file line number Diff line number Diff line change
@@ -1,41 +1,44 @@
use std::env;

use anyhow::Result;
use tokio_util::sync::CancellationToken;
use tryke_config::{Project, ProjectMetadata};
use tryke_discovery::Discoverer;
use tryke_runner::{WorkerPool, WorkerPoolOptions};
use tryke_server::Server;

use crate::ExitStatus;
use crate::cli::{GlobalArgs, ServerArgs};
use crate::logging::LogConfig;

pub(crate) fn run_server_command(args: ServerArgs, global: &GlobalArgs) -> Result<ExitStatus> {
let cli_filter = global.verbose.log_level_filter();
let tryke_log = env::var("TRYKE_LOG").ok();
let log_level = tryke_config::worker_log_level(tryke_log.as_deref(), cli_filter);
pub(crate) async fn run_server_command(
args: ServerArgs,
global: &GlobalArgs,
logging: LogConfig,
cancellation: CancellationToken,
) -> Result<ExitStatus> {
let cwd = env::current_dir()?;

let mut metadata = ProjectMetadata::new(args.root.as_deref().unwrap_or(&cwd));
metadata.apply_configuration_file();
metadata.apply_cli_args(args.project_options(global));
let project = Project::from_metadata(metadata);
let runtime = tokio::runtime::Runtime::new()?;

runtime.block_on(async move {
let worker_pool = WorkerPool::spawn(
&project,
WorkerPoolOptions {
size: args.workers,
python_path: None,
log_level,
warm: false,
},
)
.await;

let discoverer = Discoverer::new(&project);

tryke_server::Server::new(worker_pool, discoverer)
.serve()
.await
})?;

let worker_pool = WorkerPool::spawn(
&project,
WorkerPoolOptions {
size: args.workers,
python_path: None,
log_level: logging.level(),
warm: false,
},
)
.await;

let discoverer = Discoverer::new(&project);
let server = Server::new(worker_pool, discoverer);

server.serve_with_cancellation(cancellation).await?;

Ok(ExitStatus::Success)
}
Loading