@@ -53,6 +53,8 @@ pub struct ConfigProvider {
|
||||
|
||||
pub worktree: Option<bool>,
|
||||
pub init_worktree: Option<bool>,
|
||||
|
||||
pub remote_name: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
@@ -192,6 +194,7 @@ impl Config {
|
||||
.get_repos(
|
||||
config.worktree.unwrap_or(false),
|
||||
config.force_ssh.unwrap_or(false),
|
||||
config.remote_name,
|
||||
)?
|
||||
}
|
||||
RemoteProvider::Gitlab => {
|
||||
@@ -205,6 +208,7 @@ impl Config {
|
||||
.get_repos(
|
||||
config.worktree.unwrap_or(false),
|
||||
config.force_ssh.unwrap_or(false),
|
||||
config.remote_name,
|
||||
)?
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,6 +103,9 @@ pub struct FindRemoteArgs {
|
||||
#[clap(arg_enum, short, long, help = "Remote provider to use")]
|
||||
pub provider: RemoteProvider,
|
||||
|
||||
#[clap(short, long, help = "Name of the remote to use")]
|
||||
pub remote_name: Option<String>,
|
||||
|
||||
#[clap(
|
||||
multiple_occurrences = true,
|
||||
name = "user",
|
||||
@@ -189,6 +192,9 @@ pub struct SyncRemoteArgs {
|
||||
#[clap(arg_enum, short, long, help = "Remote provider to use")]
|
||||
pub provider: RemoteProvider,
|
||||
|
||||
#[clap(short, long, help = "Name of the remote to use")]
|
||||
pub remote_name: Option<String>,
|
||||
|
||||
#[clap(
|
||||
multiple_occurrences = true,
|
||||
name = "user",
|
||||
|
||||
@@ -64,7 +64,11 @@ fn main() {
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
.get_repos(worktree, args.force_ssh)
|
||||
.get_repos(
|
||||
worktree,
|
||||
args.force_ssh,
|
||||
args.remote_name,
|
||||
)
|
||||
}
|
||||
cmd::RemoteProvider::Gitlab => {
|
||||
match provider::Gitlab::new(filter, token, args.api_url) {
|
||||
@@ -74,7 +78,11 @@ fn main() {
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
.get_repos(worktree, args.force_ssh)
|
||||
.get_repos(
|
||||
worktree,
|
||||
args.force_ssh,
|
||||
args.remote_name,
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
@@ -280,6 +288,7 @@ fn main() {
|
||||
.get_repos(
|
||||
config.worktree.unwrap_or(false),
|
||||
config.force_ssh.unwrap_or(false),
|
||||
config.remote_name,
|
||||
) {
|
||||
Ok(provider) => provider,
|
||||
Err(error) => {
|
||||
@@ -299,6 +308,7 @@ fn main() {
|
||||
.get_repos(
|
||||
config.worktree.unwrap_or(false),
|
||||
config.force_ssh.unwrap_or(false),
|
||||
config.remote_name,
|
||||
) {
|
||||
Ok(provider) => provider,
|
||||
Err(error) => {
|
||||
@@ -382,7 +392,11 @@ fn main() {
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
.get_repos(worktree, args.force_ssh)
|
||||
.get_repos(
|
||||
worktree,
|
||||
args.force_ssh,
|
||||
args.remote_name,
|
||||
)
|
||||
}
|
||||
cmd::RemoteProvider::Gitlab => {
|
||||
match provider::Gitlab::new(filter, token, args.api_url) {
|
||||
@@ -392,7 +406,11 @@ fn main() {
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
.get_repos(worktree, args.force_ssh)
|
||||
.get_repos(
|
||||
worktree,
|
||||
args.force_ssh,
|
||||
args.remote_name,
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -213,6 +213,7 @@ pub trait Provider {
|
||||
&self,
|
||||
worktree_setup: bool,
|
||||
force_ssh: bool,
|
||||
remote_name: Option<String>,
|
||||
) -> Result<HashMap<Option<String>, Vec<repo::Repo>>, String> {
|
||||
let mut repos = vec![];
|
||||
|
||||
@@ -292,10 +293,12 @@ pub trait Provider {
|
||||
|
||||
let mut ret: HashMap<Option<String>, Vec<repo::Repo>> = HashMap::new();
|
||||
|
||||
let remote_name = remote_name.unwrap_or_else(|| self.name().to_string());
|
||||
|
||||
for repo in repos {
|
||||
let namespace = repo.namespace();
|
||||
|
||||
let mut repo = repo.into_repo_config(self.name(), worktree_setup, force_ssh);
|
||||
let mut repo = repo.into_repo_config(&remote_name, worktree_setup, force_ssh);
|
||||
|
||||
// Namespace is already part of the hashmap key. I'm not too happy
|
||||
// about the data exchange format here.
|
||||
|
||||
Reference in New Issue
Block a user