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)]
|
#[derive(Subcommand, Debug)]
|
||||||
pub enum Commands {
|
pub enum Commands {
|
||||||
ListReleases,
|
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;
|
pub mod cli;
|
||||||
|
|
||||||
@@ -35,3 +35,26 @@ pub struct Author {
|
|||||||
full_name: String,
|
full_name: String,
|
||||||
email: 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 gt_tools::{ReleaseInfo, cli::Args};
|
||||||
|
|
||||||
|
use std::env;
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
use reqwest::Error;
|
use reqwest::Error;
|
||||||
@@ -27,6 +30,21 @@ async fn main() -> Result<(), Error> {
|
|||||||
|
|
||||||
println!("{:?}", body_text);
|
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(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user