Merge branch 'next'
This commit is contained in:
		
						commit
						2f7a2dfd62
					
				
					 21 changed files with 278 additions and 69 deletions
				
			
		|  | @ -4,6 +4,9 @@ Contributions are accepted in any form (issues, documentation, feature requests, | |||
| 
 | ||||
| All creatures welcome. | ||||
| 
 | ||||
| If you have access, please contribute on the [CCCB Forgejo](https://git.berlin.ccc.de/servicepoint/servicepoint). | ||||
| Contributions on GitHub will be copied over and merged there. | ||||
| 
 | ||||
| ## Pull requests | ||||
| 
 | ||||
| Feel free to create a PR, even if your change is not done yet. | ||||
|  |  | |||
							
								
								
									
										6
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -931,7 +931,7 @@ dependencies = [ | |||
| 
 | ||||
| [[package]] | ||||
| name = "servicepoint" | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| dependencies = [ | ||||
|  "bitvec", | ||||
|  "bzip2", | ||||
|  | @ -948,7 +948,7 @@ dependencies = [ | |||
| 
 | ||||
| [[package]] | ||||
| name = "servicepoint_binding_c" | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| dependencies = [ | ||||
|  "cbindgen", | ||||
|  "servicepoint", | ||||
|  | @ -956,7 +956,7 @@ dependencies = [ | |||
| 
 | ||||
| [[package]] | ||||
| name = "servicepoint_binding_uniffi" | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| dependencies = [ | ||||
|  "servicepoint", | ||||
|  "thiserror 2.0.11", | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ members = [ | |||
| ] | ||||
| 
 | ||||
| [workspace.package] | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| 
 | ||||
| [workspace.lints.rust] | ||||
| missing-docs = "warn" | ||||
|  |  | |||
							
								
								
									
										10
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
										
									
									
									
								
							|  | @ -10,7 +10,8 @@ Display" or "Airport Display". | |||
| This repository contains a library for parsing, encoding and sending packets to this display via UDP in multiple | ||||
| programming languages. | ||||
| 
 | ||||
| This repository will move to [git.berlin.ccc.de/servicepoint/servicepoint](https://git.berlin.ccc.de/servicepoint/servicepoint) soon. | ||||
| This project moved to [git.berlin.ccc.de/servicepoint/servicepoint](https://git.berlin.ccc.de/servicepoint/servicepoint).  | ||||
| The [GitHub repository](https://github.com/cccb/servicepoint) remains available as a mirror. | ||||
| 
 | ||||
| Take a look at the contained crates for language specific information: | ||||
| 
 | ||||
|  | @ -22,7 +23,7 @@ Take a look at the contained crates for language specific information: | |||
| 
 | ||||
| ## Projects using the library | ||||
| 
 | ||||
| - screen simulator (rust): [servicepoint-simulator](https://github.com/kaesaecracker/servicepoint-simulator) | ||||
| - screen simulator (rust): [servicepoint-simulator](https://git.berlin.ccc.de/servicepoint/servicepoint-simulator) | ||||
| - A bunch of projects (C): [arfst23/ServicePoint](https://github.com/arfst23/ServicePoint), including | ||||
|     - a CLI tool to display image files on the display or use the display as a TTY | ||||
|     - a BSD games robots clone | ||||
|  | @ -31,9 +32,14 @@ Take a look at the contained crates for language specific information: | |||
| - tanks game (C#): [servicepoint-tanks](https://github.com/kaesaecracker/cccb-tanks-cs) | ||||
| - cellular automata slideshow (rust): [servicepoint-life](https://github.com/kaesaecracker/servicepoint-life) | ||||
| - partial typescript implementation inspired by this library and browser stream: [cccb-servicepoint-browser](https://github.com/SamuelScheit/cccb-servicepoint-browser) | ||||
| - a CLI: [servicepoint-cli](https://git.berlin.ccc.de/servicepoint/servicepoint-cli) | ||||
| 
 | ||||
| To add yourself to the list, open a pull request. | ||||
| 
 | ||||
| You can also check out [awesome-servicepoint](https://github.com/stars/kaesaecracker/lists/awesome-servicepoint) for a bigger collection of projects, including some not related to this library. | ||||
| 
 | ||||
| If you have access, there is even more software linked in [the wiki](https://wiki.berlin.ccc.de/LED-Riesendisplay). | ||||
| 
 | ||||
| ## Contributing | ||||
| 
 | ||||
| See [CONTRIBUTING.md](CONTRIBUTING.md). | ||||
|  |  | |||
|  | @ -6,8 +6,9 @@ edition = "2021" | |||
| license = "GPL-3.0-or-later" | ||||
| description = "A rust library for the CCCB Service Point Display." | ||||
| homepage = "https://docs.rs/crate/servicepoint" | ||||
| repository = "https://github.com/cccb/servicepoint" | ||||
| repository = "https://git.berlin.ccc.de/servicepoint/servicepoint" | ||||
| readme = "README.md" | ||||
| keywords = ["cccb", "cccb-servicepoint"] | ||||
| 
 | ||||
| [lib] | ||||
| crate-type = ["rlib"] | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ cargo add servicepoint | |||
| or | ||||
| ```toml | ||||
| [dependencies] | ||||
| servicepoint = "0.13.0" | ||||
| servicepoint = "0.13.1" | ||||
| ``` | ||||
| 
 | ||||
| ## Examples | ||||
|  | @ -64,4 +64,4 @@ You can choose to (not) include them by toggling the related features. | |||
| 
 | ||||
| ## Everything else | ||||
| 
 | ||||
| Look at the main project [README](https://github.com/cccb/servicepoint/blob/main/README.md) for further information. | ||||
| Look at the main project [README](https://git.berlin.ccc.de/servicepoint/servicepoint/src/branch/main/README.md) for further information. | ||||
|  |  | |||
|  | @ -72,8 +72,8 @@ impl Bitmap { | |||
|     /// - when the width is not dividable by 8
 | ||||
|     #[must_use] | ||||
|     pub fn load(width: usize, height: usize, data: &[u8]) -> Self { | ||||
|         assert_eq!(width % 8, 0); | ||||
|         assert_eq!(data.len(), height * width / 8); | ||||
|         assert_eq!(width % 8, 0, "width must be a multiple of 8, but is {width}"); | ||||
|         assert_eq!(data.len(), height * width / 8, "data length must match dimensions, with 8 pixels per byte."); | ||||
|         Self { | ||||
|             width, | ||||
|             height, | ||||
|  | @ -81,6 +81,23 @@ impl Bitmap { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /// Creates a [Bitmap] with the specified width from the provided [BitVec] without copying it.
 | ||||
|     ///
 | ||||
|     /// returns: [Bitmap] that contains the provided data.
 | ||||
|     ///
 | ||||
|     /// # Panics
 | ||||
|     ///
 | ||||
|     /// - when the bitvec size is not dividable by the provided width
 | ||||
|     /// - when the width is not dividable by 8
 | ||||
|     #[must_use] | ||||
|     pub fn from_bitvec(width: usize, bit_vec: BitVec) -> Self { | ||||
|         assert_eq!(width % 8, 0, "width must be a multiple of 8, but is {width}"); | ||||
|         let len = bit_vec.len(); | ||||
|         let height = len / width; | ||||
|         assert_eq!(0, len % width, "dimension mismatch - len {len} is not dividable by {width}"); | ||||
|         Self { width, height, bit_vec } | ||||
|     } | ||||
| 
 | ||||
|     /// Iterate over all cells in [Bitmap].
 | ||||
|     ///
 | ||||
|     /// Order is equivalent to the following loop:
 | ||||
|  |  | |||
|  | @ -99,4 +99,11 @@ mod tests { | |||
|         assert_eq!(Brightness::MAX, Brightness::saturating_from(100)); | ||||
|         assert_eq!(Brightness(5), Brightness::saturating_from(5)); | ||||
|     } | ||||
|     
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "rand")] | ||||
|     fn test() { | ||||
|         let mut rng = rand::thread_rng(); | ||||
|         assert_ne!(rng.gen::<Brightness>(), rng.gen()); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ impl BrightnessGrid { | |||
| } | ||||
| 
 | ||||
| impl From<BrightnessGrid> for Vec<u8> { | ||||
|     fn from(value: ValueGrid<Brightness>) -> Self { | ||||
|     fn from(value: BrightnessGrid) -> Self { | ||||
|         value | ||||
|             .iter() | ||||
|             .map(|brightness| (*brightness).into()) | ||||
|  | @ -35,7 +35,7 @@ impl From<BrightnessGrid> for Vec<u8> { | |||
| } | ||||
| 
 | ||||
| impl From<&BrightnessGrid> for ByteGrid { | ||||
|     fn from(value: &ValueGrid<Brightness>) -> Self { | ||||
|     fn from(value: &BrightnessGrid) -> Self { | ||||
|         let u8s = value | ||||
|             .iter() | ||||
|             .map(|brightness| (*brightness).into()) | ||||
|  |  | |||
|  | @ -1,6 +1,5 @@ | |||
| use crate::command_code::CommandCode; | ||||
| use crate::compression::into_decompressed; | ||||
| use crate::value_grid::ValueGrid; | ||||
| use crate::*; | ||||
| 
 | ||||
| /// Type alias for documenting the meaning of the u16 in enum values
 | ||||
|  | @ -441,7 +440,7 @@ impl Command { | |||
|             payload, | ||||
|         } = packet; | ||||
| 
 | ||||
|         let grid = ValueGrid::load(*width as usize, *height as usize, payload); | ||||
|         let grid = ByteGrid::load(*width as usize, *height as usize, payload); | ||||
|         let grid = match BrightnessGrid::try_from(grid) { | ||||
|             Ok(grid) => grid, | ||||
|             Err(val) => return Err(TryFromPacketError::InvalidBrightness(val)), | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| /// The u16 command codes used for the [Command]s.
 | ||||
| #[repr(u16)] | ||||
| #[derive(Debug, Copy, Clone)] | ||||
| #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] | ||||
| pub(crate) enum CommandCode { | ||||
|     Clear = 0x0002, | ||||
|     Cp437Data = 0x0003, | ||||
|  | @ -101,3 +101,114 @@ impl TryFrom<u16> for CommandCode { | |||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use super::*; | ||||
|     #[test] | ||||
|     fn clear() { | ||||
|         assert_eq!(CommandCode::try_from(0x0002), Ok(CommandCode::Clear)); | ||||
|         assert_eq!(u16::from(CommandCode::Clear), 0x0002); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn cp437_data() { | ||||
|         assert_eq!(CommandCode::try_from(0x0003), Ok(CommandCode::Cp437Data)); | ||||
|         assert_eq!(u16::from(CommandCode::Cp437Data), 0x0003); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn char_brightness() { | ||||
|         assert_eq!(CommandCode::try_from(0x0005), Ok(CommandCode::CharBrightness)); | ||||
|         assert_eq!(u16::from(CommandCode::CharBrightness), 0x0005); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn brightness() { | ||||
|         assert_eq!(CommandCode::try_from(0x0007), Ok(CommandCode::Brightness)); | ||||
|         assert_eq!(u16::from(CommandCode::Brightness), 0x0007); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn hard_reset() { | ||||
|         assert_eq!(CommandCode::try_from(0x000b), Ok(CommandCode::HardReset)); | ||||
|         assert_eq!(u16::from(CommandCode::HardReset), 0x000b); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn fade_out() { | ||||
|         assert_eq!(CommandCode::try_from(0x000d), Ok(CommandCode::FadeOut)); | ||||
|         assert_eq!(u16::from(CommandCode::FadeOut), 0x000d); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[allow(deprecated)] | ||||
|     fn bitmap_legacy() { | ||||
|         assert_eq!(CommandCode::try_from(0x0010), Ok(CommandCode::BitmapLegacy)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLegacy), 0x0010); | ||||
|     } | ||||
|     
 | ||||
|     #[test] | ||||
|     fn linear() { | ||||
|         assert_eq!(CommandCode::try_from(0x0012), Ok(CommandCode::BitmapLinear)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinear), 0x0012); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn linear_and() { | ||||
|         assert_eq!(CommandCode::try_from(0x0014), Ok(CommandCode::BitmapLinearAnd)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearAnd), 0x0014); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn linear_xor() { | ||||
|         assert_eq!(CommandCode::try_from(0x0016), Ok(CommandCode::BitmapLinearXor)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearXor), 0x0016); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_zlib")] | ||||
|     fn bitmap_win_zlib() { | ||||
|         assert_eq!(CommandCode::try_from(0x0017), Ok(CommandCode::BitmapLinearWinZlib)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearWinZlib), 0x0017); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_bzip2")] | ||||
|     fn bitmap_win_bzip2() { | ||||
|         assert_eq!(CommandCode::try_from(0x0018), Ok(CommandCode::BitmapLinearWinBzip2)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearWinBzip2), 0x0018); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_lzma")] | ||||
|     fn bitmap_win_lzma() { | ||||
|         assert_eq!(CommandCode::try_from(0x0019), Ok(CommandCode::BitmapLinearWinLzma)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearWinLzma), 0x0019); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_zstd")] | ||||
|     fn bitmap_win_zstd() { | ||||
|         assert_eq!(CommandCode::try_from(0x001A), Ok(CommandCode::BitmapLinearWinZstd)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearWinZstd), 0x001A); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn bitmap_win_uncompressed() { | ||||
|         assert_eq!(CommandCode::try_from(0x0013), Ok(CommandCode::BitmapLinearWinUncompressed)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearWinUncompressed), 0x0013); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn utf8_data() { | ||||
|         assert_eq!(CommandCode::try_from(0x0020), Ok(CommandCode::Utf8Data)); | ||||
|         assert_eq!(u16::from(CommandCode::Utf8Data), 0x0020); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn linear_or() { | ||||
|         assert_eq!(CommandCode::try_from(0x0015), Ok(CommandCode::BitmapLinearOr)); | ||||
|         assert_eq!(u16::from(CommandCode::BitmapLinearOr), 0x0015); | ||||
|     } | ||||
| } | ||||
|  | @ -65,3 +65,56 @@ impl TryFrom<u16> for CompressionCode { | |||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod test { | ||||
|     use super::*; | ||||
|     #[test] | ||||
|     fn uncompressed() { | ||||
|         assert_eq!( | ||||
|             CompressionCode::try_from(0x0000), | ||||
|             Ok(CompressionCode::Uncompressed) | ||||
|         ); | ||||
|         assert_eq!(u16::from(CompressionCode::Uncompressed), 0x0000); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_zlib")] | ||||
|     fn zlib() { | ||||
|         assert_eq!( | ||||
|             CompressionCode::try_from(0x677a), | ||||
|             Ok(CompressionCode::Zlib) | ||||
|         ); | ||||
|         assert_eq!(u16::from(CompressionCode::Zlib), 0x677a); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_bzip2")] | ||||
|     fn bzip2() { | ||||
|         assert_eq!( | ||||
|             CompressionCode::try_from(0x627a), | ||||
|             Ok(CompressionCode::Bzip2) | ||||
|         ); | ||||
|         assert_eq!(u16::from(CompressionCode::Bzip2), 0x627a); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_lzma")] | ||||
|     fn lzma() { | ||||
|         assert_eq!( | ||||
|             CompressionCode::try_from(0x6c7a), | ||||
|             Ok(CompressionCode::Lzma) | ||||
|         ); | ||||
|         assert_eq!(u16::from(CompressionCode::Lzma), 0x6c7a); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     #[cfg(feature = "compression_zstd")] | ||||
|     fn zstd() { | ||||
|         assert_eq!( | ||||
|             CompressionCode::try_from(0x7a73), | ||||
|             Ok(CompressionCode::Zstd) | ||||
|         ); | ||||
|         assert_eq!(u16::from(CompressionCode::Zstd), 0x7a73); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -79,6 +79,21 @@ impl<T: Value> ValueGrid<T> { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /// Creates a [ValueGrid] with the specified width from the provided data without copying it.
 | ||||
|     ///
 | ||||
|     /// returns: [ValueGrid] that contains the provided data.
 | ||||
|     ///
 | ||||
|     /// # Panics
 | ||||
|     ///
 | ||||
|     /// - when the data size is not dividable by the width.
 | ||||
|     #[must_use] | ||||
|     pub fn from_vec(width: usize, data: Vec<T>) -> Self { | ||||
|         let len = data.len(); | ||||
|         let height = len / width; | ||||
|         assert_eq!(0, len % width, "dimension mismatch - len {len} is not dividable by {width}"); | ||||
|         Self { data, width, height }        
 | ||||
|     } | ||||
| 
 | ||||
|     /// Loads a [ValueGrid] with the specified width from the provided data, wrapping to as many rows as needed.
 | ||||
|     ///
 | ||||
|     /// returns: [ValueGrid] that contains a copy of the provided data or [TryLoadValueGridError].
 | ||||
|  | @ -496,13 +511,18 @@ mod tests { | |||
| 
 | ||||
|     #[test] | ||||
|     fn ref_mut() { | ||||
|         let mut vec = ValueGrid::load(2, 2, &[0, 1, 2, 3]); | ||||
|         let mut vec = ValueGrid::from_vec(3, vec![0, 1, 2, 3,4,5,6,7,8]); | ||||
| 
 | ||||
|         let top_left = vec.get_ref_mut(0, 0); | ||||
|         *top_left += 5; | ||||
|         let somewhere = vec.get_ref_mut(2, 1); | ||||
|         *somewhere = 42; | ||||
| 
 | ||||
|         assert_eq!(None, vec.get_ref_mut_optional(2, 2)); | ||||
|         assert_eq!(None, vec.get_ref_mut_optional(3, 2)); | ||||
|         assert_eq!(None, vec.get_ref_mut_optional(2, 3)); | ||||
|         assert_eq!(Some(&mut 5), vec.get_ref_mut_optional(0, 0)); | ||||
|         assert_eq!(Some(&mut 42), vec.get_ref_mut_optional(2, 1)); | ||||
|         assert_eq!(Some(&mut 8), vec.get_ref_mut_optional(2, 2)); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|  |  | |||
|  | @ -6,9 +6,10 @@ edition = "2021" | |||
| license = "GPL-3.0-or-later" | ||||
| description = "C bindings for the servicepoint crate." | ||||
| homepage = "https://docs.rs/crate/servicepoint_binding_c" | ||||
| repository = "https://github.com/cccb/servicepoint" | ||||
| repository = "https://git.berlin.ccc.de/servicepoint/servicepoint" | ||||
| readme = "README.md" | ||||
| links = "servicepoint" | ||||
| keywords = ["cccb", "cccb-servicepoint", "cbindgen"] | ||||
| 
 | ||||
| [lib] | ||||
| crate-type = ["staticlib", "cdylib", "rlib"] | ||||
|  | @ -17,7 +18,7 @@ crate-type = ["staticlib", "cdylib", "rlib"] | |||
| cbindgen = "0.27.0" | ||||
| 
 | ||||
| [dependencies.servicepoint] | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| path = "../servicepoint" | ||||
| features = ["all_compressions"] | ||||
| 
 | ||||
|  |  | |||
|  | @ -60,4 +60,4 @@ You have the choice of linking statically (recommended) or dynamically. | |||
| 
 | ||||
| ## Everything else | ||||
| 
 | ||||
| Look at the main project [README](https://github.com/cccb/servicepoint/blob/main/README.md) for further information. | ||||
| Look at the main project [README](https://git.berlin.ccc.de/servicepoint/servicepoint/src/branch/main/README.md) for further information. | ||||
|  |  | |||
|  | @ -6,8 +6,9 @@ edition = "2021" | |||
| license = "GPL-3.0-or-later" | ||||
| description = "C bindings for the servicepoint crate." | ||||
| homepage = "https://docs.rs/crate/servicepoint_binding_c" | ||||
| repository = "https://github.com/cccb/servicepoint" | ||||
| repository = "https://git.berlin.ccc.de/servicepoint/servicepoint" | ||||
| #readme = "README.md" | ||||
| keywords = ["cccb", "cccb-servicepoint", "uniffi"] | ||||
| 
 | ||||
| [lib] | ||||
| crate-type = ["cdylib"] | ||||
|  | @ -20,7 +21,7 @@ uniffi = { version = "0.25.3" } | |||
| thiserror.workspace = true | ||||
| 
 | ||||
| [dependencies.servicepoint] | ||||
| version = "0.13.0" | ||||
| version = "0.13.1" | ||||
| path = "../servicepoint" | ||||
| features = ["all_compressions"] | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ Display" or "Airport Display". | |||
| 
 | ||||
| This crate contains bindings for multiple programming languages, enabling non-rust-developers to use the library. | ||||
| 
 | ||||
| Also take a look at the main project [README](https://github.com/cccb/servicepoint/blob/main/README.md) for more | ||||
| Also take a look at the main project [README](https://git.berlin.ccc.de/servicepoint/servicepoint/src/branch/main/README.md) for more | ||||
| information. | ||||
| 
 | ||||
| ## Note on stability | ||||
|  | @ -37,7 +37,7 @@ You can absolutely use it, and it works, but expect minor breaking changes with | |||
| Including this repository as a submodule and building from source is the recommended way of using the library. | ||||
| 
 | ||||
| ```bash | ||||
| git submodule add https://github.com/cccb/servicepoint.git | ||||
| git submodule add https://git.berlin.ccc.de/servicepoint/servicepoint.git | ||||
| git commit -m "add servicepoint submodule" | ||||
| ``` | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| 
 | ||||
|     <PropertyGroup> | ||||
|         <PackageId>ServicePoint</PackageId> | ||||
|         <Version>0.13.0</Version> | ||||
|         <Version>0.13.1</Version> | ||||
|         <Authors>Repository Authors</Authors> | ||||
|         <Company>None</Company> | ||||
|         <Product>ServicePoint</Product> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| Gem::Specification.new do |s| | ||||
|   s.name        = "servicepoint" | ||||
|   s.version     = "0.13.0" | ||||
|   s.version     = "0.13.1" | ||||
|   s.summary     = "" | ||||
|   s.description = "" | ||||
|   s.authors     = ["kaesaecracker"] | ||||
|  |  | |||
							
								
								
									
										6
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -22,11 +22,11 @@ | |||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1736549401, | ||||
|         "narHash": "sha256-ibkQrMHxF/7TqAYcQE+tOnIsSEzXmMegzyBWza6uHKM=", | ||||
|         "lastModified": 1739357830, | ||||
|         "narHash": "sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I=", | ||||
|         "owner": "nixos", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "1dab772dd4a68a7bba5d9460685547ff8e17d899", | ||||
|         "rev": "0ff09db9d034a04acd4e8908820ba0b410d7a33a", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|  |  | |||
							
								
								
									
										68
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										68
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -1,5 +1,5 @@ | |||
| { | ||||
|   description = "Flake for servicepoint-simulator"; | ||||
|   description = "Flake for the servicepoint library."; | ||||
| 
 | ||||
|   inputs = { | ||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; | ||||
|  | @ -23,28 +23,21 @@ | |||
|         "aarch64-darwin" | ||||
|         "x86_64-darwin" | ||||
|       ]; | ||||
|       forAllSystems = lib.genAttrs supported-systems; | ||||
|       make-rust-toolchain-core = | ||||
|         pkgs: | ||||
|         pkgs.symlinkJoin { | ||||
|           name = "rust-toolchain-core"; | ||||
|           paths = with pkgs; [ | ||||
|             rustc | ||||
|             cargo | ||||
|             rustPlatform.rustcSrc | ||||
|           ]; | ||||
|         }; | ||||
|       forAllSystems = | ||||
|         f: | ||||
|         lib.genAttrs supported-systems ( | ||||
|           system: | ||||
|           f rec { | ||||
|             pkgs = nixpkgs.legacyPackages.${system}; | ||||
|             inherit system; | ||||
|           } | ||||
|         ); | ||||
|     in | ||||
|     rec { | ||||
|       packages = forAllSystems ( | ||||
|         system: | ||||
|         { pkgs, ... }: | ||||
|         let | ||||
|           pkgs = nixpkgs.legacyPackages."${system}"; | ||||
|           rust-toolchain-core = make-rust-toolchain-core pkgs; | ||||
|           naersk' = pkgs.callPackage naersk { | ||||
|             cargo = rust-toolchain-core; | ||||
|             rustc = rust-toolchain-core; | ||||
|           }; | ||||
|           naersk' = pkgs.callPackage naersk { }; | ||||
|           nativeBuildInputs = with pkgs; [ | ||||
|             pkg-config | ||||
|             makeWrapper | ||||
|  | @ -69,9 +62,8 @@ | |||
|                   package | ||||
|                 ]; | ||||
|               src = ./.; | ||||
|               nativeBuildInputs = nativeBuildInputs; | ||||
|               inherit nativeBuildInputs buildInputs; | ||||
|               strictDeps = true; | ||||
|               buildInputs = buildInputs; | ||||
|               gitSubmodules = true; | ||||
|               overrideMain = old: { | ||||
|                 preConfigure = '' | ||||
|  | @ -95,9 +87,8 @@ | |||
|               cargoTestOptions = x: x ++ package-param; | ||||
|               src = ./.; | ||||
|               doCheck = true; | ||||
|               nativeBuildInputs = nativeBuildInputs; | ||||
|               strictDeps = true; | ||||
|               buildInputs = buildInputs; | ||||
|               inherit nativeBuildInputs buildInputs; | ||||
|             }; | ||||
|         in | ||||
|         rec { | ||||
|  | @ -130,25 +121,24 @@ | |||
|       legacyPackages = packages; | ||||
| 
 | ||||
|       devShells = forAllSystems ( | ||||
|         system: | ||||
|         let | ||||
|           pkgs = nixpkgs.legacyPackages."${system}"; | ||||
|           rust-toolchain = pkgs.symlinkJoin { | ||||
|             name = "rust-toolchain"; | ||||
|             paths = with pkgs; [ | ||||
|               (make-rust-toolchain-core pkgs) | ||||
|               rustfmt | ||||
|               clippy | ||||
|               cargo-expand | ||||
|               cargo-tarpaulin | ||||
|             ]; | ||||
|           }; | ||||
|         in | ||||
|         { pkgs, system }: | ||||
|         { | ||||
|           default = pkgs.mkShell rec { | ||||
|             inputsFrom = [ self.packages.${system}.servicepoint ]; | ||||
|             packages = with pkgs; [ | ||||
|               rust-toolchain | ||||
|               (pkgs.symlinkJoin | ||||
|               { | ||||
|                 name = "rust-toolchain"; | ||||
|                 paths = with pkgs; [ | ||||
|                   rustc | ||||
|                   cargo | ||||
|                   rustPlatform.rustcSrc | ||||
|                   rustfmt | ||||
|                   clippy | ||||
|                   cargo-expand | ||||
|                   cargo-tarpaulin | ||||
|                 ]; | ||||
|               }) | ||||
|               ruby | ||||
|               dotnet-sdk_8 | ||||
|               gcc | ||||
|  | @ -160,6 +150,6 @@ | |||
|         } | ||||
|       ); | ||||
| 
 | ||||
|       formatter = forAllSystems (system: nixpkgs.legacyPackages."${system}".nixfmt-rfc-style); | ||||
|       formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-rfc-style); | ||||
|     }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter