This crate was made obselete by new standard library structs such as LazyLock
, which were introduced in 1.80
SCUBUHIAJXL432QBYNOGDYX2THRCZY3LPY3T3IZG7BYE52ERGFUQC
4RQHY7LHPHKUWAUQEXFRHKK37RAEFR3RC2QOSUTFTGZRFVWJIVXQC
DGHQ46S3S2RQ27CXF4OES5GDXUI63VTSYYQFLXHG7PRKSVWB3SZAC
OGJFEWHUMFIZYBS456FPNUN3KEUDZXIJNFGPEMJGQDC7INZMHQZQC
N26HD5PFUNVDSEXAQVOTMSMNPWFHQSZ5PHMGEF2ACC23OWFHTGQQC
UDHP4ZVBQZT2VBURB2MDCU2IZDNMCAFSIUKWRBDQ5BWMFKSN2LYQC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
Q45QHPO4HDTEZF2W4UDZSYYQ46BPEIWSW4GJILZR5HTJNLKXJABQC
L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC
KLBWKCUZF3ATGINZCGJL5U7MGD7EBJYDORLWDUDMNWMSN2COJ2ZQC
A3RM526Y7LUXNYW4TL56YKQ5GVOK2R5D7JJVTSQ6TT5MEXIR6YAAC
KTTKF3RWYAK2YSH2DYYW5QVG4KSNGWUBJBFHKE24OJ7LFCBF5FEAC
5XMUEZMZXQ4T4HGZAGBZWT5YKEXOA7IWLZBSREWBHXLMGHXOFXZAC
5QTMRUXNE2XNJCMLN6MQN24UEZ55EFC3LIR4PO6OPNTT5KEL7WXQC
4RV7T4SRYIQLBW3EZFWBO5G65QAVG2GHPI4KMDDZERCX65KQWSPQC
MU5GSJAW65PEG3BRYUKZ7O37BPHW3MOX3S5E2RFOXKGUOJEEDQ5AC
IVLLXQ5ZWZDKHO4TNQG3TPXN34H6Y2WXPAGSO4PWCYNSKUZWOEJQC
HJVWPKWVSL5ZXALZOT4BOQUWWNGH62OU6YLSZQQEIOB37QQGHK6AC
RM225IDQR36MNBMN7OT2R562M4FUD6L34RY7A3WDBBETZIIDKZ5AC
2MKP7CB7FKQUNEAV3YPEJ7FNFW75VGGQIYPQRI54BFXGCUOQESPAC
OYN2YVPAN6L3X6HZXJI6B2GYGL2W5AXRK6CVDJRWALS5OENNB5UAC
JTELS6L36GEOOST2SUNCJIK5TBJDNLQWCF4IRF7QSHMMVCXSSESAC
ABPFWGKH24JK7TLAGDVENTA5VSVRANPBVRD555WCQMNW56BL7SZQC
PIQCNEEBNHZDYOU2O7667XBB6D3V2MUALRRVJX6VO5BGYR7LTYRQC
QQS7LII4MKQWKPYJXSZVOKLZ2ZSWQOMHHE6T22DJ4CL5I6YRGJLQC
DO2Y5TY5JQISUHCVNPI2FXO7WWZVJQ3LGPWF4DNADMGZRIO6PT2QC
TA5VXGFGDBLENEH4SRHD7FOUXPXRKIHN7DIBUREW3DZHMDVJNNCAC
L5IUD2DSLEK4SYPF6PLNO7C3TZEFYFHNM42HGEHY5VWW5MHD7CXAC
FXEDPLRI7PXLDXV634ZA6D5Q3ZWG3ESTKJTMRPJ4MAHI7PKU3M6AC
YN63NUZO4LVJ7XPMURDULTXBVJKW5MVCTZ24R7Z52QMHO3HPDUVQC
XR7MNOMU5PMOOEY2EPPUABZ7NOP432RDCWUET23ONPXTT3JQIFIAC
2VXTRPO4OML5A2RPI7SAEV5SJNOFIVS4TMYYG6TUUS5EXFMAPRJAC
EJ7TFFOWLM5EXYX57NJZZX3NLPBLLMRX7CGJYC75DJZ5LYXOQPJAC
lazy_static! {
static ref ADDRESS: Regex = Regex::new(
r#"(ssh://)?((?P<user>[^@]+)@)?((?P<host>(\[([^\]]+)\])|([^:/]+)))((:(?P<port>\d+)(?P<path0>(/.+)))|(:(?P<path1>.+))|(?P<path2>(/.+)))"#
)
.unwrap();
static ADDRESS: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(
r#"(ssh://)?((?P<user>[^@]+)@)?((?P<host>(\[([^\]]+)\])|([^:/]+)))((:(?P<port>\d+)(?P<path0>(/.+)))|(:(?P<path1>.+))|(?P<path2>(/.+)))"#
)
.unwrap()
});
static ref ADDRESS_NOPATH: Regex = Regex::new(
r#"(ssh://)?((?P<user>[^@]+)@)?((?P<host>(\[([^\]]+)\])|([^:/]+)))(:(?P<port>\d+))?"#
static ADDRESS_NOPATH: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(
r#"(ssh://)?((?P<user>[^@]+)@)?((?P<host>(\[([^\]]+)\])|([^:/]+)))(:(?P<port>\d+))?"#,
use libpijul::pristine::{ChangePosition, Position};
use regex::Regex;
lazy_static! {
static ref CHANGELIST_LINE: Regex = Regex::new(
r#"(?P<num>[0-9]+)\.(?P<hash>[A-Za-z0-9]+)\.(?P<merkle>[A-Za-z0-9]+)(?P<tag>\.)?"#
)
.unwrap();
static ref PATHS_LINE: Regex =
Regex::new(r#"(?P<hash>[A-Za-z0-9]+)\.(?P<num>[0-9]+)"#).unwrap();
}
static CHANGELIST_LINE: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(r#"(?P<num>[0-9]+)\.(?P<hash>[A-Za-z0-9]+)\.(?P<merkle>[A-Za-z0-9]+)(?P<tag>\.)?"#)
.unwrap()
});
static PATHS_LINE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"(?P<hash>[A-Za-z0-9]+)\.(?P<num>[0-9]+)"#).unwrap());
if let Ok((config, _)) = config::Global::load() {
let color_choice = config.colors.unwrap_or_default();
static THEME: LazyLock<Box<dyn theme::Theme + Send + Sync>> = LazyLock::new(|| {
if let Ok((config, _)) = config::Global::load() {
let color_choice = config.colors.unwrap_or_default();
match color_choice {
Choice::Auto | Choice::Always => Box::<theme::ColorfulTheme>::default(),
Choice::Never => Box::new(theme::SimpleTheme),
}
} else {
Box::<theme::ColorfulTheme>::default()
match color_choice {
Choice::Auto | Choice::Always => Box::<theme::ColorfulTheme>::default(),
Choice::Never => Box::new(theme::SimpleTheme),
lazy_static! {
static ref STATE: Regex = Regex::new(r#"state\s+(\S+)(\s+([0-9]+)?)\s+"#).unwrap();
static ref ID: Regex = Regex::new(r#"id\s+(\S+)\s+"#).unwrap();
static ref IDENTITIES: Regex = Regex::new(r#"identities(\s+([0-9]+))?\s+"#).unwrap();
static ref CHANGELIST: Regex = Regex::new(r#"changelist\s+(\S+)\s+([0-9]+)(.*)\s+"#).unwrap();
static ref CHANGELIST_PATHS: Regex = Regex::new(r#""(((\\")|[^"])+)""#).unwrap();
static ref CHANGE: Regex = Regex::new(r#"((change)|(partial))\s+([^ ]*)\s+"#).unwrap();
static ref TAG: Regex = Regex::new(r#"^tag\s+(\S+)\s+"#).unwrap();
static ref TAGUP: Regex = Regex::new(r#"^tagup\s+(\S+)\s+(\S+)\s+([0-9]+)\s+"#).unwrap();
static ref APPLY: Regex = Regex::new(r#"apply\s+(\S+)\s+([^ ]*) ([0-9]+)\s+"#).unwrap();
static ref CHANNEL: Regex = Regex::new(r#"channel\s+(\S+)\s+"#).unwrap();
static ref ARCHIVE: Regex =
Regex::new(r#"archive\s+(\S+)\s*(( ([^:]+))*)( :(.*))?\n"#).unwrap();
}
static APPLY: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"apply\s+(\S+)\s+([^ ]*) ([0-9]+)\s+"#).unwrap());
static ARCHIVE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"archive\s+(\S+)\s*(( ([^:]+))*)( :(.*))?\n"#).unwrap());
static CHANGE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"((change)|(partial))\s+([^ ]*)\s+"#).unwrap());
static CHANGELIST_PATHS: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#""(((\\")|[^"])+)""#).unwrap());
static CHANGELIST: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"changelist\s+(\S+)\s+([0-9]+)(.*)\s+"#).unwrap());
static CHANNEL: LazyLock<Regex> = LazyLock::new(|| Regex::new(r#"channel\s+(\S+)\s+"#).unwrap());
static ID: LazyLock<Regex> = LazyLock::new(|| Regex::new(r#"id\s+(\S+)\s+"#).unwrap());
static IDENTITIES: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"identities(\s+([0-9]+))?\s+"#).unwrap());
static STATE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"state\s+(\S+)(\s+([0-9]+)?)\s+"#).unwrap());
static TAG: LazyLock<Regex> = LazyLock::new(|| Regex::new(r#"^tag\s+(\S+)\s+"#).unwrap());
static TAGUP: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"^tagup\s+(\S+)\s+(\S+)\s+([0-9]+)\s+"#).unwrap());
lazy_static! {
pub(crate) static ref BASE32: data_encoding::Encoding = {
let mut spec = data_encoding::Specification::new();
spec.symbols.push_str("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");
spec.translate.from = "abcdefghijklmnopqrstuvwxyz".to_string();
spec.translate.to = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string();
spec.encoding().unwrap()
};
}
pub(crate) static BASE32: LazyLock<data_encoding::Encoding> = LazyLock::new(|| {
let mut spec = data_encoding::Specification::new();
spec.symbols.push_str("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");
spec.translate.from = "abcdefghijklmnopqrstuvwxyz".to_string();
spec.translate.to = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string();
spec.encoding().unwrap()
});