Files
starship/src/configs/mod.rs
T

358 lines
8.7 KiB
Rust
Raw Normal View History

use indexmap::IndexMap;
use serde::{self, Deserialize, Serialize};
pub mod aws;
2021-12-06 23:01:33 +01:00
pub mod azure;
2019-09-30 20:10:35 +08:00
pub mod battery;
2022-03-12 03:10:23 -08:00
pub mod buf;
2022-08-01 12:59:36 +02:00
pub mod bun;
2022-03-25 04:10:19 +00:00
pub mod c;
2025-04-27 01:42:35 +05:30
pub mod cc;
pub mod character;
pub mod claude_context;
pub mod claude_cost;
pub mod claude_model;
2020-07-09 21:40:33 +02:00
pub mod cmake;
pub mod cmd_duration;
2021-09-07 07:59:14 -07:00
pub mod cobol;
2019-10-05 20:25:25 +02:00
pub mod conda;
2022-01-21 16:44:46 +01:00
pub mod container;
2025-04-27 01:42:35 +05:30
pub mod cpp;
2020-02-05 00:27:06 +01:00
pub mod crystal;
2020-04-11 18:37:24 +02:00
pub mod custom;
2022-05-26 16:42:31 +02:00
pub mod daml;
2020-07-29 17:38:23 +02:00
pub mod dart;
2021-04-15 06:22:12 -07:00
pub mod deno;
pub mod directory;
2023-12-17 02:22:29 -05:00
pub mod direnv;
2020-04-05 20:42:55 +01:00
pub mod docker_context;
2019-10-02 16:56:49 +10:00
pub mod dotnet;
2020-03-02 04:29:27 +01:00
pub mod elixir;
2020-02-05 21:57:04 -06:00
pub mod elm;
pub mod env_var;
2020-04-27 12:09:42 +02:00
pub mod erlang;
2022-12-21 18:53:53 +02:00
pub mod fennel;
pub mod fill;
2025-10-21 20:17:08 +02:00
pub mod fortran;
pub mod fossil_branch;
pub mod fossil_metrics;
2020-08-04 06:30:20 +09:00
pub mod gcloud;
pub mod git_branch;
2019-12-06 08:57:42 -08:00
pub mod git_commit;
2021-07-10 16:54:34 -04:00
pub mod git_metrics;
pub mod git_state;
2019-10-26 00:20:20 -06:00
pub mod git_status;
2024-04-05 23:56:15 +02:00
pub mod gleam;
pub mod go;
2022-12-17 13:32:40 +01:00
pub mod gradle;
pub mod guix_shell;
2022-03-18 14:45:51 +08:00
pub mod haskell;
2022-12-04 18:28:49 +01:00
pub mod haxe;
2020-07-17 10:51:25 +03:00
pub mod helm;
2019-12-02 23:37:18 +01:00
pub mod hg_branch;
2025-06-06 23:24:16 +02:00
pub mod hg_state;
pub mod hostname;
pub mod java;
pub mod jobs;
2020-04-04 03:16:34 +09:00
pub mod julia;
2020-12-26 15:26:50 +01:00
pub mod kotlin;
pub mod kubernetes;
pub mod line_break;
pub mod localip;
2020-10-28 03:05:20 +09:00
pub mod lua;
2026-01-25 12:36:09 -08:00
pub mod maven;
pub mod memory_usage;
pub mod meson;
2025-04-26 16:15:30 -04:00
pub mod mise;
pub mod mojo;
2024-05-15 12:46:14 -04:00
pub mod nats;
2025-03-09 08:45:58 -07:00
pub mod netns;
2020-06-09 10:14:47 -07:00
pub mod nim;
pub mod nix_shell;
pub mod nodejs;
2020-05-22 01:43:13 +09:00
pub mod ocaml;
2024-04-05 17:56:49 -04:00
pub mod odin;
pub mod opa;
pub mod openstack;
2022-11-06 14:37:58 -07:00
pub mod os;
pub mod package;
pub mod perl;
2019-12-05 18:04:27 +00:00
pub mod php;
2022-12-31 09:55:23 -05:00
pub mod pijul_channel;
2025-04-26 22:13:57 +02:00
pub mod pixi;
2021-10-05 16:27:25 -07:00
pub mod pulumi;
pub mod purescript;
pub mod python;
2024-03-20 17:50:12 -04:00
pub mod quarto;
2022-06-26 12:00:55 +02:00
pub mod raku;
2021-04-20 17:31:47 +01:00
pub mod red;
pub mod rlang;
pub mod ruby;
2019-09-30 20:10:35 +08:00
pub mod rust;
2021-03-14 21:37:00 +02:00
pub mod scala;
2021-02-20 14:40:49 +00:00
pub mod shell;
2020-08-05 12:30:01 -04:00
pub mod shlvl;
2020-02-26 17:18:19 +01:00
pub mod singularity;
2023-04-14 00:35:12 +05:30
pub mod solidity;
2022-04-03 15:33:14 +02:00
pub mod spack;
mod starship_root;
2020-09-26 00:04:51 +02:00
pub mod status;
2021-11-15 02:46:13 -03:00
pub mod sudo;
2020-07-29 17:36:49 +02:00
pub mod swift;
pub mod terraform;
pub mod time;
2023-10-26 15:31:16 +02:00
pub mod typst;
pub mod username;
2021-05-03 20:50:29 +01:00
pub mod v;
pub mod vagrant;
2026-01-04 17:44:03 +01:00
pub mod vcs;
2021-03-28 18:48:15 +03:00
pub mod vcsh;
2025-07-14 01:56:18 +08:00
pub mod xmake;
2020-05-21 18:49:49 +02:00
pub mod zig;
2019-09-30 20:10:35 +08:00
pub use starship_root::*;
#[derive(Serialize, Deserialize, Clone, Default)]
2022-09-09 14:59:38 +02:00
#[cfg_attr(
feature = "config-schema",
derive(schemars::JsonSchema),
schemars(deny_unknown_fields)
)]
#[serde(default)]
pub struct FullConfig<'a> {
// Meta
#[serde(rename = "$schema")]
schema: String,
// Root config
#[serde(flatten)]
root: StarshipRootConfig,
// modules
#[serde(borrow)]
aws: aws::AwsConfig<'a>,
#[serde(borrow)]
2021-12-06 23:01:33 +01:00
azure: azure::AzureConfig<'a>,
#[serde(borrow)]
battery: battery::BatteryConfig<'a>,
#[serde(borrow)]
2022-03-12 03:10:23 -08:00
buf: buf::BufConfig<'a>,
#[serde(borrow)]
2022-08-01 12:59:36 +02:00
bun: bun::BunConfig<'a>,
#[serde(borrow)]
2022-03-25 04:10:19 +00:00
c: c::CConfig<'a>,
#[serde(borrow)]
character: character::CharacterConfig<'a>,
#[serde(borrow)]
claude_context: claude_context::ClaudeContextConfig<'a>,
#[serde(borrow)]
claude_cost: claude_cost::ClaudeCostConfig<'a>,
#[serde(borrow)]
claude_model: claude_model::ClaudeModelConfig<'a>,
#[serde(borrow)]
cmake: cmake::CMakeConfig<'a>,
#[serde(borrow)]
cmd_duration: cmd_duration::CmdDurationConfig<'a>,
#[serde(borrow)]
2021-09-07 07:59:14 -07:00
cobol: cobol::CobolConfig<'a>,
#[serde(borrow)]
conda: conda::CondaConfig<'a>,
#[serde(borrow)]
2022-01-21 16:44:46 +01:00
container: container::ContainerConfig<'a>,
#[serde(borrow)]
2025-04-27 01:42:35 +05:30
cpp: cpp::CppConfig<'a>,
#[serde(borrow)]
crystal: crystal::CrystalConfig<'a>,
#[serde(borrow)]
2022-05-26 16:42:31 +02:00
daml: daml::DamlConfig<'a>,
#[serde(borrow)]
dart: dart::DartConfig<'a>,
#[serde(borrow)]
2021-04-15 06:22:12 -07:00
deno: deno::DenoConfig<'a>,
#[serde(borrow)]
directory: directory::DirectoryConfig<'a>,
#[serde(borrow)]
2023-12-17 02:22:29 -05:00
direnv: direnv::DirenvConfig<'a>,
#[serde(borrow)]
docker_context: docker_context::DockerContextConfig<'a>,
#[serde(borrow)]
dotnet: dotnet::DotnetConfig<'a>,
#[serde(borrow)]
elixir: elixir::ElixirConfig<'a>,
#[serde(borrow)]
elm: elm::ElmConfig<'a>,
#[serde(borrow)]
env_var: IndexMap<String, env_var::EnvVarConfig<'a>>,
#[serde(borrow)]
erlang: erlang::ErlangConfig<'a>,
#[serde(borrow)]
2022-12-21 18:53:53 +02:00
fennel: fennel::FennelConfig<'a>,
#[serde(borrow)]
fill: fill::FillConfig<'a>,
#[serde(borrow)]
2025-10-21 20:17:08 +02:00
fortran: fortran::FortranConfig<'a>,
#[serde(borrow)]
fossil_branch: fossil_branch::FossilBranchConfig<'a>,
#[serde(borrow)]
fossil_metrics: fossil_metrics::FossilMetricsConfig<'a>,
#[serde(borrow)]
gcloud: gcloud::GcloudConfig<'a>,
#[serde(borrow)]
git_branch: git_branch::GitBranchConfig<'a>,
#[serde(borrow)]
git_commit: git_commit::GitCommitConfig<'a>,
#[serde(borrow)]
2021-07-10 16:54:34 -04:00
git_metrics: git_metrics::GitMetricsConfig<'a>,
#[serde(borrow)]
git_state: git_state::GitStateConfig<'a>,
#[serde(borrow)]
git_status: git_status::GitStatusConfig<'a>,
#[serde(borrow)]
2024-04-05 23:56:15 +02:00
gleam: gleam::GleamConfig<'a>,
#[serde(borrow)]
golang: go::GoConfig<'a>,
#[serde(borrow)]
2022-12-17 13:32:40 +01:00
gradle: gradle::GradleConfig<'a>,
#[serde(borrow)]
guix_shell: guix_shell::GuixShellConfig<'a>,
#[serde(borrow)]
2022-03-18 14:45:51 +08:00
haskell: haskell::HaskellConfig<'a>,
#[serde(borrow)]
2022-12-04 18:28:49 +01:00
haxe: haxe::HaxeConfig<'a>,
#[serde(borrow)]
helm: helm::HelmConfig<'a>,
#[serde(borrow)]
hg_branch: hg_branch::HgBranchConfig<'a>,
#[serde(borrow)]
2025-06-06 23:24:16 +02:00
hg_state: hg_state::HgStateConfig<'a>,
#[serde(borrow)]
hostname: hostname::HostnameConfig<'a>,
#[serde(borrow)]
java: java::JavaConfig<'a>,
#[serde(borrow)]
jobs: jobs::JobsConfig<'a>,
#[serde(borrow)]
julia: julia::JuliaConfig<'a>,
#[serde(borrow)]
kotlin: kotlin::KotlinConfig<'a>,
#[serde(borrow)]
kubernetes: kubernetes::KubernetesConfig<'a>,
line_break: line_break::LineBreakConfig,
#[serde(borrow)]
localip: localip::LocalipConfig<'a>,
#[serde(borrow)]
lua: lua::LuaConfig<'a>,
#[serde(borrow)]
2026-01-25 12:36:09 -08:00
maven: maven::MavenConfig<'a>,
#[serde(borrow)]
memory_usage: memory_usage::MemoryConfig<'a>,
#[serde(borrow)]
meson: meson::MesonConfig<'a>,
#[serde(borrow)]
2025-04-26 16:15:30 -04:00
mise: mise::MiseConfig<'a>,
#[serde(borrow)]
mojo: mojo::MojoConfig<'a>,
#[serde(borrow)]
2024-05-15 12:46:14 -04:00
nats: nats::NatsConfig<'a>,
#[serde(borrow)]
2025-03-09 08:45:58 -07:00
netns: netns::NetnsConfig<'a>,
#[serde(borrow)]
nim: nim::NimConfig<'a>,
#[serde(borrow)]
nix_shell: nix_shell::NixShellConfig<'a>,
#[serde(borrow)]
nodejs: nodejs::NodejsConfig<'a>,
#[serde(borrow)]
ocaml: ocaml::OCamlConfig<'a>,
#[serde(borrow)]
2024-04-05 17:56:49 -04:00
odin: odin::OdinConfig<'a>,
#[serde(borrow)]
opa: opa::OpaConfig<'a>,
#[serde(borrow)]
openstack: openstack::OspConfig<'a>,
#[serde(borrow)]
2022-11-06 14:37:58 -07:00
os: os::OSConfig<'a>,
#[serde(borrow)]
package: package::PackageConfig<'a>,
#[serde(borrow)]
perl: perl::PerlConfig<'a>,
#[serde(borrow)]
php: php::PhpConfig<'a>,
#[serde(borrow)]
2022-12-31 09:55:23 -05:00
pijul_channel: pijul_channel::PijulConfig<'a>,
#[serde(borrow)]
2025-04-26 22:13:57 +02:00
pixi: pixi::PixiConfig<'a>,
#[serde(borrow)]
2021-10-05 16:27:25 -07:00
pulumi: pulumi::PulumiConfig<'a>,
#[serde(borrow)]
purescript: purescript::PureScriptConfig<'a>,
#[serde(borrow)]
python: python::PythonConfig<'a>,
#[serde(borrow)]
2024-03-20 17:50:12 -04:00
quarto: quarto::QuartoConfig<'a>,
#[serde(borrow)]
2022-06-26 12:00:55 +02:00
raku: raku::RakuConfig<'a>,
#[serde(borrow)]
2021-04-20 17:31:47 +01:00
red: red::RedConfig<'a>,
#[serde(borrow)]
rlang: rlang::RLangConfig<'a>,
#[serde(borrow)]
ruby: ruby::RubyConfig<'a>,
#[serde(borrow)]
rust: rust::RustConfig<'a>,
#[serde(borrow)]
scala: scala::ScalaConfig<'a>,
#[serde(borrow)]
shell: shell::ShellConfig<'a>,
#[serde(borrow)]
shlvl: shlvl::ShLvlConfig<'a>,
#[serde(borrow)]
singularity: singularity::SingularityConfig<'a>,
#[serde(borrow)]
2023-04-14 00:35:12 +05:30
solidity: solidity::SolidityConfig<'a>,
#[serde(borrow)]
2022-04-03 15:33:14 +02:00
spack: spack::SpackConfig<'a>,
#[serde(borrow)]
status: status::StatusConfig<'a>,
#[serde(borrow)]
2021-11-15 02:46:13 -03:00
sudo: sudo::SudoConfig<'a>,
#[serde(borrow)]
swift: swift::SwiftConfig<'a>,
#[serde(borrow)]
terraform: terraform::TerraformConfig<'a>,
#[serde(borrow)]
time: time::TimeConfig<'a>,
#[serde(borrow)]
2023-10-26 15:31:16 +02:00
typst: typst::TypstConfig<'a>,
#[serde(borrow)]
username: username::UsernameConfig<'a>,
#[serde(borrow)]
vagrant: vagrant::VagrantConfig<'a>,
#[serde(borrow)]
2026-01-04 17:44:03 +01:00
vcs: vcs::VcsConfig<'a>,
#[serde(borrow)]
vcsh: vcsh::VcshConfig<'a>,
#[serde(borrow)]
vlang: v::VConfig<'a>,
#[serde(borrow)]
2025-07-14 01:56:18 +08:00
xmake: xmake::XMakeConfig<'a>,
#[serde(borrow)]
zig: zig::ZigConfig<'a>,
#[serde(borrow)]
custom: IndexMap<String, custom::CustomConfig<'a>>,
}
#[cfg(test)]
mod test {
use super::*;
use crate::module::ALL_MODULES;
use toml::value::Value;
#[test]
fn test_all_modules_in_full_config() {
let full_cfg = Value::try_from(FullConfig::default()).unwrap();
let cfg_table = full_cfg.as_table().unwrap();
for module in ALL_MODULES {
assert!(cfg_table.contains_key(*module));
}
}
}