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 [] [