diff --git a/.env b/.env deleted file mode 100644 index b544a1e..0000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -TOKEN_CSCHERR=test -TOKEN_GH=test diff --git a/.gitignore b/.gitignore index 193d30e..35ef9e9 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ Cargo.lock # Added by cargo /target +.env diff --git a/Cargo.toml b/Cargo.toml index 091e5b0..b2eb710 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "autocrate" -version = "0.1.0-prealpha.4" +version = "0.1.0-prealpha.5" edition = "2021" publish = true authors = ["Christoph J. Scherr "] @@ -28,7 +28,8 @@ clap-verbosity-flag = "2.1.2" forgejo-api = "0.1.0" futures = "0.3.30" git2 = "0.18.1" -libpt = { version = "0.3.11", features = ["log"] } +libpt = { version = "0.4.2", features = ["log"] } +octocrab = "0.38.0" reqwest = "0.11.24" serde = { version = "1.0.195", features = ["derive"] } serde_json = "1.0.116" diff --git a/src/config/cli.rs b/src/config/cli.rs index 6b26337..351c984 100644 --- a/src/config/cli.rs +++ b/src/config/cli.rs @@ -110,10 +110,10 @@ impl Cli { } }; if cli.meta { - Logger::init(None, Some(ll), true).expect("could not initialize Logger"); + Logger::build(None, Some(ll), true).expect("could not initialize Logger"); } else { // less verbose version - Logger::init_mini(Some(ll)).expect("could not initialize Logger"); + Logger::build_mini(Some(ll)).expect("could not initialize Logger"); } cli } diff --git a/src/config/mod.rs b/src/config/mod.rs index 9e82373..dbede01 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -208,8 +208,7 @@ impl Version { panic!("{err:?}"); } } - - }, + } } } } diff --git a/src/error.rs b/src/error.rs index 44ed537..6f80b38 100644 --- a/src/error.rs +++ b/src/error.rs @@ -33,7 +33,9 @@ pub enum ServerApiError { #[error(transparent)] ReqwestErr(#[from] reqwest::Error), #[error(transparent)] - ForgejoApiError(#[from] forgejo_api::ForgejoError) + ForgejoApiError(#[from] forgejo_api::ForgejoError), + #[error(transparent)] + GithubApiError(#[from] octocrab::Error) } #[derive(Error, Debug)] @@ -66,5 +68,5 @@ pub enum ConfigError { #[error("An endpoint was set for an ApiType that does not require one")] EndpointSetButNotNeeded, #[error("No endpoint was set for an ApiType that requires one")] - NoEndpointSet + NoEndpointSet, } diff --git a/src/release/mod.rs b/src/release/mod.rs index c341373..d57bdda 100644 --- a/src/release/mod.rs +++ b/src/release/mod.rs @@ -41,7 +41,7 @@ pub async fn release(cfg: &Config, apis: &mut ApiCollection) -> Result<()> { .expect("no auth but trying to publish") .user, repository: api.get_cfg().repository.clone(), - text: changelog.clone(), + text: crate::changelog::Changelog::build(cfg)?.to_string(), tag: tag.clone(), commit_sig: commit_sig.clone(), }; diff --git a/src/serverapi/forgejo.rs b/src/serverapi/forgejo.rs index 722e84e..511f1b6 100644 --- a/src/serverapi/forgejo.rs +++ b/src/serverapi/forgejo.rs @@ -1,5 +1,3 @@ -use std::str::FromStr; - use crate::{ config::{Api, Config}, error::*, @@ -7,15 +5,9 @@ use crate::{ }; use async_trait::async_trait; use forgejo_api; -use libpt::log::debug; -use reqwest::{ - header::{HeaderMap, HeaderValue}, - Client, Url, -}; -use serde_json; pub struct Forgejo { - cfg: Api, + api: Api, api_wrapper: forgejo_api::Forgejo, } @@ -27,7 +19,7 @@ impl Forgejo { ) .map_err(ServerApiError::from)?; Ok(Self { - cfg: api.clone(), + api: api.clone(), api_wrapper, }) } @@ -61,6 +53,6 @@ impl ServerApi for Forgejo { todo!() } fn get_cfg(&self) -> &Api { - &self.cfg + &self.api } } diff --git a/src/serverapi/github.rs b/src/serverapi/github.rs index 468a983..596f1c8 100644 --- a/src/serverapi/github.rs +++ b/src/serverapi/github.rs @@ -1,4 +1,5 @@ use async_trait::async_trait; +use octocrab; use super::{PublishContext, ReleaseContext, ServerApi}; use crate::{ @@ -6,16 +7,36 @@ use crate::{ error::*, }; pub struct Github { - cfg: Api, + api: Api, +} + +impl Github { + pub async fn build(api: &Api) -> Result { + Ok(Self { + api: api.to_owned(), + }) + } } #[async_trait] impl ServerApi for Github { async fn init(&mut self, _cfg: &Config) -> Result<()> { - todo!() + Ok(()) } - async fn push_release(&mut self, _rc: ReleaseContext) -> Result<()> { - todo!() + async fn push_release(&mut self, rc: ReleaseContext) -> Result<()> { + let response = octocrab::instance() + .repos(rc.username, rc.repository) + .releases() + .create(&rc.tag) + .target_commitish(&rc.commit_sig) + .name(&rc.tag) + .body(&rc.text) + .draft(rc.draft) + .prerelease(rc.prerelease) + .send() + .await + .map_err(ServerApiError::from)?; + Ok(()) } async fn push_release_artifact(&mut self, _rc: ReleaseContext) -> Result<()> { todo!() @@ -24,12 +45,6 @@ impl ServerApi for Github { todo!() } fn get_cfg(&self) -> &Api { - &self.cfg - } -} - -impl Github { - pub async fn build(api: &Api) -> Result { - Ok(Self { cfg: api.clone() }) + &self.api } }