1#![deny(missing_docs)]
2#[cfg(feature = "linebased")]
31mod lex;
32#[cfg(feature = "linebased")]
33pub mod linebased;
35
36#[cfg(all(feature = "deb822", feature = "linebased"))]
37mod convert;
38#[cfg(feature = "deb822")]
39pub mod deb822;
40#[cfg(all(feature = "discover", any(feature = "linebased", feature = "deb822")))]
41pub mod discover;
42pub mod mangle;
43#[cfg(feature = "pgp")]
44pub mod pgp;
45pub mod release;
46pub mod search;
47
48pub const DEFAULT_VERSION: u32 = 1;
51
52#[cfg(any(feature = "linebased", feature = "deb822"))]
53pub mod parse;
54mod subst;
55mod types;
56pub const DEFAULT_USER_AGENT: &str = concat!("debian-watch-rs/", env!("CARGO_PKG_VERSION"));
58
59pub use release::Release;
60pub use types::*;
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
65#[allow(non_camel_case_types, missing_docs, clippy::upper_case_acronyms)]
66#[repr(u16)]
67pub(crate) enum SyntaxKind {
68 KEY = 0,
69 VALUE,
70 EQUALS,
71 QUOTE,
72 COMMA,
73 CONTINUATION,
74 NEWLINE,
75 WHITESPACE, COMMENT, ERROR, ROOT, VERSION, ENTRY, OPTS_LIST, OPTION, OPTION_SEPARATOR, URL, MATCHING_PATTERN, VERSION_POLICY, SCRIPT, }
91
92impl From<SyntaxKind> for rowan::SyntaxKind {
94 fn from(kind: SyntaxKind) -> Self {
95 Self(kind as u16)
96 }
97}
98
99#[cfg(all(feature = "deb822", feature = "linebased"))]
104pub use crate::convert::{convert_to_v5, ConversionError};
105
106#[cfg(all(test, feature = "linebased"))]
107mod tests {
108 use crate::linebased::WatchFile;
109
110 #[test]
111 fn test_create_watchfile() {
112 let wf = WatchFile::new(None);
113 assert_eq!(wf.version(), super::DEFAULT_VERSION);
114
115 assert_eq!("", wf.to_string());
116
117 let wf = WatchFile::new(Some(4));
118 assert_eq!(wf.version(), 4);
119
120 assert_eq!("version=4\n", wf.to_string());
121 }
122
123 #[test]
124 fn test_set_version() {
125 let mut wf = WatchFile::new(Some(4));
126 assert_eq!(wf.version(), 4);
127
128 wf.set_version(5);
129 assert_eq!(wf.version(), 5);
130 assert_eq!("version=5\n", wf.to_string());
131
132 let mut wf = WatchFile::new(None);
134 assert_eq!(wf.version(), super::DEFAULT_VERSION);
135
136 wf.set_version(4);
137 assert_eq!(wf.version(), 4);
138 assert_eq!("version=4\n", wf.to_string());
139 }
140
141 #[test]
142 fn test_set_version_on_parsed() {
143 let mut wf: WatchFile = "version=4\n".parse().unwrap();
145 assert_eq!(wf.version(), 4);
146
147 wf.set_version(5);
148 assert_eq!(wf.version(), 5);
149 assert_eq!("version=5\n", wf.to_string());
150
151 let mut wf: WatchFile = "".parse().unwrap();
153 assert_eq!(wf.version(), super::DEFAULT_VERSION);
154
155 wf.set_version(4);
156 assert_eq!(wf.version(), 4);
157 assert_eq!("version=4\n", wf.to_string());
158 }
159}