#github-api #github #download #git #api-bindings

grab_github

使用 GitHub API 从 GitHub 仓库获取文件列表并将它们下载到文件夹

1 个不稳定版本

0.1.0 2024 年 6 月 24 日

#1058文件系统

MIT 许可证

32KB
630 代码行

grab-github

一个用于与 GitHub 的 Get Tree 和 Get Blob API 交互的库,以便在不使用 git 的情况下下载仓库。

由于 GitHub 的二级速率限制很快就会达到,因此目前下载功能仅适用于小型仓库。

示例用法

use grab_github::{DownloadConfigNoReporting, Downloader, Filter, GithubBranchPath, SourceTree};
use std::path::Path;

// Specify the user, repository name, and branch (or commit hash)
let repo = GithubBranchPath::new("githubtraining", "hellogitworld", "master");

// Obtain the directory listing of githubtraining/hellogitworld
let tree = SourceTree::get(&repo).await?;

// Find a file in the directory tree with the given path.
let file = tree.resolve_blob(Path::new("build.gradle")).unwrap();

// GitHub personal access token will be filled from environment 
// variable `GITHUB_ACCESS_TOKEN` if set.
let config = DownloadConfigNoReporting::new(Path::new("output/data"));

// Download this file into the output directory.
Downloader::download_tree(&config, &file, &Filter::all()).await?;

// ...or you can do
Downloader::download_tree(&config, &tree, &Filter::new(vec!["build.gradle"], vec![])).await?;

// ...or just
Downloader::download(&config, &repo, &Filter::new(vec!["build.gradle"], vec![])).await?;

依赖项

~7–18MB
~256K SLoC