@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct CloseArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The open issue id to close it
|
||||
issue_id: NostrEvent,
|
||||
|
||||
@@ -25,11 +25,13 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ListArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET")]
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", value_delimiter = ',')]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// Maximum number of issues to list
|
||||
#[arg(long, default_value = "15")]
|
||||
|
||||
@@ -43,11 +43,17 @@ use crate::{
|
||||
)
|
||||
)]
|
||||
pub struct NewArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// Markdown content for the issue. Cannot be used together with the
|
||||
/// `--editor` flag.
|
||||
@@ -115,10 +121,7 @@ impl CommandRunner for NewArgs {
|
||||
relays,
|
||||
naddrs.extract_relays(),
|
||||
utils::add_write_relays(relays_list.as_ref()),
|
||||
client
|
||||
.fetch_repos(&naddrs.into_coordinates())
|
||||
.await?
|
||||
.extract_relays(),
|
||||
repos.extract_relays(),
|
||||
// Include read relays for each maintainer (if found)
|
||||
client.read_relays_from_users(&maintainers).await,
|
||||
content_details
|
||||
|
||||
@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ReopenArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The closed issue id to reopen it
|
||||
issue_id: NostrEvent,
|
||||
|
||||
@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ResolveArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The issue id to resolve it
|
||||
issue_id: NostrEvent,
|
||||
|
||||
@@ -33,11 +33,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ViewArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The issue id to view it
|
||||
issue_id: NostrEvent,
|
||||
|
||||
@@ -73,8 +73,8 @@ pub struct CliOptions {
|
||||
#[arg(short = '7', long, group = "signer")]
|
||||
pub nip07: bool,
|
||||
/// Fallbacks relay to write and read from it. Multiple relays can be
|
||||
/// passed.
|
||||
#[arg(short, long)]
|
||||
/// passed, separated by commas.
|
||||
#[arg(short, long, value_delimiter = ',')]
|
||||
pub relays: Vec<RelayOrSet>,
|
||||
/// Proof of Work difficulty when creatring events
|
||||
#[arg(long, value_name = "DIFFICULTY")]
|
||||
|
||||
@@ -29,11 +29,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ApplyArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The open patch id to apply it. Must be orignal root patch or
|
||||
/// revision root
|
||||
|
||||
@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct CloseArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The open/drafted patch id to close it. Must be orignal root patch
|
||||
patch_id: NostrEvent,
|
||||
|
||||
@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct DraftArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The open patch id to draft it. Must be orignal root patch
|
||||
patch_id: NostrEvent,
|
||||
|
||||
@@ -43,11 +43,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct FetchArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// Output directory for the patches. Default to the current directory
|
||||
#[arg(short, long, value_name = "PATH")]
|
||||
|
||||
@@ -25,11 +25,13 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ListArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET")]
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", value_delimiter = ',')]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// Maximum number of patches to list
|
||||
#[arg(long, default_value = "15")]
|
||||
|
||||
@@ -29,11 +29,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct MergeArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The open patch id to merge it. Must be orignal root patch or
|
||||
/// revision root
|
||||
|
||||
@@ -28,11 +28,17 @@ use crate::{
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub struct ReopenArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The closed/drafted patch id to reopen it. Must be orignal root patch
|
||||
patch_id: NostrEvent,
|
||||
|
||||
@@ -47,11 +47,17 @@ const PATCH_ALT_PREFIX: &str = "git patch: ";
|
||||
|
||||
#[derive(Args, Debug)]
|
||||
pub struct SendArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// List of patch files to send (space separated).
|
||||
///
|
||||
|
||||
@@ -62,11 +62,17 @@ pub struct ReplyArgs {
|
||||
/// Quote the replied-to event in the editor
|
||||
#[arg(long)]
|
||||
quote_to: bool,
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// The comment (cannot be used with --editor)
|
||||
#[arg(short, long)]
|
||||
|
||||
@@ -48,11 +48,17 @@ const HEAD_TAG_KIND: TagKind = TagKind::Custom(Cow::Borrowed("HEAD"));
|
||||
/// Arguments for the `repo state` command
|
||||
#[derive(Args, Debug)]
|
||||
pub struct StateArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
/// Tags to announce a state for, in the format `<tag-name>=<commit-id>`.
|
||||
/// Separated by comma.
|
||||
|
||||
@@ -33,11 +33,13 @@ use crate::{
|
||||
/// Arguments for the `repo view` command
|
||||
#[derive(Args, Debug)]
|
||||
pub struct ViewArgs {
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
///
|
||||
/// If omitted, looks for a `nostr-address` file.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET")]
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", value_delimiter = ',')]
|
||||
naddrs: Option<Vec<NaddrOrSet>>,
|
||||
}
|
||||
|
||||
|
||||
@@ -31,12 +31,18 @@ pub struct NewArgs {
|
||||
/// Unique name for the set
|
||||
name: String,
|
||||
/// Optional relay to add it to the set, either as URL or set name to
|
||||
/// extract its relays. [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"))]
|
||||
/// extract its relays, separated by commas. [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"), value_delimiter = ',')]
|
||||
relays: Vec<RelayOrSet>,
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Vec<NaddrOrSet>,
|
||||
}
|
||||
|
||||
|
||||
@@ -30,13 +30,19 @@ pub struct RemoveArgs {
|
||||
/// Set name to delete
|
||||
name: String,
|
||||
/// Specific relay to remove it from the set, either as URL or set name to
|
||||
/// extract its relays. [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"))]
|
||||
/// extract its relays, separated by commas. [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"), value_delimiter = ',')]
|
||||
relays: Vec<RelayOrSet>,
|
||||
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Vec<NaddrOrSet>,
|
||||
}
|
||||
|
||||
|
||||
@@ -31,13 +31,19 @@ use crate::{
|
||||
pub struct UpdateArgs {
|
||||
/// Name of the set to update
|
||||
name: String,
|
||||
/// Add relay to the set, either as URL or set name to extract its relays.
|
||||
/// [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"))]
|
||||
/// Add relay to the set, either as URL or set name to extract its relays,
|
||||
/// separated by commas. [aliases: `--sr`]
|
||||
#[arg(long = "set-relay", alias("sr"), value_delimiter = ',')]
|
||||
relays: Vec<RelayOrSet>,
|
||||
/// Repository address in `naddr` format (`naddr1...`), NIP-05 format
|
||||
/// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.
|
||||
#[arg(value_name = "NADDR-NIP05-OR-SET", long = "repo")]
|
||||
/// Repository addresses
|
||||
///
|
||||
/// In `naddr` format (`naddr1...`), NIP-05 format (`4rs.nl/n34` or
|
||||
/// `_@4rs.nl/n34`), or a set name like `kernel`, separated by commas.
|
||||
#[arg(
|
||||
value_name = "NADDR-NIP05-OR-SET",
|
||||
long = "repo",
|
||||
value_delimiter = ','
|
||||
)]
|
||||
naddrs: Vec<NaddrOrSet>,
|
||||
/// Replace existing relays/repositories instead of adding to them
|
||||
#[arg(long = "override")]
|
||||
|
||||
Reference in New Issue
Block a user