1 Commits

Author SHA1 Message Date
cuddle-please
4dd02516d6 chore(release): 0.3.4
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-01-08 21:45:47 +00:00
5 changed files with 5 additions and 89 deletions

View File

@@ -9,14 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.3.4] - 2025-01-08 ## [0.3.4] - 2025-01-08
### Added ### Added
- feat/add-post-clone-command
- add ability to specify custom command - add ability to specify custom command
### Fixed
- use correct post clone command
- tests for config
### Other ### Other
- add ability to specify multiple commands - add ability to specify multiple commands

View File

@@ -111,24 +111,19 @@ impl RootCommand {
} else { } else {
eprintln!("cloning repository..."); eprintln!("cloning repository...");
git_clone.clone_repo(&repo, force_refresh).await?; git_clone.clone_repo(&repo, force_refresh).await?;
self.app
.custom_command()
.execute_post_clone_command(&project_path)
.await?;
} }
} else { } else {
tracing::info!("skipping clone for repo: {}", &repo.to_rel_path().display()); tracing::info!("skipping clone for repo: {}", &repo.to_rel_path().display());
} }
} else { } else {
tracing::info!("repository already exists"); tracing::info!("repository already exists");
self.app
.custom_command()
.execute_post_update_command(&project_path)
.await?;
} }
self.app
.custom_command()
.execute_post_update_command(&project_path)
.await?;
if shell { if shell {
self.app.shell().spawn_shell(&repo).await?; self.app.shell().spawn_shell(&repo).await?;
} else { } else {

View File

@@ -20,7 +20,6 @@ pub struct Settings {
#[serde(default)] #[serde(default)]
pub cache: Cache, pub cache: Cache,
pub post_clone_command: Option<PostCloneCommand>,
pub post_update_command: Option<PostUpdateCommand>, pub post_update_command: Option<PostUpdateCommand>,
} }
@@ -40,22 +39,6 @@ impl PostUpdateCommand {
} }
} }
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
#[serde(untagged)]
pub enum PostCloneCommand {
Single(String),
Multiple(Vec<String>),
}
impl PostCloneCommand {
pub fn get_commands(&self) -> Vec<String> {
match self.clone() {
PostCloneCommand::Single(item) => vec![item],
PostCloneCommand::Multiple(items) => items,
}
}
}
#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Clone)] #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Clone)]
pub struct Projects { pub struct Projects {
pub directory: ProjectLocation, pub directory: ProjectLocation,
@@ -398,7 +381,6 @@ mod test {
directory: PathBuf::from("git").into() directory: PathBuf::from("git").into()
}, },
post_update_command: None, post_update_command: None,
post_clone_command: None
} }
}, },
config config
@@ -425,7 +407,6 @@ mod test {
cache: Cache::default(), cache: Cache::default(),
projects: Projects::default(), projects: Projects::default(),
post_update_command: None, post_update_command: None,
post_clone_command: None
} }
}, },
config config

View File

@@ -11,36 +11,6 @@ impl CustomCommand {
Self { config } Self { config }
} }
pub async fn execute_post_clone_command(&self, path: &Path) -> anyhow::Result<()> {
if let Some(post_clone_command) = &self.config.settings.post_clone_command {
for command in post_clone_command.get_commands() {
let command_parts = command.split(' ').collect::<Vec<_>>();
let Some((first, rest)) = command_parts.split_first() else {
return Ok(());
};
let mut cmd = tokio::process::Command::new(first);
cmd.args(rest).current_dir(path);
eprintln!("running command: {}", command);
tracing::info!(
path = path.display().to_string(),
cmd = command,
"running custom post clone command"
);
let output = cmd.output().await?;
let stdout = std::str::from_utf8(&output.stdout)?;
tracing::info!(
stdout = stdout,
"finished running custom post clone command"
);
}
}
Ok(())
}
pub async fn execute_post_update_command(&self, path: &Path) -> anyhow::Result<()> { pub async fn execute_post_update_command(&self, path: &Path) -> anyhow::Result<()> {
if let Some(post_update_command) = &self.config.settings.post_update_command { if let Some(post_update_command) = &self.config.settings.post_update_command {
for command in post_update_command.get_commands() { for command in post_update_command.get_commands() {

View File

@@ -1,31 +1,7 @@
[settings]
# Runs after a project is fetched for the first time, either a single string, or multiple in an array
post_clone_command = "jj git init --colocate"
# Runs after a project is jumped to if it already exists.
post_update_command = ["git pull", "jj git fetch"]
[[providers.github]] [[providers.github]]
# Who is the user running the clone command
current_user = "kjuulh"
# How to authenticate to github
access_token = { env = "GITHUB_ACCESS_TOKEN" }
# Which users to index
users = ["kjuulh"] users = ["kjuulh"]
# Which organisations to index
organisations = ["lunarway"] organisations = ["lunarway"]
[[providers.gitea]] [[providers.gitea]]
# WHich gitea instance to authenticate against
url = "https://git.front.kjuulh.io/api/v1"
# How to authenticate to gitea
current_user = "kjuulh"
# WHich token to use to authenticate
access_token = { env = "GITEA_ACCESS_TOKEN" }
# Which users to index
users = ["kjuulh"] users = ["kjuulh"]
# Which organisations to index
organisation = ["noorgplease"] organisation = ["noorgplease"]