1#![deny(missing_docs)]
2mod lex;
29mod parse;
30
31#[cfg(feature = "deb822")]
32pub mod deb822;
33pub mod mangle;
34#[cfg(feature = "pgp")]
35pub mod pgp;
36pub mod release;
37pub mod search;
38
39pub const DEFAULT_VERSION: u32 = 1;
42
43pub const DEFAULT_USER_AGENT: &str = concat!("debian-watch-rs/", env!("CARGO_PKG_VERSION"));
45
46mod types;
47
48pub use release::Release;
49pub use types::*;
50
51#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
54#[allow(non_camel_case_types, missing_docs, clippy::upper_case_acronyms)]
55#[repr(u16)]
56pub(crate) enum SyntaxKind {
57 KEY = 0,
58 VALUE,
59 EQUALS,
60 QUOTE,
61 COMMA,
62 CONTINUATION,
63 NEWLINE,
64 WHITESPACE, COMMENT, ERROR, ROOT, VERSION, ENTRY, OPTS_LIST, OPTION, OPTION_SEPARATOR, URL, MATCHING_PATTERN, VERSION_POLICY, SCRIPT, }
80
81impl From<SyntaxKind> for rowan::SyntaxKind {
83 fn from(kind: SyntaxKind) -> Self {
84 Self(kind as u16)
85 }
86}
87
88pub use crate::parse::Entry;
89pub use crate::parse::EntryBuilder;
90pub use crate::parse::ParseError;
91pub use crate::parse::WatchFile;
92
93#[cfg(test)]
94mod tests {
95 #[test]
96 fn test_create_watchfile() {
97 let wf = super::WatchFile::new(None);
98 assert_eq!(wf.version(), super::DEFAULT_VERSION);
99
100 assert_eq!("", wf.to_string());
101
102 let wf = super::WatchFile::new(Some(4));
103 assert_eq!(wf.version(), 4);
104
105 assert_eq!("version=4\n", wf.to_string());
106 }
107
108 #[test]
109 fn test_set_version() {
110 let mut wf = super::WatchFile::new(Some(4));
111 assert_eq!(wf.version(), 4);
112
113 wf.set_version(5);
114 assert_eq!(wf.version(), 5);
115 assert_eq!("version=5\n", wf.to_string());
116
117 let mut wf = super::WatchFile::new(None);
119 assert_eq!(wf.version(), super::DEFAULT_VERSION);
120
121 wf.set_version(4);
122 assert_eq!(wf.version(), 4);
123 assert_eq!("version=4\n", wf.to_string());
124 }
125
126 #[test]
127 fn test_set_version_on_parsed() {
128 let mut wf: super::WatchFile = "version=4\n".parse().unwrap();
130 assert_eq!(wf.version(), 4);
131
132 wf.set_version(5);
133 assert_eq!(wf.version(), 5);
134 assert_eq!("version=5\n", wf.to_string());
135
136 let mut wf: super::WatchFile = "".parse().unwrap();
138 assert_eq!(wf.version(), super::DEFAULT_VERSION);
139
140 wf.set_version(4);
141 assert_eq!(wf.version(), 4);
142 assert_eq!("version=4\n", wf.to_string());
143 }
144}