refactor: separate files
All checks were successful
continuous-integration/drone/push Build is passing

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
Kasper Juul Hermansen 2024-09-13 19:52:14 +02:00
parent ca989486d4
commit 6ab02860b3
Signed by: kjuulh
GPG Key ID: D85D7535F18F35FA
5 changed files with 78 additions and 83 deletions

View File

@ -17,5 +17,5 @@ uuid = { version = "1.7.0", features = ["v4"] }
async-trait = "0.1.82" async-trait = "0.1.82"
toml = "0.8.19" toml = "0.8.19"
gitea-rs = { git = "https://git.front.kjuulh.io/kjuulh/gitea-rs", ref = "main", version = "1.22.1" } gitea-rs = { git = "https://git.front.kjuulh.io/kjuulh/gitea-rs", version = "1.22.1" }
url = "2.5.2" url = "2.5.2"

12
crates/gitnow/src/app.rs Normal file
View File

@ -0,0 +1,12 @@
use crate::config::Config;
#[derive(Debug)]
pub struct App {
pub config: Config,
}
impl App {
pub async fn new_static(config: Config) -> anyhow::Result<&'static App> {
Ok(Box::leak(Box::new(App { config })))
}
}

View File

@ -0,0 +1 @@
pub mod root;

View File

@ -0,0 +1,62 @@
use crate::{
app::App,
git_provider::{
gitea::GiteaProviderApp, github::GitHubProviderApp, GitProvider, VecRepositoryExt,
},
};
#[derive(Debug, Clone)]
pub struct RootCommand {
app: &'static App,
}
impl RootCommand {
pub fn new(app: &'static App) -> Self {
Self { app }
}
#[tracing::instrument(skip(self))]
pub async fn execute(&mut self) -> anyhow::Result<()> {
tracing::debug!("executing");
//let github_provider = self.app.github_provider();
let gitea_provider = self.app.gitea_provider();
let mut repositories = Vec::new();
for gitea in self.app.config.providers.gitea.iter() {
if let Some(user) = &gitea.current_user {
let mut repos = gitea_provider
.list_repositories_for_current_user(
user,
&gitea.url,
gitea.access_token.as_ref(),
)
.await?;
repositories.append(&mut repos);
}
for gitea_user in gitea.users.iter() {
let mut repos = gitea_provider
.list_repositories_for_user(
gitea_user.into(),
&gitea.url,
gitea.access_token.as_ref(),
)
.await?;
repositories.append(&mut repos);
}
}
repositories.collect_unique();
for repo in &repositories {
tracing::info!("repo: {}", repo.to_rel_path().display());
}
tracing::info!("amount of repos fetched {}", repositories.len());
Ok(())
}
}

View File

@ -5,6 +5,8 @@ use clap::{Parser, Subcommand};
use commands::root::RootCommand; use commands::root::RootCommand;
use config::Config; use config::Config;
mod app;
mod commands;
mod config; mod config;
mod git_provider; mod git_provider;
@ -50,85 +52,3 @@ async fn main() -> anyhow::Result<()> {
Ok(()) Ok(())
} }
mod app {
use crate::config::Config;
#[derive(Debug)]
pub struct App {
pub config: Config,
}
impl App {
pub async fn new_static(config: Config) -> anyhow::Result<&'static App> {
Ok(Box::leak(Box::new(App { config })))
}
}
}
mod commands {
pub mod root {
use crate::{
app::App,
git_provider::{
gitea::GiteaProviderApp, github::GitHubProviderApp, GitProvider, VecRepositoryExt,
},
};
#[derive(Debug, Clone)]
pub struct RootCommand {
app: &'static App,
}
impl RootCommand {
pub fn new(app: &'static App) -> Self {
Self { app }
}
#[tracing::instrument(skip(self))]
pub async fn execute(&mut self) -> anyhow::Result<()> {
tracing::debug!("executing");
//let github_provider = self.app.github_provider();
let gitea_provider = self.app.gitea_provider();
let mut repositories = Vec::new();
for gitea in self.app.config.providers.gitea.iter() {
if let Some(user) = &gitea.current_user {
let mut repos = gitea_provider
.list_repositories_for_current_user(
user,
&gitea.url,
gitea.access_token.as_ref(),
)
.await?;
repositories.append(&mut repos);
}
for gitea_user in gitea.users.iter() {
let mut repos = gitea_provider
.list_repositories_for_user(
gitea_user.into(),
&gitea.url,
gitea.access_token.as_ref(),
)
.await?;
repositories.append(&mut repos);
}
}
repositories.collect_unique();
for repo in &repositories {
tracing::info!("repo: {}", repo.to_rel_path().display());
}
tracing::info!("amount of repos fetched {}", repositories.len());
Ok(())
}
}
}
}