chore: move patch::PatchPrStatus to types::PatchPrStatus
Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
@@ -17,12 +17,11 @@
|
|||||||
use clap::Args;
|
use clap::Args;
|
||||||
use nostr::hashes::sha1::Hash as Sha1Hash;
|
use nostr::hashes::sha1::Hash as Sha1Hash;
|
||||||
|
|
||||||
use super::PatchPrStatus;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
traits::{CommandRunner, VecNostrEventExt},
|
traits::{CommandRunner, VecNostrEventExt},
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,12 +16,11 @@
|
|||||||
|
|
||||||
use clap::Args;
|
use clap::Args;
|
||||||
|
|
||||||
use super::PatchPrStatus;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,12 +16,11 @@
|
|||||||
|
|
||||||
use clap::Args;
|
use clap::Args;
|
||||||
|
|
||||||
use super::PatchPrStatus;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,12 +17,11 @@
|
|||||||
use clap::Args;
|
use clap::Args;
|
||||||
use nostr::hashes::sha1::Hash as Sha1Hash;
|
use nostr::hashes::sha1::Hash as Sha1Hash;
|
||||||
|
|
||||||
use super::PatchPrStatus;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
traits::{CommandRunner, VecNostrEventExt},
|
traits::{CommandRunner, VecNostrEventExt},
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,14 +34,12 @@ mod send;
|
|||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
fmt,
|
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
sync::LazyLock,
|
sync::LazyLock,
|
||||||
};
|
};
|
||||||
|
|
||||||
use clap::Subcommand;
|
use clap::Subcommand;
|
||||||
use nostr::event::Kind;
|
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
use self::apply::ApplyArgs;
|
use self::apply::ApplyArgs;
|
||||||
@@ -108,103 +106,6 @@ pub struct GitPatch {
|
|||||||
pub body: String,
|
pub body: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum PatchPrStatus {
|
|
||||||
/// The patch/pr is currently open
|
|
||||||
Open,
|
|
||||||
/// The patch/pr has been merged/applied
|
|
||||||
MergedApplied,
|
|
||||||
/// The patch/pr has been closed
|
|
||||||
Closed,
|
|
||||||
/// A patch/pr that has been drafted but not yet applied.
|
|
||||||
Draft,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PatchPrStatus {
|
|
||||||
/// Returns all status kinds
|
|
||||||
#[inline]
|
|
||||||
pub const fn all_kinds() -> [Kind; 4] {
|
|
||||||
[
|
|
||||||
Kind::GitStatusOpen,
|
|
||||||
Kind::GitStatusApplied,
|
|
||||||
Kind::GitStatusClosed,
|
|
||||||
Kind::GitStatusDraft,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Maps the patch/pr status to its corresponding Nostr kind.
|
|
||||||
#[inline]
|
|
||||||
pub fn kind(&self) -> Kind {
|
|
||||||
match self {
|
|
||||||
Self::Open => Kind::GitStatusOpen,
|
|
||||||
Self::MergedApplied => Kind::GitStatusApplied,
|
|
||||||
Self::Closed => Kind::GitStatusClosed,
|
|
||||||
Self::Draft => Kind::GitStatusDraft,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the string representation of the patch/pr status.
|
|
||||||
pub const fn as_str(&self) -> &'static str {
|
|
||||||
match self {
|
|
||||||
Self::Open => "Open",
|
|
||||||
Self::MergedApplied => "Merged/Applied",
|
|
||||||
Self::Closed => "Closed",
|
|
||||||
Self::Draft => "Draft",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if the status is open.
|
|
||||||
#[inline]
|
|
||||||
pub fn is_open(&self) -> bool {
|
|
||||||
matches!(self, Self::Open)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if the status is merged/applied.
|
|
||||||
#[inline]
|
|
||||||
pub fn is_merged_or_applied(&self) -> bool {
|
|
||||||
matches!(self, Self::MergedApplied)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if the status is closed.
|
|
||||||
#[inline]
|
|
||||||
pub fn is_closed(&self) -> bool {
|
|
||||||
matches!(self, Self::Closed)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if the status is draft
|
|
||||||
#[inline]
|
|
||||||
pub fn is_drafted(&self) -> bool {
|
|
||||||
matches!(self, Self::Draft)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<&PatchPrStatus> for Kind {
|
|
||||||
fn from(status: &PatchPrStatus) -> Self {
|
|
||||||
status.kind()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl fmt::Display for PatchPrStatus {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
||||||
write!(f, "{}", self.as_str())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
impl TryFrom<Kind> for PatchPrStatus {
|
|
||||||
type Error = N34Error;
|
|
||||||
|
|
||||||
fn try_from(kind: Kind) -> Result<Self, Self::Error> {
|
|
||||||
match kind {
|
|
||||||
Kind::GitStatusOpen => Ok(Self::Open),
|
|
||||||
Kind::GitStatusApplied => Ok(Self::MergedApplied),
|
|
||||||
Kind::GitStatusClosed => Ok(Self::Closed),
|
|
||||||
Kind::GitStatusDraft => Ok(Self::Draft),
|
|
||||||
_ => Err(N34Error::InvalidPatchStatus(kind)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GitPatch {
|
impl GitPatch {
|
||||||
/// Returns the patch file name from the subject
|
/// Returns the patch file name from the subject
|
||||||
pub fn filename(&self, parent: impl AsRef<Path>) -> N34Result<PathBuf> {
|
pub fn filename(&self, parent: impl AsRef<Path>) -> N34Result<PathBuf> {
|
||||||
|
|||||||
@@ -16,12 +16,11 @@
|
|||||||
|
|
||||||
use clap::Args;
|
use clap::Args;
|
||||||
|
|
||||||
use super::PatchPrStatus;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,9 +20,8 @@ use nostr::hashes::sha1::Hash as Sha1Hash;
|
|||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
patch::PatchPrStatus,
|
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,9 +19,8 @@ use clap::Args;
|
|||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
patch::PatchPrStatus,
|
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,9 +19,8 @@ use clap::Args;
|
|||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
patch::PatchPrStatus,
|
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,9 +20,8 @@ use nostr::hashes::sha1::Hash as Sha1Hash;
|
|||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
patch::PatchPrStatus,
|
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,9 +19,8 @@ use clap::Args;
|
|||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
CliOptions,
|
CliOptions,
|
||||||
patch::PatchPrStatus,
|
|
||||||
traits::CommandRunner,
|
traits::CommandRunner,
|
||||||
types::{EntityType, NaddrOrSet, NostrEvent},
|
types::{EntityType, NaddrOrSet, NostrEvent, PatchPrStatus},
|
||||||
},
|
},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,11 +28,10 @@ use nostr::{
|
|||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
issue::IssueStatus,
|
issue::IssueStatus,
|
||||||
patch::PatchPrStatus,
|
|
||||||
types::{NaddrOrSet, NostrEvent},
|
types::{NaddrOrSet, NostrEvent},
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{CliOptions, patch::GitPatch},
|
cli::{CliOptions, patch::GitPatch, types::PatchPrStatus},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
nostr_utils::traits::{GitIssuePrMetadata, GitPatchUtils, ReposUtils},
|
nostr_utils::traits::{GitIssuePrMetadata, GitPatchUtils, ReposUtils},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://gnu.org/licenses/gpl-3.0.html>.
|
// along with this program. If not, see <https://gnu.org/licenses/gpl-3.0.html>.
|
||||||
|
|
||||||
use std::str::FromStr;
|
use std::{fmt, str::FromStr};
|
||||||
|
|
||||||
use nostr::{
|
use nostr::{
|
||||||
event::{EventId, Kind},
|
event::{EventId, Kind},
|
||||||
@@ -259,6 +259,103 @@ impl FromStr for NostrEvent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum PatchPrStatus {
|
||||||
|
/// The patch/pr is currently open
|
||||||
|
Open,
|
||||||
|
/// The patch/pr has been merged/applied
|
||||||
|
MergedApplied,
|
||||||
|
/// The patch/pr has been closed
|
||||||
|
Closed,
|
||||||
|
/// A patch/pr that has been drafted but not yet applied.
|
||||||
|
Draft,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PatchPrStatus {
|
||||||
|
/// Returns all status kinds
|
||||||
|
#[inline]
|
||||||
|
pub const fn all_kinds() -> [Kind; 4] {
|
||||||
|
[
|
||||||
|
Kind::GitStatusOpen,
|
||||||
|
Kind::GitStatusApplied,
|
||||||
|
Kind::GitStatusClosed,
|
||||||
|
Kind::GitStatusDraft,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Maps the patch/pr status to its corresponding Nostr kind.
|
||||||
|
#[inline]
|
||||||
|
pub fn kind(&self) -> Kind {
|
||||||
|
match self {
|
||||||
|
Self::Open => Kind::GitStatusOpen,
|
||||||
|
Self::MergedApplied => Kind::GitStatusApplied,
|
||||||
|
Self::Closed => Kind::GitStatusClosed,
|
||||||
|
Self::Draft => Kind::GitStatusDraft,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the string representation of the patch/pr status.
|
||||||
|
pub const fn as_str(&self) -> &'static str {
|
||||||
|
match self {
|
||||||
|
Self::Open => "Open",
|
||||||
|
Self::MergedApplied => "Merged/Applied",
|
||||||
|
Self::Closed => "Closed",
|
||||||
|
Self::Draft => "Draft",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the status is open.
|
||||||
|
#[inline]
|
||||||
|
pub fn is_open(&self) -> bool {
|
||||||
|
matches!(self, Self::Open)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the status is merged/applied.
|
||||||
|
#[inline]
|
||||||
|
pub fn is_merged_or_applied(&self) -> bool {
|
||||||
|
matches!(self, Self::MergedApplied)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the status is closed.
|
||||||
|
#[inline]
|
||||||
|
pub fn is_closed(&self) -> bool {
|
||||||
|
matches!(self, Self::Closed)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the status is draft
|
||||||
|
#[inline]
|
||||||
|
pub fn is_drafted(&self) -> bool {
|
||||||
|
matches!(self, Self::Draft)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&PatchPrStatus> for Kind {
|
||||||
|
fn from(status: &PatchPrStatus) -> Self {
|
||||||
|
status.kind()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for PatchPrStatus {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
write!(f, "{}", self.as_str())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl TryFrom<Kind> for PatchPrStatus {
|
||||||
|
type Error = N34Error;
|
||||||
|
|
||||||
|
fn try_from(kind: Kind) -> Result<Self, Self::Error> {
|
||||||
|
match kind {
|
||||||
|
Kind::GitStatusOpen => Ok(Self::Open),
|
||||||
|
Kind::GitStatusApplied => Ok(Self::MergedApplied),
|
||||||
|
Kind::GitStatusClosed => Ok(Self::Closed),
|
||||||
|
Kind::GitStatusDraft => Ok(Self::Draft),
|
||||||
|
_ => Err(N34Error::InvalidPatchStatus(kind)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn parse_nip5_repo(nip5: &str, repo_id: &str) -> Result<NaddrOrSet, String> {
|
fn parse_nip5_repo(nip5: &str, repo_id: &str) -> Result<NaddrOrSet, String> {
|
||||||
let (username, domain) = nip5.split_once("@").unwrap_or(("_", nip5));
|
let (username, domain) = nip5.split_once("@").unwrap_or(("_", nip5));
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use nostr_sdk::{Client, ClientOptions};
|
|||||||
use traits::TokenUtils;
|
use traits::TokenUtils;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{CliOptions, issue::IssueStatus, patch::PatchPrStatus},
|
cli::{CliOptions, issue::IssueStatus, types::PatchPrStatus},
|
||||||
error::{N34Error, N34Result},
|
error::{N34Error, N34Result},
|
||||||
nostr_utils::traits::KindExt,
|
nostr_utils::traits::KindExt,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user