Releases can now be created... sorta
The API token is read from the environment variable `RELEASE_KEY_GITEA`. "GITEA" is on the end because Gitea itself will refuse to allow users to configure Act variables starting with the name "GITEA_". All information about the release is hard-coded right now. I just needed to see it hit the API and appear on the Gitea page. Hooking up the extra options is up next.
This commit is contained in:
@@ -15,4 +15,8 @@ pub struct Args {
|
||||
#[derive(Subcommand, Debug)]
|
||||
pub enum Commands {
|
||||
ListReleases,
|
||||
CreateRelease {
|
||||
#[arg()]
|
||||
name: String,
|
||||
},
|
||||
}
|
||||
|
||||
25
src/lib.rs
25
src/lib.rs
@@ -1,4 +1,4 @@
|
||||
use serde::Deserialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub mod cli;
|
||||
|
||||
@@ -35,3 +35,26 @@ pub struct Author {
|
||||
full_name: String,
|
||||
email: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Debug)]
|
||||
pub struct CreateReleaseOption {
|
||||
body: String,
|
||||
draft: bool,
|
||||
name: String,
|
||||
prerelease: bool,
|
||||
tag_name: String,
|
||||
target_commitish: String,
|
||||
}
|
||||
|
||||
impl CreateReleaseOption {
|
||||
pub fn new(name: String) -> Self {
|
||||
Self{
|
||||
body: String::from("hard-coded test body"),
|
||||
draft: true,
|
||||
name,
|
||||
prerelease: true,
|
||||
tag_name: String::from("hard-coded-test"),
|
||||
target_commitish: String::from("3171c892480c46976106fa465d04fdb7e734dd53")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
18
src/main.rs
18
src/main.rs
@@ -1,5 +1,8 @@
|
||||
use gt_tools::CreateReleaseOption;
|
||||
use gt_tools::{ReleaseInfo, cli::Args};
|
||||
|
||||
use std::env;
|
||||
|
||||
use clap::Parser;
|
||||
|
||||
use reqwest::Error;
|
||||
@@ -27,6 +30,21 @@ async fn main() -> Result<(), Error> {
|
||||
|
||||
println!("{:?}", body_text);
|
||||
}
|
||||
gt_tools::cli::Commands::CreateRelease { name } => {
|
||||
let token = env::var("RELEASE_KEY_GITEA")
|
||||
.expect("You must set the RELEASE_KEY_GITEA environment variable so the Gitea API can be used.");
|
||||
let body = CreateReleaseOption::new(name);
|
||||
let response = client
|
||||
.post(request_url)
|
||||
.header(USER_AGENT, "gt-tools-test-agent")
|
||||
.header(ACCEPT, "application/json")
|
||||
.header("Authorization", format!("token {}", token))
|
||||
.json(&body)
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
println!("{:?}", response.text().await?);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user