summaryrefslogtreecommitdiff
path: root/src/bin/butck.rs
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-03-09 19:41:50 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-03-09 19:41:50 +0800
commit2827668ab5f38c05f95a0060988313c449436267 (patch)
treea3b357530bb5fe704a217215b99a1ad36c43be36 /src/bin/butck.rs
parent5bd8a0b8e98e0dc1c8ba693c6e1530e75c62b81f (diff)
Move entry module into binary crate
Diffstat (limited to 'src/bin/butck.rs')
-rw-r--r--src/bin/butck.rs54
1 files changed, 49 insertions, 5 deletions
diff --git a/src/bin/butck.rs b/src/bin/butck.rs
index 1152bc8..996ee68 100644
--- a/src/bin/butck.rs
+++ b/src/bin/butck.rs
@@ -1,12 +1,9 @@
use std::process::exit;
use butchunker::{
- chunker::{
- context::ButckContext,
- rw::error::{ButckRWError, ButckRWErrorKind},
- },
- entry::{entry, print_help, print_version},
+ ctx::ButckContext,
special_argument, special_flag,
+ storage::{ButckRWError, ButckRWErrorKind, build, write},
utils::log::init_logger,
};
use just_progress::{progress, renderer};
@@ -116,3 +113,50 @@ fn handle_entry_result(r: Result<(), ButckRWError>) {
},
}
}
+
+pub async fn entry(ctx: ButckContext, args: Vec<String>) -> Result<(), ButckRWError> {
+ if let Some(subcommand) = args.first() {
+ return match subcommand.as_str() {
+ "write" => write(ctx).await,
+ "build" => build(ctx).await,
+ "lspolicy" => {
+ if ctx.stream_read.is_some() {
+ butck_policies::stream_policies()
+ .iter()
+ .for_each(|p| println!("{}", p));
+ } else {
+ butck_policies::policies()
+ .iter()
+ .for_each(|p| println!("{}", p));
+ }
+ return Ok(());
+ }
+ "lspolicy-all" => {
+ let policies = butck_policies::policies();
+ let stream_policies = butck_policies::stream_policies();
+ let mut all_policies: Vec<_> =
+ policies.iter().chain(stream_policies.iter()).collect();
+ all_policies.sort();
+ all_policies.dedup();
+ all_policies.iter().for_each(|p| println!("{}", p));
+ return Ok(());
+ }
+ _ => {
+ print_help();
+ exit(1)
+ }
+ };
+ }
+ Ok(())
+}
+
+pub fn print_help() {
+ println!("{}", include_str!("../../resources/helps/butck.txt").trim());
+}
+
+pub fn print_version() {
+ println!(
+ "{}",
+ include_str!("../../resources/version_info.txt").trim()
+ );
+}