commands/list: init

This commit is contained in:
2026-01-19 09:39:56 +09:00
parent 9479d5acb2
commit a365891b77
8 changed files with 328 additions and 75 deletions

View File

@@ -1,6 +1,6 @@
use std::collections::HashSet;
use crate::sources::{KagamiSource, RepositoryFilter, RepositoryInfo};
use crate::{config::RepositoryFilterConfig, sources::{KagamiSource, RepositoryInfo}};
pub struct KagamiSourceGit {
host: String,
@@ -26,7 +26,7 @@ impl KagamiSource for KagamiSourceGit {
&self,
_owner: &str,
_token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
Ok(HashSet::new())
}
@@ -36,7 +36,7 @@ impl KagamiSource for KagamiSourceGit {
_owner: &str,
_token: Option<&str>,
_recurse_groups: bool,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
Ok(HashSet::new())
}
@@ -45,7 +45,7 @@ impl KagamiSource for KagamiSourceGit {
&self,
_owner: &str,
_token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
Ok(HashSet::new())
}

View File

@@ -2,7 +2,8 @@ use std::collections::HashSet;
use anyhow::Context;
use crate::sources::{KagamiSource, RepositoryFilter, RepositoryInfo, RepositoryVisibility};
use crate::config::RepositoryFilterConfig;
use crate::sources::{KagamiSource, RepositoryInfo, RepositoryVisibility};
use gitea_sdk;
use gitea_sdk::Auth::Token;
@@ -35,7 +36,7 @@ impl KagamiSource for KagamiSourceGitea {
&self,
owner: &str,
token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let base = self.api_base();
@@ -104,7 +105,7 @@ impl KagamiSource for KagamiSourceGitea {
token: Option<&str>,
// NOTE: Gitea does not have nested organizations/groups like GitLab,
_recurse_groups: bool,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let base = self.api_base();
@@ -171,7 +172,7 @@ impl KagamiSource for KagamiSourceGitea {
&self,
owner: &str,
token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let base = self.api_base();

View File

@@ -3,7 +3,10 @@ use std::collections::HashSet;
use anyhow::Context;
use octocrab::{Octocrab, Page, models};
use crate::sources::{KagamiSource, RepositoryFilter, RepositoryInfo, RepositoryVisibility};
use crate::{
config::RepositoryFilterConfig,
sources::{KagamiSource, RepositoryInfo, RepositoryVisibility},
};
pub struct KagamiSourceGithub {
host: Option<String>,
@@ -32,7 +35,7 @@ impl KagamiSource for KagamiSourceGithub {
&self,
owner: &str,
token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let octocrab = {
let mut builder = Octocrab::builder();
@@ -59,13 +62,11 @@ impl KagamiSource for KagamiSourceGithub {
)
.await
.context("failed to fetch user repositories")?,
Some(ref p) => {
match octocrab.get_page(&p.next).await {
Ok(Some(next_page)) => next_page,
Ok(None) => break,
Err(_) => break,
}
}
Some(ref p) => match octocrab.get_page(&p.next).await {
Ok(Some(next_page)) => next_page,
Ok(None) => break,
Err(_) => break,
},
};
for r in &current.items {
@@ -89,7 +90,7 @@ impl KagamiSource for KagamiSourceGithub {
token: Option<&str>,
// NOTE: GitHub nested teams doesn't remove the organization repos; this flag is unused.
_recurse_groups: bool,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let octocrab = {
let mut builder = Octocrab::builder();
@@ -142,7 +143,7 @@ impl KagamiSource for KagamiSourceGithub {
&self,
owner: &str,
token: Option<&str>,
_filter: &RepositoryFilter,
_filter: &RepositoryFilterConfig,
) -> anyhow::Result<HashSet<RepositoryInfo>> {
let octocrab = {
let mut builder = Octocrab::builder();