GHASToolkit
This is the GitHub Advanced Security (GHAS) Toolkit in Rust.
This toolkit is designed to help developers and security researchers to interact with the GitHub Advanced Security API.
✨ Features
- [Core GHAS Library][code-core]
- [Documentation][docs]
- GitHub Cloud and Enterprise Server support
- API Support
- [CLI Tool][code-cli]
🚀 Usage
GitHub APIs
You can use the GitHub
and Repository
structs to interact with the GitHub API.
use ghastoolkit::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let github = GitHub::default();
println!("GitHub :: {}", github);
let repository = Repository::parse("geekmasher/ghastoolkit-rs@main")
.expect("Failed to parse repository");
println!("Repository :: {}", repository);
Ok(())
}
CodeQL
You can use the CodeQL
struct to interact with the CodeQL CLI.
use ghastoolkit::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let codeql = CodeQL::new().await;
println!("CodeQL :: {}", codeql);
let languages = codeql.get_languages().await?;
println!("Languages :: {:#?}", languages);
let databases = CodeQLDatabases::default();
for database in databases {
println!("Database :: {}", database);
}
let database = CodeQLDatabase::init()
.name("my-project")
.language("javascript")
.path("/path/to/code".to_string())
.build()
.expect("Failed to create CodeQL database");
codeql.database(&database)
.create()
.await?;
codeql.database(&database)
.analyze()
.await?;
let github = GitHub::default();
let repo = Repository::parse("geekmasher/ghastoolkit-rs@main")
.expect("Failed to parse repository");
let databases = CodeQLDatabase::download("./".into(), &repo, &github).await?;
println!("Databases :: {:#?}", databases);
Ok(())
}