[package]
edition = "2024"
name = "torc"
version = "0.13.1"
authors = [
"Daniel Thom",
"Joseph McKinsey",
]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Workflow management system"
readme = "README.md"
license = "BSD-3-Clause"
repository = "https://github.com/NREL/torc"
resolver = "2"
[features]
cli-docs = ["dep:clap-markdown"]
client = [
"dep:reqwest",
"dep:sysinfo",
"dep:hostname",
"dep:json5",
"dep:serde_yaml",
"dep:kdl",
"dep:clap",
"dep:clap_complete",
"dep:env_logger",
"dep:serde_with",
"dep:serde_repr",
"dep:tabled",
"dep:anyhow",
"dep:regex",
"dep:rusqlite",
"dep:rpassword",
"dep:signal-hook",
"dep:libc",
"dep:nvml-wrapper",
"dep:percent-encoding",
"dep:sha2",
"dep:shlex",
"dep:flate2",
"dep:tar",
"config",
]
config = [
"dep:config",
"dep:dirs",
"dep:toml",
]
conversion = [
"frunk",
"frunk_derives",
"frunk_core",
"frunk-enum-core",
"frunk-enum-derive",
]
dash = [
"client",
"config",
"dep:axum",
"dep:tower",
"dep:tower-http",
"dep:mime_guess",
"dep:uuid",
"dep:tracing-subscriber",
"dep:rust-embed",
"dep:async-stream",
"dep:tokio",
"dep:anyhow",
"dep:tracing",
]
default = [
"client",
"tui",
"plot_resources",
]
mcp-server = [
"client",
"dep:rmcp",
"dep:schemars",
"dep:tempfile",
"dep:tracing-subscriber",
"dep:tokio",
"dep:anyhow",
"dep:tracing",
]
plot_resources = [
"dep:plotly",
"dep:rusqlite",
"dep:anyhow",
]
server = [
"dep:async-trait",
"dep:async-stream",
"dep:swagger",
"dep:hyper",
"dep:serde_ignored",
"dep:percent-encoding",
"dep:regex",
"dep:lazy_static",
"dep:anyhow",
"dep:sqlx",
"dep:tokio",
"dep:dotenvy",
"dep:jsonwebtoken",
"dep:sha2",
"dep:tracing",
"dep:bcrypt",
"dep:rust-embed",
"dep:parking_lot",
]
server-bin = [
"server",
"config",
"dep:clap",
"dep:tracing-subscriber",
"dep:tracing-appender",
"dep:tracing-timing",
"dep:hdrhistogram",
"dep:service-manager",
"dep:file-rotate",
"dep:rpassword",
"dep:openssl",
"dep:tokio-openssl",
"dep:daemonize",
]
slurm-runner = ["client"]
tui = [
"client",
"dep:ratatui",
"dep:crossterm",
"dep:petgraph",
]
[lib]
name = "torc"
path = "src/lib.rs"
[[bin]]
name = "generate-cli-docs"
path = "src/bin/generate-cli-docs.rs"
required-features = [
"client",
"tui",
"plot_resources",
"cli-docs",
]
[[bin]]
name = "torc"
path = "src/main.rs"
required-features = [
"client",
"tui",
"plot_resources",
]
[[bin]]
name = "torc-dash"
path = "src/bin/torc-dash.rs"
required-features = ["dash"]
[[bin]]
name = "torc-htpasswd"
path = "src/bin/torc-htpasswd.rs"
required-features = ["server-bin"]
[[bin]]
name = "torc-mcp-server"
path = "src/bin/torc-mcp-server.rs"
required-features = ["mcp-server"]
[[bin]]
name = "torc-server"
path = "src/bin/torc-server.rs"
required-features = ["server-bin"]
[[bin]]
name = "torc-slurm-job-runner"
path = "src/bin/torc-slurm-job-runner.rs"
required-features = ["slurm-runner"]
[[test]]
name = "common"
path = "tests/common.rs"
[[test]]
name = "test_access_groups"
path = "tests/test_access_groups.rs"
[[test]]
name = "test_ai_assisted_recovery"
path = "tests/test_ai_assisted_recovery.rs"
[[test]]
name = "test_async_cli_command"
path = "tests/test_async_cli_command.rs"
[[test]]
name = "test_auto_schedule"
path = "tests/test_auto_schedule.rs"
[[test]]
name = "test_claim_jobs_based_on_resources"
path = "tests/test_claim_jobs_based_on_resources.rs"
[[test]]
name = "test_claim_next_jobs"
path = "tests/test_claim_next_jobs.rs"
[[test]]
name = "test_command_utils"
path = "tests/test_command_utils.rs"
[[test]]
name = "test_completion_reversal"
path = "tests/test_completion_reversal.rs"
[[test]]
name = "test_config"
path = "tests/test_config.rs"
[[test]]
name = "test_correct_resources"
path = "tests/test_correct_resources.rs"
[[test]]
name = "test_create_node_resources"
path = "tests/test_create_node_resources.rs"
[[test]]
name = "test_events"
path = "tests/test_events.rs"
[[test]]
name = "test_files"
path = "tests/test_files.rs"
[[test]]
name = "test_full_workflows"
path = "tests/test_full_workflows.rs"
[[test]]
name = "test_hpc"
path = "tests/test_hpc.rs"
[[test]]
name = "test_htpasswd"
path = "tests/test_htpasswd.rs"
[[test]]
name = "test_jobs"
path = "tests/test_jobs.rs"
[[test]]
name = "test_jobs_create_from_file"
path = "tests/test_jobs_create_from_file.rs"
[[test]]
name = "test_jobs_list_resource_requirements"
path = "tests/test_jobs_list_resource_requirements.rs"
[[test]]
name = "test_list_required_existing_files"
path = "tests/test_list_required_existing_files.rs"
[[test]]
name = "test_log_bundles"
path = "tests/test_log_bundles.rs"
[[test]]
name = "test_orphaned_jobs"
path = "tests/test_orphaned_jobs.rs"
[[test]]
name = "test_remote_workers"
path = "tests/test_remote_workers.rs"
[[test]]
name = "test_resource_requirements"
path = "tests/test_resource_requirements.rs"
[[test]]
name = "test_results"
path = "tests/test_results.rs"
[[test]]
name = "test_scheduled_compute_nodes"
path = "tests/test_scheduled_compute_nodes.rs"
[[test]]
name = "test_slurm_commands"
path = "tests/test_slurm_commands.rs"
[[test]]
name = "test_slurm_interface"
path = "tests/test_slurm_interface.rs"
[[test]]
name = "test_slurm_regenerate"
path = "tests/test_slurm_regenerate.rs"
[[test]]
name = "test_sse_events"
path = "tests/test_sse_events.rs"
[[test]]
name = "test_user_data"
path = "tests/test_user_data.rs"
[[test]]
name = "test_utils"
path = "tests/test_utils.rs"
[[test]]
name = "test_version_check"
path = "tests/test_version_check.rs"
[[test]]
name = "test_workflow_actions"
path = "tests/test_workflow_actions.rs"
[[test]]
name = "test_workflow_actions_integration"
path = "tests/test_workflow_actions_integration.rs"
[[test]]
name = "test_workflow_export"
path = "tests/test_workflow_export.rs"
[[test]]
name = "test_workflow_manager"
path = "tests/test_workflow_manager.rs"
[[test]]
name = "test_workflow_metadata_project"
path = "tests/test_workflow_metadata_project.rs"
[[test]]
name = "test_workflow_relationships"
path = "tests/test_workflow_relationships.rs"
[[test]]
name = "test_workflow_spec"
path = "tests/test_workflow_spec.rs"
[[test]]
name = "test_workflows"
path = "tests/test_workflows.rs"
[dependencies.anyhow]
version = "1"
optional = true
[dependencies.async-stream]
version = "0.3"
optional = true
[dependencies.async-trait]
version = "0.1.24"
optional = true
[dependencies.axum]
version = "0.7"
features = [
"tokio",
"http1",
"http2",
]
optional = true
[dependencies.bcrypt]
version = "0.15"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4.5"
features = [
"derive",
"env",
"color",
]
optional = true
[dependencies.clap-markdown]
version = "0.1"
optional = true
[dependencies.clap_complete]
version = "4.5"
optional = true
[dependencies.config]
version = "0.14"
features = ["toml"]
optional = true
[dependencies.crossterm]
version = "0.28"
optional = true
[dependencies.dirs]
version = "5"
optional = true
[dependencies.dotenvy]
version = "0.15.7"
optional = true
[dependencies.env_logger]
version = "0.11"
optional = true
[dependencies.file-rotate]
version = "0.7"
optional = true
[dependencies.flate2]
version = "1.0"
optional = true
[dependencies.frunk]
version = "0.4.0"
optional = true
[dependencies.frunk-enum-core]
version = "0.3.0"
optional = true
[dependencies.frunk-enum-derive]
version = "0.3.0"
optional = true
[dependencies.frunk_core]
version = "0.4.0"
optional = true
[dependencies.frunk_derives]
version = "0.4.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.hdrhistogram]
version = "7.5"
optional = true
[dependencies.hostname]
version = "0.4.1"
optional = true
[dependencies.hyper]
version = "0.14"
features = ["full"]
optional = true
[dependencies.iso8601]
version = "0.6"
[dependencies.json5]
version = "0.4"
optional = true
[dependencies.jsonwebtoken]
version = "9.3.0"
optional = true
[dependencies.kdl]
version = "6.5"
optional = true
[dependencies.lazy_static]
version = "1.4"
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.log]
version = "0.4.28"
[dependencies.mime]
version = "0.3"
[dependencies.mime_guess]
version = "2.0"
optional = true
[dependencies.nvml-wrapper]
version = "0.10"
optional = true
[dependencies.openssl]
version = "0.10"
optional = true
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.percent-encoding]
version = "2.1.0"
optional = true
[dependencies.petgraph]
version = "0.6"
optional = true
[dependencies.plotly]
version = "0.10"
features = ["kaleido"]
optional = true
default-features = false
[dependencies.ratatui]
version = "0.29"
optional = true
[dependencies.regex]
version = "1.3"
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"blocking",
"multipart",
"native-tls",
"stream",
]
optional = true
default-features = false
[dependencies.rmcp]
version = "0.1"
features = [
"server",
"macros",
"transport-io",
]
optional = true
[dependencies.rpassword]
version = "7.3"
optional = true
[dependencies.rusqlite]
version = "0.32"
features = ["bundled"]
optional = true
[dependencies.rust-embed]
version = "8.5"
optional = true
[dependencies.schemars]
version = "1.0"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_ignored]
version = "0.1.1"
optional = true
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_repr]
version = "0.1"
optional = true
[dependencies.serde_with]
version = "3.8"
features = [
"base64",
"std",
"macros",
]
optional = true
default-features = false
[dependencies.serde_yaml]
version = "0.9"
optional = true
[dependencies.service-manager]
version = "0.7"
optional = true
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.shlex]
version = "1.3"
optional = true
[dependencies.signal-hook]
version = "0.3"
optional = true
[dependencies.sqlx]
version = "0.8.6"
features = [
"runtime-tokio",
"sqlite",
]
optional = true
[dependencies.swagger]
version = "6.1"
features = [
"serdejson",
"server",
"client",
"tls",
"tcp",
]
optional = true
[dependencies.sysinfo]
version = "0.29"
optional = true
[dependencies.tabled]
version = "0.17"
optional = true
[dependencies.tar]
version = "0.4"
optional = true
[dependencies.tempfile]
version = "3"
optional = true
[dependencies.tokio]
version = "1.47"
features = [
"rt-multi-thread",
"macros",
"net",
"signal",
"process",
"io-util",
]
optional = true
[dependencies.tokio-openssl]
version = "0.6"
optional = true
[dependencies.toml]
version = "0.8"
optional = true
[dependencies.tower]
version = "0.4"
optional = true
[dependencies.tower-http]
version = "0.5"
features = [
"cors",
"fs",
]
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-appender]
version = "0.2"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
"json",
]
optional = true
[dependencies.tracing-timing]
version = "0.6"
optional = true
[dependencies.url]
version = "2.5"
[dependencies.uuid]
version = "1.11"
features = ["v4"]
optional = true
[dependencies.validator]
version = "0.16"
features = ["derive"]
[dev-dependencies.cargo-husky]
version = "1"
features = [
"precommit-hook",
"user-hooks",
]
default-features = false
[dev-dependencies.clap-markdown]
version = "0.1"
[dev-dependencies.libc]
version = "0.2"
[dev-dependencies.reqwest]
version = "0.12"
features = [
"json",
"blocking",
"multipart",
"native-tls",
"stream",
]
default-features = false
[dev-dependencies.rstest]
version = "0.26.1"
[dev-dependencies.serial_test]
version = "3.0"
[dev-dependencies.tempfile]
version = "3.22.0"
[target.'cfg(any(target_os = "macos", target_os = "windows", target_os = "ios"))'.dependencies.hyper-tls]
version = "0.5"
optional = true
[target.'cfg(any(target_os = "macos", target_os = "windows", target_os = "ios"))'.dependencies.native-tls]
version = "0.2"
optional = true
[target.'cfg(not(any(target_os = "macos", target_os = "windows", target_os = "ios")))'.dependencies.hyper-openssl]
version = "0.9"
optional = true
[target.'cfg(not(any(target_os = "macos", target_os = "windows", target_os = "ios")))'.dev-dependencies.openssl]
version = "0.10"
[target.'cfg(not(any(target_os = "macos", target_os = "windows", target_os = "ios")))'.dev-dependencies.tokio-openssl]
version = "0.6"
[target.'cfg(target_env = "musl")'.dependencies.openssl]
version = "0.10"
features = ["vendored"]
[target."cfg(unix)".dependencies.daemonize]
version = "0.5"
optional = true
[target."cfg(windows)".dev-dependencies.openssl-sys]
version = "0.9"
features = ["vendored"]