mirror of
https://codeberg.org/Cyborus/forgejo-cli.git
synced 2024-11-27 04:03:48 +01:00
Merge pull request 'add ci' (#8) from ci into main
Reviewed-on: https://codeberg.org/Cyborus/forgejo-cli/pulls/8
This commit is contained in:
commit
98e3cceff8
4 changed files with 38 additions and 14 deletions
13
.woodpecker/check.yml
Normal file
13
.woodpecker/check.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
when:
|
||||
- event: manual
|
||||
- event: pull_request
|
||||
steps:
|
||||
check:
|
||||
image: rust
|
||||
commands:
|
||||
- cargo check
|
||||
check-fmt:
|
||||
image: rust
|
||||
commands:
|
||||
- rustup component add rustfmt
|
||||
- cargo fmt --check
|
|
@ -1,6 +1,6 @@
|
|||
use clap::Subcommand;
|
||||
use eyre::eyre;
|
||||
use forgejo_api::{Forgejo, CreateIssueCommentOption, EditIssueOption, IssueCommentQuery, Comment};
|
||||
use forgejo_api::{Comment, CreateIssueCommentOption, EditIssueOption, Forgejo, IssueCommentQuery};
|
||||
|
||||
use crate::repo::RepoInfo;
|
||||
|
||||
|
@ -52,9 +52,7 @@ pub enum EditCommand {
|
|||
#[derive(Subcommand, Clone, Debug)]
|
||||
pub enum ViewCommand {
|
||||
Body,
|
||||
Comment {
|
||||
idx: usize,
|
||||
},
|
||||
Comment { idx: usize },
|
||||
Comments,
|
||||
}
|
||||
|
||||
|
@ -68,7 +66,7 @@ impl IssueCommand {
|
|||
View { id, command } => match command.unwrap_or(ViewCommand::Body) {
|
||||
ViewCommand::Body => view_issue(&repo, &api, id).await?,
|
||||
ViewCommand::Comment { idx } => view_comment(&repo, &api, id, idx).await?,
|
||||
ViewCommand::Comments => view_comments(&repo, &api, id).await?
|
||||
ViewCommand::Comments => view_comments(&repo, &api, id).await?,
|
||||
},
|
||||
Edit { issue, command } => match command {
|
||||
EditCommand::Title { new_title } => {
|
||||
|
@ -134,7 +132,9 @@ async fn view_comment(repo: &RepoInfo, api: &Forgejo, id: u64, idx: usize) -> ey
|
|||
let comments = api
|
||||
.get_issue_comments(repo.owner(), repo.name(), id, IssueCommentQuery::default())
|
||||
.await?;
|
||||
let comment = comments.get(idx).ok_or_else(|| eyre!("comment {idx} doesn't exist"))?;
|
||||
let comment = comments
|
||||
.get(idx)
|
||||
.ok_or_else(|| eyre!("comment {idx} doesn't exist"))?;
|
||||
print_comment(&comment);
|
||||
Ok(())
|
||||
}
|
||||
|
@ -309,7 +309,12 @@ async fn edit_comment(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
async fn close_issue(repo: &RepoInfo, api: &Forgejo, issue: u64, message: Option<Option<String>>) -> eyre::Result<()> {
|
||||
async fn close_issue(
|
||||
repo: &RepoInfo,
|
||||
api: &Forgejo,
|
||||
issue: u64,
|
||||
message: Option<Option<String>>,
|
||||
) -> eyre::Result<()> {
|
||||
if let Some(message) = message {
|
||||
let body = match message {
|
||||
Some(m) => m,
|
||||
|
@ -321,15 +326,16 @@ async fn close_issue(repo: &RepoInfo, api: &Forgejo, issue: u64, message: Option
|
|||
};
|
||||
|
||||
let opt = CreateIssueCommentOption { body };
|
||||
api.create_comment(repo.owner(), repo.name(), issue, opt).await?;
|
||||
api.create_comment(repo.owner(), repo.name(), issue, opt)
|
||||
.await?;
|
||||
}
|
||||
|
||||
let edit = EditIssueOption {
|
||||
state: Some(forgejo_api::State::Closed),
|
||||
..Default::default()
|
||||
};
|
||||
api.edit_issue(repo.owner(), repo.name(), issue, edit).await?;
|
||||
api.edit_issue(repo.owner(), repo.name(), issue, edit)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ async fn readline(msg: &str) -> eyre::Result<String> {
|
|||
|
||||
async fn editor(contents: &mut String, ext: Option<&str>) -> eyre::Result<()> {
|
||||
let editor = std::env::var_os("EDITOR").ok_or_else(|| eyre!("unable to locate editor"))?;
|
||||
|
||||
|
||||
let (mut file, path) = tempfile(ext).await?;
|
||||
file.write_all(contents.as_bytes()).await?;
|
||||
drop(file);
|
||||
|
@ -88,7 +88,8 @@ async fn editor(contents: &mut String, ext: Option<&str>) -> eyre::Result<()> {
|
|||
eprint!(" \r");
|
||||
|
||||
Ok(())
|
||||
})().await;
|
||||
})()
|
||||
.await;
|
||||
|
||||
tokio::fs::remove_file(path).await?;
|
||||
res?;
|
||||
|
|
|
@ -125,10 +125,14 @@ impl RepoCommand {
|
|||
if !head.is_branch() {
|
||||
eyre::bail!("HEAD is not on a branch; cannot push to remote");
|
||||
}
|
||||
let branch_shorthand = head.shorthand().ok_or_else(|| eyre!("branch name invalid utf-8"))?.to_owned();
|
||||
let branch_shorthand = head
|
||||
.shorthand()
|
||||
.ok_or_else(|| eyre!("branch name invalid utf-8"))?
|
||||
.to_owned();
|
||||
let branch_name = std::str::from_utf8(head.name_bytes())?.to_owned();
|
||||
let mut current_branch = git2::Branch::wrap(head);
|
||||
current_branch.set_upstream(Some(&dbg!(format!("{upstream}/{branch_shorthand}"))))?;
|
||||
current_branch
|
||||
.set_upstream(Some(&dbg!(format!("{upstream}/{branch_shorthand}"))))?;
|
||||
|
||||
let auth = auth_git2::GitAuthenticator::new();
|
||||
auth.push(&repo, &mut remote, &[&branch_name])?;
|
||||
|
|
Loading…
Reference in a new issue