From 8a843f3acc9da1b4b46390fb3dc8676edc2a6d65 Mon Sep 17 00:00:00 2001 From: Thinking-Dragon Date: Sat, 23 Aug 2025 17:29:21 -0400 Subject: [PATCH] Remove deprecated replicate module --- cli/src/commands/replicate/apply.rs | 9 ---- cli/src/commands/replicate/init.rs | 30 ------------- cli/src/commands/replicate/mod.rs | 34 -------------- cli/src/commands/replicate/plan.rs | 69 ----------------------------- 4 files changed, 142 deletions(-) delete mode 100644 cli/src/commands/replicate/apply.rs delete mode 100644 cli/src/commands/replicate/init.rs delete mode 100644 cli/src/commands/replicate/mod.rs delete mode 100644 cli/src/commands/replicate/plan.rs diff --git a/cli/src/commands/replicate/apply.rs b/cli/src/commands/replicate/apply.rs deleted file mode 100644 index 6c36540..0000000 --- a/cli/src/commands/replicate/apply.rs +++ /dev/null @@ -1,9 +0,0 @@ -use anyhow::Result; -use clap::Parser; - -#[derive(Debug, Parser)] -pub struct ReplicateApplyArgs; - -pub fn replicate_apply_command(_args: &ReplicateApplyArgs) -> Result<()> { - todo!() -} diff --git a/cli/src/commands/replicate/init.rs b/cli/src/commands/replicate/init.rs deleted file mode 100644 index 5cb063f..0000000 --- a/cli/src/commands/replicate/init.rs +++ /dev/null @@ -1,30 +0,0 @@ -use std::{env, path::PathBuf}; - -use anyhow::Result; -use clap::Parser; -use source_wand_common::utils::write_yaml_file::write_yaml_file; -use source_wand_replication::model::{hooks::Hooks, package_destination_git::PackageDestinationGit, package_origin_git::PackageOriginGit, replication_manifest::ReplicationManifest}; - -#[derive(Debug, Parser)] -pub struct ReplicateInitArgs; - -pub fn replicate_init_command(_args: &ReplicateInitArgs) -> Result<()> { - let working_directory: PathBuf = env::current_dir()?; - let project_name = working_directory - .file_name() - .and_then(|os_string| os_string.to_str()) - .ok_or_else(|| anyhow::anyhow!("unknown"))? - .to_string(); - - let replication_manifest: ReplicationManifest = ReplicationManifest::new( - project_name, - Some(Hooks { before_all: None, before_each: None, after_each: None, after_all: None }), - PackageOriginGit::new("".to_string(), "".to_string()), - PackageDestinationGit::new("".to_string(), "".to_string()), - ); - - write_yaml_file(&replication_manifest, "replication.yaml")?; - - println!("Replication project initialized."); - Ok(()) -} diff --git a/cli/src/commands/replicate/mod.rs b/cli/src/commands/replicate/mod.rs deleted file mode 100644 index dde765e..0000000 --- a/cli/src/commands/replicate/mod.rs +++ /dev/null @@ -1,34 +0,0 @@ -use anyhow::Result; -use clap::{command, Parser, Subcommand}; - -use crate::commands::replicate::{apply::{replicate_apply_command, ReplicateApplyArgs}, init::{replicate_init_command, ReplicateInitArgs}, plan::{replicate_plan_command, ReplicatePlanArgs}}; - -pub mod init; -pub mod plan; -pub mod apply; - -#[derive(Debug, Parser)] -pub struct ReplicateArgs { - #[command(subcommand)] - pub command: ReplicateCommand, -} - -#[derive(Debug, Subcommand)] -pub enum ReplicateCommand { - #[command(about = "Initialize a new deep replication project")] - Init(ReplicateInitArgs), - - #[command(about = "Plan a deep replication and validate the replication is possible")] - Plan(ReplicatePlanArgs), - - #[command(about = "Apply the deep replication plan")] - Apply(ReplicateApplyArgs), -} - -pub fn replicate_command(args: &ReplicateArgs) -> Result<()> { - match &args.command { - ReplicateCommand::Init(args) => replicate_init_command(args), - ReplicateCommand::Plan(args) => replicate_plan_command(args), - ReplicateCommand::Apply(args) => replicate_apply_command(args), - } -} diff --git a/cli/src/commands/replicate/plan.rs b/cli/src/commands/replicate/plan.rs deleted file mode 100644 index 8ea70a3..0000000 --- a/cli/src/commands/replicate/plan.rs +++ /dev/null @@ -1,69 +0,0 @@ -use std::{fs::create_dir_all, path::PathBuf}; - -use anyhow::Result; -use clap::Parser; -use serde_json::Value; -use source_wand_common::{project_manipulator::{local_project_manipulator::LocalProjectManipulator, project_manipulator::ProjectManipulator}, utils::{read_yaml_file::read_yaml_file, write_yaml_file::write_yaml_file}}; -use source_wand_replication::model::{package::Package, package_destination::PackageDestination, package_destination_git::PackageDestinationGit, package_origin::PackageOrigin, package_origin_go_cache::PackageOriginGoCache, replication_manifest::ReplicationManifest, replication_plan::ReplicationPlan}; - -#[derive(Debug, Parser)] -pub struct ReplicatePlanArgs; - -pub fn replicate_plan_command(_args: &ReplicatePlanArgs) -> Result<()> { - let replication_manifest: ReplicationManifest = read_yaml_file("replication.yaml")?; - - match replication_manifest.origin { - PackageOrigin::Git(origin) => { - let top_level_directory: PathBuf = PathBuf::from("./source-wand/top-level/repository"); - create_dir_all(&top_level_directory)?; - - let top_level: LocalProjectManipulator = LocalProjectManipulator::new(top_level_directory, true); - - top_level.run_shell(format!("git clone {} .", origin.git))?; - top_level.run_shell(format!("git checkout {}", origin.reference))?; - - let mut packages: Vec = Vec::new(); - - let build_dependencies: serde_json::Value = serde_json::from_str(top_level.run_shell("go list -json -m all | jq -s".to_string())?.as_str())?; - if let Value::Array(build_dependencies) = build_dependencies { - for build_dependency in build_dependencies { - if let Value::Object(build_dependency) = build_dependency { - println!("name: {:#?}", build_dependency.get("Path")); - println!("version: {:#?}", build_dependency.get("Version")); - println!("cache_path: {:#?}", build_dependency.get("GoMod")); - let name: String = build_dependency.get("Path").unwrap().as_str().unwrap_or_default().replace("/", "-"); - let version: String = build_dependency.get("Version").unwrap_or(&Value::String(String::new())).as_str().unwrap_or_default().to_string(); - let cache_path: String = build_dependency.get("GoMod").unwrap_or(&Value::String(String::new())).as_str().unwrap_or_default().to_string(); - let PackageDestination::Git(package_destination) = &replication_manifest.destination_template; - let package_destination_url: String = package_destination.git - .replace("$NAME", &name) - .replace("$VERSION", &version); - let package_destination_reference: String = package_destination.reference - .replace("$NAME", &name) - .replace("$VERSION", &version); - - let package: Package = Package::new( - 0, - PackageOriginGoCache::new(name, version, cache_path), - PackageDestinationGit::new( - package_destination_url, - package_destination_reference, - ), - Vec::new(), - ); - - packages.push(package); - } - } - } - - let replication_plan: ReplicationPlan = ReplicationPlan::new(replication_manifest.project, replication_manifest.hooks, packages); - write_yaml_file(&replication_plan, "./source-wand/replication-plan.yaml")?; - - top_level.cleanup(); - }, - PackageOrigin::GoCache(_origin) => {}, - } - - Ok(()) -}