diff --git a/README.md b/README.md index b45418f..ca1dfaf 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,12 @@ nach Namen zu sortieren. Dies erlaubt eine konsistente Reihenfolge der Einträge, wodurch ein direkter Vergleich mit Vorversionen ermöglicht wird. ACHTUNG: Es kann sein, dass dadurch ein Import der resultierenden OSC-Datei nicht mehr möglich ist, da das genaue Verhalten des Imports aktuell noch nicht bekannt ist. +#### Entfernen von Inhalten der Systembibliothek bei Modifikation + +über die experimentelle Option `--x-strip` ist es möglich, die in der OSC-Datei enthaltenen und beim Import nicht genutzten Inhalte aus der Systembibliothek zu entfernen. + +Hierbei werden alle Inhalte entfernt, die im Ordner "ONKOSTAR Bibliothek" enthalten sind, beim Import jedoch ignoriert werden. + ## Profile Zum Erstellen von Varianten einer OSC-Datei wird eine Profildatei im YAML-Format verwendet. diff --git a/src/cli.rs b/src/cli.rs index 1a880f9..ff71436 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -66,6 +66,11 @@ pub enum Command { help = "EXPERIMENTELL: Sortiere Kataloge und Formulare nach Name (Optional).\nKann negative Auswirkungen auf den ordnungsgemäßen Import haben." )] sorted: bool, + #[arg( + long = "x-strip", + help = "EXPERIMENTELL: Entferne Einträge aus der Systembibliothek die nicht importiert werden (Optional).\nKann negative Auswirkungen auf den ordnungsgemäßen Import haben." + )] + strip: bool, }, #[command(about = "Vergleiche zwei Dateien anhand der Revision der enthaltenen Inhalte")] Diff { diff --git a/src/main.rs b/src/main.rs index 15fa905..dcc6573 100644 --- a/src/main.rs +++ b/src/main.rs @@ -130,6 +130,7 @@ fn main() -> Result<(), Box> { outputfile, compact, sorted, + strip, } => { let data = &mut read_inputfile(inputfile)?; @@ -144,6 +145,10 @@ fn main() -> Result<(), Box> { data.sorted(); } + if strip { + data.strip_system_library_content(); + } + let mut buf = String::new(); let mut serializer = Serializer::new(&mut buf); diff --git a/src/model/onkostar_editor.rs b/src/model/onkostar_editor.rs index 615e1a0..af54a5b 100644 --- a/src/model/onkostar_editor.rs +++ b/src/model/onkostar_editor.rs @@ -172,6 +172,24 @@ impl OnkostarEditor { }); } + pub fn strip_system_library_content(&mut self) { + self.editor + .property_catalogue + .retain(|e| !e.is_system_library_content()); + + self.editor + .data_catalogue + .retain(|e| !e.is_system_library_content()); + + self.editor + .data_form + .retain(|e| !e.is_system_library_content()); + + self.editor + .unterformular + .retain(|e| !e.is_system_library_content()); + } + pub fn print_diff(&mut self, other: &mut Self, strict: bool) { println!();