From 376bfb28524c72b29bfc2a90d49bf86989e2723e Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 3 Jul 2023 08:26:04 +0200 Subject: [PATCH] Experimental sort of exported content --- README.md | 7 +++++++ src/cli.rs | 5 +++++ src/main.rs | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/README.md b/README.md index 67dbf6a..3c3fea8 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,13 @@ Hierzu ist die Option `--compact` vorgesehen. Es können, je nach Datei, bis zu Bei der Auflistung der Inhalte, kann die Option `--sorted` dazu verwendet werden, die angezeigten Einträge alphabetisch zu sortieren. Die Sortierung erfolgt dabei nach Namen des Katalogs oder des Formulars. +##### Experimentell: Sortierung nach Modifikation + +Beim Modifizieren der Inhalte kann die experimentelle Option `--x-sorted` dazu verwendet werden, die Einträge im Anschluss an die Modifikation +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. + ## 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 eb048a7..2a3d6fb 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -52,6 +52,11 @@ pub enum Command { outputfile: Option, #[arg(long = "compact", help = "Kompakte Ausgabe, ohne Einrücken (Optional)")] compact: bool, + #[arg( + long = "x-sorted", + help = "EXPERIMENTELL: Sortiere Kataloge und Formulare nach Name (Optional). Kann negative Auswirkungen auf den ordnungsgemäßen Import haben." + )] + sorted: bool, }, #[command(about = "Vergleiche zwei Dateien anhand der Revision der enthaltenen Inhalte")] Diff { diff --git a/src/main.rs b/src/main.rs index 79bbda3..d9dde7d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -122,6 +122,7 @@ fn main() -> Result<(), Box> { profile, outputfile, compact, + sorted, } => { let data = &mut read_inputfile(inputfile)?; @@ -132,6 +133,10 @@ fn main() -> Result<(), Box> { data.apply_profile(&profile); } + if sorted { + data.sorted(); + } + let mut buf = String::new(); let mut serializer = Serializer::new(&mut buf);