diff --git a/Cargo.lock b/Cargo.lock index 533d53c..c8a7df7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2497,7 +2497,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "silos" -version = "3.0.0" +version = "5.0.0" dependencies = [ "anyhow", "candle-core", diff --git a/Cargo.toml b/Cargo.toml index 68bc4e3..becc7d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "silos" -version = "4.0.0" +version = "5.0.0" edition = "2024" [dependencies] diff --git a/snippets/v1/fish/path-entries.kdl b/snippets/generate/fish/path-entries.kdl similarity index 100% rename from snippets/v1/fish/path-entries.kdl rename to snippets/generate/fish/path-entries.kdl diff --git a/snippets/v1/fish/var-prompt.kdl b/snippets/generate/fish/var-prompt.kdl similarity index 100% rename from snippets/v1/fish/var-prompt.kdl rename to snippets/generate/fish/var-prompt.kdl diff --git a/snippets/v1/go/base64_encoding.kdl b/snippets/generate/go/base64_encoding.kdl similarity index 100% rename from snippets/v1/go/base64_encoding.kdl rename to snippets/generate/go/base64_encoding.kdl diff --git a/snippets/v1/go/simple_worker.kdl b/snippets/generate/go/simple_worker.kdl similarity index 100% rename from snippets/v1/go/simple_worker.kdl rename to snippets/generate/go/simple_worker.kdl diff --git a/snippets/v1/sh/loop-files.kdl b/snippets/generate/sh/loop-files.kdl similarity index 100% rename from snippets/v1/sh/loop-files.kdl rename to snippets/generate/sh/loop-files.kdl diff --git a/snippets/v1/sh/loop-numbers.kdl b/snippets/generate/sh/loop-numbers.kdl similarity index 100% rename from snippets/v1/sh/loop-numbers.kdl rename to snippets/generate/sh/loop-numbers.kdl diff --git a/snippets/v1/sh/lstrip.kdl b/snippets/generate/sh/lstrip.kdl similarity index 100% rename from snippets/v1/sh/lstrip.kdl rename to snippets/generate/sh/lstrip.kdl diff --git a/snippets/v1/sh/rstrip.kdl b/snippets/generate/sh/rstrip.kdl similarity index 100% rename from snippets/v1/sh/rstrip.kdl rename to snippets/generate/sh/rstrip.kdl diff --git a/snippets/v1/sh/trim-spaces.kdl b/snippets/generate/sh/trim-spaces.kdl similarity index 100% rename from snippets/v1/sh/trim-spaces.kdl rename to snippets/generate/sh/trim-spaces.kdl diff --git a/snippets/v2/go/mutations.kdl b/snippets/refactor/go/mutations.kdl similarity index 100% rename from snippets/v2/go/mutations.kdl rename to snippets/refactor/go/mutations.kdl diff --git a/src/args.rs b/src/args.rs index 48f12e4..a9b9291 100644 --- a/src/args.rs +++ b/src/args.rs @@ -14,6 +14,10 @@ pub(crate) struct Args { /// Revision or branch. #[arg(long)] pub(crate) revision: Option, + + /// Path to the directory containing `generate` and `refactor` snippets. + #[arg(long, default_value = "./snippets")] + pub(crate) snippets: String, } impl Args { diff --git a/src/main.rs b/src/main.rs index 8247a55..92fa7c3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,8 +12,8 @@ use tower_lsp::{LspService, Server}; mod args; mod embed; mod lsp; -mod state; mod mutation; +mod state; fn path_to_parent_base(p: &std::path::Path) -> Result { let Some(parent) = p @@ -36,7 +36,7 @@ async fn main() -> Result<()> { let mut dict = HashMap::default(); let dimensions = 384; - let paths = glob::glob("./snippets/v1/*/*.kdl")?; + let paths = glob::glob(&format!("{}/generate/*/*.kdl", args.snippets))?; for path in paths { let path = path?; let parent = path_to_parent_base(&path)?; @@ -67,26 +67,25 @@ async fn main() -> Result<()> { .map_err(E::msg)?; } - // v2 - let paths = glob::glob("./snippets/v2/*/*.kdl")?; - let mut v2_dict = HashMap::new(); - let mut v2_mutations_collection = vec![]; + let paths = glob::glob(&format!("{}/refactor/*/*.kdl", args.snippets))?; + let mut refactor_dict = HashMap::new(); + let mut mutations_collection = vec![]; for (i, path) in paths.enumerate() { let path = path?; let parent = path_to_parent_base(&path)?; let mutations = mutation::from_path(path)?; - let current_lang_index = v2_dict + let current_lang_index = refactor_dict .entry(parent) .or_insert_with(|| HNSWIndex::new(dimensions, &Default::default())); current_lang_index .add(&embed.embed(&mutations.description)?, i) .map_err(E::msg)?; - v2_mutations_collection.push(mutations); + mutations_collection.push(mutations); } - for index in v2_dict.values_mut() { + for index in refactor_dict.values_mut() { index.build(Euclidean).map_err(E::msg)?; } @@ -94,8 +93,8 @@ async fn main() -> Result<()> { embed, generate: state::Generate { dict }, refactor: state::Refactor { - dict: v2_dict, - mutations_collection: v2_mutations_collection, + dict: refactor_dict, + mutations_collection, }, }; @@ -105,7 +104,7 @@ async fn main() -> Result<()> { let (service, socket) = LspService::new(|client| lsp::Backend { client, body: Arc::new(Mutex::new(String::default())), - appstate + appstate, }); Server::new(stdin, stdout, socket).serve(service).await; Ok(())