From 32cd94dd23ebe05288a151852d4e0e0cd752bcb2 Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Mon, 7 Nov 2022 17:46:15 +0100 Subject: [PATCH] Add `rad-init` command Signed-off-by: Alexis Sellier --- Cargo.lock | 1 + radicle-cli/Cargo.toml | 1 + radicle-cli/src/commands.rs | 1 + radicle-cli/src/commands/init.rs | 313 +++++++++++++++++++++ radicle-cli/src/git.rs | 462 +++++++++++++++++++++++++++++++ radicle-cli/src/lib.rs | 2 + radicle-node/src/test/tests.rs | 2 +- radicle-tools/src/rad-init.rs | 2 +- radicle/src/lib.rs | 10 + radicle/src/rad.rs | 36 +-- radicle/src/storage/git.rs | 2 +- radicle/src/test/fixtures.rs | 2 +- 12 files changed, 813 insertions(+), 21 deletions(-) create mode 100644 radicle-cli/src/commands.rs create mode 100644 radicle-cli/src/commands/init.rs create mode 100644 radicle-cli/src/git.rs diff --git a/Cargo.lock b/Cargo.lock index 214fe36a..4f6a10e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1504,6 +1504,7 @@ dependencies = [ "radicle", "radicle-cob", "radicle-crypto", + "serde_json", "thiserror", "zeroize", ] diff --git a/radicle-cli/Cargo.toml b/radicle-cli/Cargo.toml index 1ffdbbb9..633bcc27 100644 --- a/radicle-cli/Cargo.toml +++ b/radicle-cli/Cargo.toml @@ -12,6 +12,7 @@ dialoguer = { version = "0.10.0" } indicatif = { version = "0.16.2" } lexopt = { version = "0.2" } log = { version = "0.4", features = ["std"] } +serde_json = { version = "1" } thiserror = { version = "1" } zeroize = { version = "1.1" } diff --git a/radicle-cli/src/commands.rs b/radicle-cli/src/commands.rs new file mode 100644 index 00000000..43763f10 --- /dev/null +++ b/radicle-cli/src/commands.rs @@ -0,0 +1 @@ +pub mod init; diff --git a/radicle-cli/src/commands/init.rs b/radicle-cli/src/commands/init.rs new file mode 100644 index 00000000..6f064d50 --- /dev/null +++ b/radicle-cli/src/commands/init.rs @@ -0,0 +1,313 @@ +#![allow(clippy::or_fun_call)] +use std::convert::TryFrom; +use std::env; +use std::ffi::OsString; +use std::path::PathBuf; + +use anyhow::{anyhow, bail, Context as _}; + +use radicle::crypto::ssh; +use radicle::git::RefString; +use radicle::node::NodeId; + +use crate::git; +use crate::terminal as term; +use crate::terminal::args::{Args, Error, Help}; +use crate::terminal::Interactive; +use radicle::profile; +use serde_json as json; + +pub const HELP: Help = Help { + name: "init", + description: "Initialize radicle projects from git repositories", + version: env!("CARGO_PKG_VERSION"), + usage: r#" +Usage + + rad init [] [