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::WatchFile;
91
92#[cfg(test)]
93mod tests {
94 #[test]
95 fn test_create_watchfile() {
96 let wf = super::WatchFile::new(None);
97 assert_eq!(wf.version(), super::DEFAULT_VERSION);
98
99 assert_eq!("", wf.to_string());
100
101 let wf = super::WatchFile::new(Some(4));
102 assert_eq!(wf.version(), 4);
103
104 assert_eq!("version=4\n", wf.to_string());
105 }
106
107 #[test]
108 fn test_set_version() {
109 let mut wf = super::WatchFile::new(Some(4));
110 assert_eq!(wf.version(), 4);
111
112 wf.set_version(5);
113 assert_eq!(wf.version(), 5);
114 assert_eq!("version=5\n", wf.to_string());
115
116 let mut wf = super::WatchFile::new(None);
118 assert_eq!(wf.version(), super::DEFAULT_VERSION);
119
120 wf.set_version(4);
121 assert_eq!(wf.version(), 4);
122 assert_eq!("version=4\n", wf.to_string());
123 }
124
125 #[test]
126 fn test_set_version_on_parsed() {
127 let mut wf: super::WatchFile = "version=4\n".parse().unwrap();
129 assert_eq!(wf.version(), 4);
130
131 wf.set_version(5);
132 assert_eq!(wf.version(), 5);
133 assert_eq!("version=5\n", wf.to_string());
134
135 let mut wf: super::WatchFile = "".parse().unwrap();
137 assert_eq!(wf.version(), super::DEFAULT_VERSION);
138
139 wf.set_version(4);
140 assert_eq!(wf.version(), 4);
141 assert_eq!("version=4\n", wf.to_string());
142 }
143}