forked from Plugin-JF-Onkostar/osc-variant
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ae8615aa3a | |||
| 8e504df06d | |||
| 2493a58e9c |
529
Cargo.lock
generated
529
Cargo.lock
generated
@@ -17,28 +17,17 @@ version = "1.0.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "aes"
|
|
||||||
version = "0.8.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"cipher",
|
|
||||||
"cpufeatures",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anstyle"
|
name = "anstyle"
|
||||||
version = "1.0.4"
|
version = "1.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
|
checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.74"
|
version = "0.1.73"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
|
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -60,24 +49,6 @@ dependencies = [
|
|||||||
"rustc-demangle",
|
"rustc-demangle",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "base64ct"
|
|
||||||
version = "1.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "2.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "block-buffer"
|
name = "block-buffer"
|
||||||
version = "0.10.4"
|
version = "0.10.4"
|
||||||
@@ -87,46 +58,18 @@ dependencies = [
|
|||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "byteorder"
|
|
||||||
version = "1.5.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytes"
|
name = "bytes"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bzip2"
|
|
||||||
version = "0.4.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
|
|
||||||
dependencies = [
|
|
||||||
"bzip2-sys",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bzip2-sys"
|
|
||||||
version = "0.1.11+1.0.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
"pkg-config",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.83"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
|
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jobserver",
|
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -136,21 +79,11 @@ version = "1.0.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cipher"
|
|
||||||
version = "0.4.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
|
|
||||||
dependencies = [
|
|
||||||
"crypto-common",
|
|
||||||
"inout",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.4.6"
|
version = "4.4.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"
|
checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
"clap_derive",
|
"clap_derive",
|
||||||
@@ -158,9 +91,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_builder"
|
name = "clap_builder"
|
||||||
version = "4.4.6"
|
version = "4.4.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
|
checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
@@ -168,9 +101,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_complete"
|
name = "clap_complete"
|
||||||
version = "4.4.3"
|
version = "4.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e3ae8ba90b9d8b007efe66e55e48fb936272f5ca00349b5b0e89877520d35ea7"
|
checksum = "4110a1e6af615a9e6d0a36f805d5c99099f8bab9b8042f5bc1fa220a4a89e36f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
]
|
]
|
||||||
@@ -203,42 +136,18 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"libc",
|
"libc",
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
"windows-sys 0.45.0",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "constant_time_eq"
|
|
||||||
version = "0.1.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cpufeatures"
|
name = "cpufeatures"
|
||||||
version = "0.2.10"
|
version = "0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4"
|
checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crc32fast"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-utils"
|
|
||||||
version = "0.8.16"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crypto-common"
|
name = "crypto-common"
|
||||||
version = "0.1.6"
|
version = "0.1.6"
|
||||||
@@ -249,35 +158,6 @@ dependencies = [
|
|||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "deob"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "deranged"
|
|
||||||
version = "0.3.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
|
|
||||||
dependencies = [
|
|
||||||
"powerfmt",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "dialoguer"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
|
|
||||||
dependencies = [
|
|
||||||
"console",
|
|
||||||
"shell-words",
|
|
||||||
"tempfile",
|
|
||||||
"thiserror",
|
|
||||||
"zeroize",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.7"
|
version = "0.10.7"
|
||||||
@@ -286,7 +166,6 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"block-buffer",
|
"block-buffer",
|
||||||
"crypto-common",
|
"crypto-common",
|
||||||
"subtle",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -301,32 +180,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "errno"
|
|
||||||
version = "0.3.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"windows-sys 0.48.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "fastrand"
|
|
||||||
version = "2.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "flate2"
|
|
||||||
version = "1.0.28"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
|
|
||||||
dependencies = [
|
|
||||||
"crc32fast",
|
|
||||||
"miniz_oxide",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "generic-array"
|
name = "generic-array"
|
||||||
version = "0.14.7"
|
version = "0.14.7"
|
||||||
@@ -345,9 +198,9 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hashbrown"
|
name = "hashbrown"
|
||||||
version = "0.14.2"
|
version = "0.14.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
|
checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "heck"
|
name = "heck"
|
||||||
@@ -361,49 +214,22 @@ version = "0.4.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hmac"
|
|
||||||
version = "0.12.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
|
|
||||||
dependencies = [
|
|
||||||
"digest",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "2.0.2"
|
version = "2.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
|
checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"equivalent",
|
"equivalent",
|
||||||
"hashbrown",
|
"hashbrown",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "inout"
|
|
||||||
version = "0.1.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
|
|
||||||
dependencies = [
|
|
||||||
"generic-array",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.9"
|
version = "1.0.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "jobserver"
|
|
||||||
version = "0.1.27"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.4.0"
|
version = "1.4.0"
|
||||||
@@ -412,21 +238,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.149"
|
version = "0.2.148"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
|
checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "linux-raw-sys"
|
|
||||||
version = "0.4.10"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.6.4"
|
version = "2.6.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
@@ -448,41 +268,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "osc-variant"
|
name = "osc-variant"
|
||||||
version = "0.5.0"
|
version = "0.4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"clap_complete",
|
"clap_complete",
|
||||||
"console",
|
"console",
|
||||||
"deob",
|
|
||||||
"dialoguer",
|
|
||||||
"quick-xml",
|
"quick-xml",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_yaml",
|
"serde_yaml",
|
||||||
"sha256",
|
"sha256",
|
||||||
"zip",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "password-hash"
|
|
||||||
version = "0.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
|
|
||||||
dependencies = [
|
|
||||||
"base64ct",
|
|
||||||
"rand_core",
|
|
||||||
"subtle",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pbkdf2"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
|
|
||||||
dependencies = [
|
|
||||||
"digest",
|
|
||||||
"hmac",
|
|
||||||
"password-hash",
|
|
||||||
"sha2",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -491,23 +285,11 @@ version = "0.2.13"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pkg-config"
|
|
||||||
version = "0.3.27"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "powerfmt"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.69"
|
version = "1.0.67"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
|
checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
@@ -531,40 +313,12 @@ dependencies = [
|
|||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_core"
|
|
||||||
version = "0.6.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "redox_syscall"
|
|
||||||
version = "0.3.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustc-demangle"
|
name = "rustc-demangle"
|
||||||
version = "0.1.23"
|
version = "0.1.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rustix"
|
|
||||||
version = "0.38.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 2.4.1",
|
|
||||||
"errno",
|
|
||||||
"libc",
|
|
||||||
"linux-raw-sys",
|
|
||||||
"windows-sys 0.48.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ryu"
|
name = "ryu"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
@@ -573,18 +327,18 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.189"
|
version = "1.0.188"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
|
checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.189"
|
version = "1.0.188"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
|
checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -604,22 +358,11 @@ dependencies = [
|
|||||||
"unsafe-libyaml",
|
"unsafe-libyaml",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sha1"
|
|
||||||
version = "0.10.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"cpufeatures",
|
|
||||||
"digest",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha2"
|
name = "sha2"
|
||||||
version = "0.10.8"
|
version = "0.10.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
|
checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cpufeatures",
|
"cpufeatures",
|
||||||
@@ -639,85 +382,22 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "shell-words"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "subtle"
|
|
||||||
version = "2.5.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.38"
|
version = "2.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
|
checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tempfile"
|
|
||||||
version = "3.8.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"fastrand",
|
|
||||||
"redox_syscall",
|
|
||||||
"rustix",
|
|
||||||
"windows-sys 0.48.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror"
|
|
||||||
version = "1.0.50"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
|
|
||||||
dependencies = [
|
|
||||||
"thiserror-impl",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror-impl"
|
|
||||||
version = "1.0.50"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "time"
|
|
||||||
version = "0.3.30"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
|
|
||||||
dependencies = [
|
|
||||||
"deranged",
|
|
||||||
"powerfmt",
|
|
||||||
"serde",
|
|
||||||
"time-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "time-core"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.33.0"
|
version = "1.32.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
|
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
@@ -738,9 +418,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-width"
|
name = "unicode-width"
|
||||||
version = "0.1.11"
|
version = "0.1.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
|
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unsafe-libyaml"
|
name = "unsafe-libyaml"
|
||||||
@@ -760,16 +440,7 @@ version = "0.45.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-targets 0.42.2",
|
"windows-targets",
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-sys"
|
|
||||||
version = "0.48.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
|
||||||
dependencies = [
|
|
||||||
"windows-targets 0.48.5",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -778,28 +449,13 @@ version = "0.42.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows_aarch64_gnullvm 0.42.2",
|
"windows_aarch64_gnullvm",
|
||||||
"windows_aarch64_msvc 0.42.2",
|
"windows_aarch64_msvc",
|
||||||
"windows_i686_gnu 0.42.2",
|
"windows_i686_gnu",
|
||||||
"windows_i686_msvc 0.42.2",
|
"windows_i686_msvc",
|
||||||
"windows_x86_64_gnu 0.42.2",
|
"windows_x86_64_gnu",
|
||||||
"windows_x86_64_gnullvm 0.42.2",
|
"windows_x86_64_gnullvm",
|
||||||
"windows_x86_64_msvc 0.42.2",
|
"windows_x86_64_msvc",
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-targets"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
|
|
||||||
dependencies = [
|
|
||||||
"windows_aarch64_gnullvm 0.48.5",
|
|
||||||
"windows_aarch64_msvc 0.48.5",
|
|
||||||
"windows_i686_gnu 0.48.5",
|
|
||||||
"windows_i686_msvc 0.48.5",
|
|
||||||
"windows_x86_64_gnu 0.48.5",
|
|
||||||
"windows_x86_64_gnullvm 0.48.5",
|
|
||||||
"windows_x86_64_msvc 0.48.5",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -808,135 +464,38 @@ version = "0.42.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_gnullvm"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_aarch64_msvc"
|
name = "windows_aarch64_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_msvc"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_gnu"
|
name = "windows_i686_gnu"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_gnu"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_msvc"
|
name = "windows_i686_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_msvc"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnu"
|
name = "windows_x86_64_gnu"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnu"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnullvm"
|
name = "windows_x86_64_gnullvm"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnullvm"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_msvc"
|
name = "windows_x86_64_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_msvc"
|
|
||||||
version = "0.48.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zeroize"
|
|
||||||
version = "1.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zip"
|
|
||||||
version = "0.6.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
|
|
||||||
dependencies = [
|
|
||||||
"aes",
|
|
||||||
"byteorder",
|
|
||||||
"bzip2",
|
|
||||||
"constant_time_eq",
|
|
||||||
"crc32fast",
|
|
||||||
"crossbeam-utils",
|
|
||||||
"flate2",
|
|
||||||
"hmac",
|
|
||||||
"pbkdf2",
|
|
||||||
"sha1",
|
|
||||||
"time",
|
|
||||||
"zstd",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zstd"
|
|
||||||
version = "0.11.2+zstd.1.5.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
|
|
||||||
dependencies = [
|
|
||||||
"zstd-safe",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zstd-safe"
|
|
||||||
version = "5.0.2+zstd.1.5.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"zstd-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zstd-sys"
|
|
||||||
version = "2.0.9+zstd.1.5.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"pkg-config",
|
|
||||||
]
|
|
||||||
|
|||||||
14
Cargo.toml
14
Cargo.toml
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "osc-variant"
|
name = "osc-variant"
|
||||||
version = "0.6.0"
|
version = "0.4.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Paul-Christian Volkmer <volkmer_p@ukw.de>"]
|
authors = ["Paul-Christian Volkmer <volkmer_p@ukw.de>"]
|
||||||
description = "Anwendung zum Anpassen einer OSC-Datei an einen Standort"
|
description = "Anwendung zum Anpassen einer OSC-Datei an einen Standort"
|
||||||
@@ -9,9 +9,6 @@ readme = "README.md"
|
|||||||
|
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
[workspace]
|
|
||||||
members = ["libs/deob"]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { version = "4.4", features = ["std", "help", "usage", "derive", "error-context"], default-features = false }
|
clap = { version = "4.4", features = ["std", "help", "usage", "derive", "error-context"], default-features = false }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
@@ -19,14 +16,6 @@ serde_yaml = "0.9"
|
|||||||
quick-xml = { version = "0.30", features = ["escape-html", "serialize"], default-features = false }
|
quick-xml = { version = "0.30", features = ["escape-html", "serialize"], default-features = false }
|
||||||
console = "0.15"
|
console = "0.15"
|
||||||
sha256 = "1.4"
|
sha256 = "1.4"
|
||||||
dialoguer = "0.11"
|
|
||||||
|
|
||||||
deob = { path = "./libs/deob", optional = true }
|
|
||||||
zip = { version = "0.6", optional = true }
|
|
||||||
|
|
||||||
[features]
|
|
||||||
# Requires env var OSB_KEY to be present at build time
|
|
||||||
unzip-osb = ["dep:deob", "dep:zip"]
|
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
clap = { version = "4.4", features = ["std", "help", "usage", "derive", "error-context"], default-features = false }
|
clap = { version = "4.4", features = ["std", "help", "usage", "derive", "error-context"], default-features = false }
|
||||||
@@ -43,6 +32,5 @@ panic = "abort"
|
|||||||
copyright = "Copyright (c) 2023 Comprehensive Cancer Center Mainfranken"
|
copyright = "Copyright (c) 2023 Comprehensive Cancer Center Mainfranken"
|
||||||
extended-description = "Anwendung zum Anpassen einer OSC-Datei an einen Standort."
|
extended-description = "Anwendung zum Anpassen einer OSC-Datei an einen Standort."
|
||||||
assets = [
|
assets = [
|
||||||
["target/release/osc-variant", "usr/bin/", "755"],
|
|
||||||
["completion/osc-variant.bash", "etc/bash_completion.d/", "644"]
|
["completion/osc-variant.bash", "etc/bash_completion.d/", "644"]
|
||||||
]
|
]
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -32,11 +32,11 @@ binary-all: win-binary-x86_64 linux-binary-x86_64
|
|||||||
|
|
||||||
.PHONY: win-binary-x86_64
|
.PHONY: win-binary-x86_64
|
||||||
win-binary-x86_64:
|
win-binary-x86_64:
|
||||||
cargo build --release --target=x86_64-pc-windows-gnu --features unzip-osb
|
cargo build --release --target=x86_64-pc-windows-gnu
|
||||||
|
|
||||||
.PHONY: linux-binary-x86_64
|
.PHONY: linux-binary-x86_64
|
||||||
linux-binary-x86_64:
|
linux-binary-x86_64:
|
||||||
cargo build --release --target=x86_64-unknown-linux-gnu --features unzip-osb
|
cargo build --release --target=x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install:
|
install:
|
||||||
|
|||||||
47
README.md
47
README.md
@@ -16,10 +16,6 @@ unvollständigen Ausgabedateien zu erzeugen.
|
|||||||
|
|
||||||
### Beispiele
|
### Beispiele
|
||||||
|
|
||||||
Die folgenden Unterbefehle sind verfügbar
|
|
||||||
|
|
||||||
#### Unterbefehl `sha256sum`
|
|
||||||
|
|
||||||
Das Berechnen der SHA256 Prüfsumme ist mit dem Unterbefehl `sha256sum` auch unter Windows einfach möglich
|
Das Berechnen der SHA256 Prüfsumme ist mit dem Unterbefehl `sha256sum` auch unter Windows einfach möglich
|
||||||
und erzeugt eine Ausgabe analog dem Befehl auf Linux-Systemen:
|
und erzeugt eine Ausgabe analog dem Befehl auf Linux-Systemen:
|
||||||
|
|
||||||
@@ -27,40 +23,21 @@ und erzeugt eine Ausgabe analog dem Befehl auf Linux-Systemen:
|
|||||||
osc-variant sha256sum meine-beispieldatei.osc
|
osc-variant sha256sum meine-beispieldatei.osc
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Unterbefehl `list`
|
|
||||||
|
|
||||||
Zum Auflisten der Inhalte einer Datei wird folgender Befehl verwendet:
|
Zum Auflisten der Inhalte einer Datei wird folgender Befehl verwendet:
|
||||||
|
|
||||||
```
|
```
|
||||||
osc-variant list meine-beispieldatei.osc
|
osc-variant list meine-beispieldatei.osc
|
||||||
```
|
```
|
||||||
|
|
||||||
Mit der Option `--filter` kann die Ausgabe eingeschränkt werden.
|
Zum Auflisten der Inhalte mit allen Abhängigkeiten, z.B. Daten- und Merkmalkataloge und bei Formularen wird der Befehl
|
||||||
|
|
||||||
#### Unterbefehl `tree`
|
|
||||||
|
|
||||||
Zum Auflisten der Inhalte mit allen Abhängigkeiten, z.B. Daten- und Merkmalskataloge und bei Formularen wird der Befehl
|
|
||||||
`tree` verwendet:
|
`tree` verwendet:
|
||||||
|
|
||||||
```
|
```
|
||||||
osc-variant tree meine-beispieldatei.osc
|
osc-variant tree meine-beispieldatei.osc
|
||||||
```
|
```
|
||||||
|
|
||||||
Abhängigkeiten werden je nach Art gekennzeichnet:
|
|
||||||
|
|
||||||
* `+`: Datenkatalog
|
|
||||||
* `-`: Merkmalskatalog
|
|
||||||
* `>`: Formularverweis
|
|
||||||
* `*`: Unterformular
|
|
||||||
|
|
||||||
Für Formularverweise und Unterformulare werden dabei die verwendeten Datenkataloge nicht erneut ausgegeben.
|
|
||||||
|
|
||||||
Achtung! Dies erzeugt eine sehr umfangreiche Ausgabe.
|
Achtung! Dies erzeugt eine sehr umfangreiche Ausgabe.
|
||||||
|
|
||||||
Mit der Option `--filter` kann auch hier die Ausgabe eingeschränkt werden.
|
|
||||||
|
|
||||||
#### Unterbefehl `diff`
|
|
||||||
|
|
||||||
Zum Vergleich zweier OSC-Dateien wird der Unterbefehl `diff` verwendet.
|
Zum Vergleich zweier OSC-Dateien wird der Unterbefehl `diff` verwendet.
|
||||||
Der optionale Parameter `--strict` vergleicht auch den Inhalt der OSC-Datei.
|
Der optionale Parameter `--strict` vergleicht auch den Inhalt der OSC-Datei.
|
||||||
Ohne diesen wird nur das Vorhandensein von Inhalten und die Revision verglichen.
|
Ohne diesen wird nur das Vorhandensein von Inhalten und die Revision verglichen.
|
||||||
@@ -75,8 +52,6 @@ bzw.
|
|||||||
osc-variant diff meine-beispieldatei.osc andere-beispieldatei.osc --strict
|
osc-variant diff meine-beispieldatei.osc andere-beispieldatei.osc --strict
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Unterbefehl `modify`
|
|
||||||
|
|
||||||
Zum Anpassen des Inhalts einer Datei:
|
Zum Anpassen des Inhalts einer Datei:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -84,21 +59,11 @@ osc-variant modify meine-beispieldatei.osc --profile ukw-profil.yml --output ukw
|
|||||||
```
|
```
|
||||||
|
|
||||||
Die Parameter `--profile` und `--output` sind optional.
|
Die Parameter `--profile` und `--output` sind optional.
|
||||||
Mit dem ebenfalls optionalen Parameter `--interactve` oder `-i` können die Parameter zur kompakten Ausgabe, zum Sortieren
|
|
||||||
und dem Entfernen von Inhalten der Systembibliothek interaktiv gesetzt werden.
|
|
||||||
|
|
||||||
Ohne Profildatei wird die Datei lediglich eingelesen, Leerzeichen am Ende eines XML-Tags entfernt und wieder ausgegeben.
|
Ohne Profildatei wird die Datei lediglich eingelesen, Leerzeichen am Ende eines XML-Tags entfernt und wieder ausgegeben.
|
||||||
|
|
||||||
Ohne eine Angabe der Ausgabedatei wird auf die Standardausgabe ausgegeben.
|
Ohne eine Angabe der Ausgabedatei wird auf die Standardausgabe ausgegeben.
|
||||||
|
|
||||||
#### Unterbefehl `unzip-osb`
|
|
||||||
|
|
||||||
Ab Version 0.6.0 ist die Anwendung zudem in der Lage, die für eine Aktualisierung der OS-Bibliothek genutzten OSB-Dateien zu entpacken:
|
|
||||||
|
|
||||||
```
|
|
||||||
osc-variant unzip-osb OSBIB-6.10.osb
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Kompakte Ausgabe
|
#### Kompakte Ausgabe
|
||||||
|
|
||||||
OSC-Dateien sind XML-Dateien. Diese Anwendung ermöglicht optional die Ausgabe als kompaktere XML-Datei ohne Zeilenumbrüche.
|
OSC-Dateien sind XML-Dateien. Diese Anwendung ermöglicht optional die Ausgabe als kompaktere XML-Datei ohne Zeilenumbrüche.
|
||||||
@@ -106,9 +71,9 @@ Hierzu ist die Option `--compact` vorgesehen. Es können, je nach Datei, bis zu
|
|||||||
|
|
||||||
#### Filter
|
#### Filter
|
||||||
|
|
||||||
Bei der Auflistung von Inhalten ist es möglich, die Anzeige für die Unterbefehle `list` und `tree` anhand des Namens zu filtern.
|
Bei der Auflistung von Inhalten ist es möglich, die Ausgaben anhand des Namens zu filtern.
|
||||||
Hierzu ist die Option `--filter=` vorgesehen.
|
Hierzu ist die Option `--filter=` vorgesehen.
|
||||||
Wird diese angewendet, werden nur Inhalte angezeigt, deren Name die angegebene Zeichenkette beinhalten.
|
Wird diese angewendet, werden nur Inhalte ausgegeben, deren Name die angegebene Zeichenkette beinhalten.
|
||||||
|
|
||||||
#### Sortierung
|
#### Sortierung
|
||||||
|
|
||||||
@@ -116,11 +81,7 @@ Bei der Auflistung der Inhalte, kann die Option `--sorted` dazu verwendet werden
|
|||||||
Die Sortierung erfolgt dabei nach Namen des Katalogs oder des Formulars.
|
Die Sortierung erfolgt dabei nach Namen des Katalogs oder des Formulars.
|
||||||
|
|
||||||
Beim Modifizieren der Inhalte kann ebenfalls die Option `--sorted` dazu verwendet werden, die Einträge im Anschluss an die Modifikation
|
Beim Modifizieren der Inhalte kann ebenfalls die Option `--sorted` dazu verwendet werden, die Einträge im Anschluss an die Modifikation
|
||||||
nach Namen und für Formulare der Abhängigkeit von Formularverweisen und Unterformularen zu sortieren.
|
nach Namen zu sortieren.
|
||||||
|
|
||||||
Formulare, die von anderen Formularen in einem Formularverweis oder als Unterformular verwendet werden, werden dabei weiter oben angeordnet,
|
|
||||||
da Onkostar einen Formularimport sequenziell, ohne Berücksichtigung von Abhängigkeiten, durchführt.
|
|
||||||
|
|
||||||
Dies erlaubt eine konsistente Reihenfolge der Einträge, wodurch ein direkter Vergleich mit Vorversionen ermöglicht wird.
|
Dies erlaubt eine konsistente Reihenfolge der Einträge, wodurch ein direkter Vergleich mit Vorversionen ermöglicht wird.
|
||||||
|
|
||||||
##### Entfernen von Inhalten der Systembibliothek bei Modifikation
|
##### Entfernen von Inhalten der Systembibliothek bei Modifikation
|
||||||
|
|||||||
2
build.rs
2
build.rs
@@ -35,7 +35,7 @@ fn main() -> Result<(), Error> {
|
|||||||
|
|
||||||
let package_name = std::env::var("CARGO_CRATE_NAME").unwrap_or("osc-variant".to_string());
|
let package_name = std::env::var("CARGO_CRATE_NAME").unwrap_or("osc-variant".to_string());
|
||||||
|
|
||||||
fs::remove_dir_all("completion").unwrap_or_default();
|
fs::remove_dir_all("completion")?;
|
||||||
fs::create_dir("completion")?;
|
fs::create_dir("completion")?;
|
||||||
|
|
||||||
generate_to(Bash, &mut cmd, package_name.as_str(), "completion")?;
|
generate_to(Bash, &mut cmd, package_name.as_str(), "completion")?;
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
forms:
|
|
||||||
- name: 'DNPM Klinik/Anamnese'
|
|
||||||
form_references:
|
|
||||||
- name: MTB
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
- name: 'DNPM Therapieplan'
|
|
||||||
form_references:
|
|
||||||
- name: referstemtb
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
- name: reftkhumangenber
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
- name: reftkreevaluation
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
- name: 'DNPM UF Einzelempfehlung'
|
|
||||||
form_references:
|
|
||||||
- name: mtb
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
- name: 'DNPM UF Rebiopsie'
|
|
||||||
form_references:
|
|
||||||
- name: reftumorkonferenz
|
|
||||||
referenced_data_form: 'OS.Tumorkonferenz'
|
|
||||||
anzeige_auswahl: 'MTB vom {Datum}'
|
|
||||||
@@ -4,9 +4,6 @@ forms:
|
|||||||
- name: MTB
|
- name: MTB
|
||||||
referenced_data_form: 'MR.MTB_Anmeldung'
|
referenced_data_form: 'MR.MTB_Anmeldung'
|
||||||
anzeige_auswahl: 'MTB Anmeldung vom {Anmeldedatum}'
|
anzeige_auswahl: 'MTB Anmeldung vom {Anmeldedatum}'
|
||||||
scripts_code: |
|
|
||||||
setFieldValue('AnmeldedatumMTB', getFieldValue('MTB').MTBTermin);
|
|
||||||
setFieldValue('WHOGrad', getFieldValue('MTB').WHOGrad);
|
|
||||||
- name: 'DNPM Therapieplan'
|
- name: 'DNPM Therapieplan'
|
||||||
form_references:
|
form_references:
|
||||||
- name: referstemtb
|
- name: referstemtb
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "deob"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
cc = "1.0"
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
use std::io::Error;
|
|
||||||
|
|
||||||
fn main() -> Result<(), Error> {
|
|
||||||
cc::Build::new().file("src/deob.c").compile("deob");
|
|
||||||
println!("cargo:rerun-if-changed=src/deob.c");
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "deob.h"
|
|
||||||
|
|
||||||
void deob(char * in) {
|
|
||||||
const long long s[2] = { S0, S1 };
|
|
||||||
char d[] = "OSTAR.password$OSB";
|
|
||||||
for (size_t i = 0; i < DL; i++) d[i] = (CS)[i];
|
|
||||||
size_t l = strlen(in) / 2;
|
|
||||||
for (size_t i = 0; i < l; i++) {
|
|
||||||
for (size_t j = 0; j < DL; j++) { DLT(0); DLT(1); }
|
|
||||||
DLS(i);
|
|
||||||
}
|
|
||||||
INZ(l);
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef OSC_VARIANT_DEOB_H
|
|
||||||
#define OSC_VARIANT_DEOB_H
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#define S0 8373972096940928081
|
|
||||||
#define S1 7378413942531504450
|
|
||||||
#define CS (char*)&s
|
|
||||||
#define DL sizeof(d) / sizeof(d[0]) - 2
|
|
||||||
#define I2 i*2
|
|
||||||
#define INZ(var) in[var] = 0
|
|
||||||
#define DLS(idx) in[idx] = (d[DL+1]<<4)|d[DL]
|
|
||||||
#define DLT(idx) d[DL+idx] = (in[I2+idx] == d[j]) ? (char)j : d[DL+idx]
|
|
||||||
|
|
||||||
void deob(char * in);
|
|
||||||
|
|
||||||
#endif //OSC_VARIANT_DEOB_H
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
use std::ffi::{c_char, CStr, CString};
|
|
||||||
|
|
||||||
#[link(name = "deob")]
|
|
||||||
extern "C" {
|
|
||||||
fn deob(key: *const c_char);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn deobfuscate(s: &str) -> String {
|
|
||||||
let key = CString::new(s).unwrap_or_default().into_raw();
|
|
||||||
unsafe {
|
|
||||||
deob(key);
|
|
||||||
String::from_utf8_lossy(CStr::from_ptr(key).to_bytes()).to_string()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
11
src/cli.rs
11
src/cli.rs
@@ -78,7 +78,7 @@ pub enum SubCommand {
|
|||||||
#[arg(
|
#[arg(
|
||||||
long = "sorted",
|
long = "sorted",
|
||||||
alias = "x-sorted",
|
alias = "x-sorted",
|
||||||
help = "Sortiere Kataloge und Formulare nach Name und Abhängigkeiten (Optional)."
|
help = "Sortiere Kataloge und Formulare nach Name (Optional)."
|
||||||
)]
|
)]
|
||||||
sorted: bool,
|
sorted: bool,
|
||||||
#[arg(
|
#[arg(
|
||||||
@@ -87,12 +87,6 @@ pub enum SubCommand {
|
|||||||
help = "Entferne Einträge aus der Systembibliothek die nicht importiert werden (Optional)."
|
help = "Entferne Einträge aus der Systembibliothek die nicht importiert werden (Optional)."
|
||||||
)]
|
)]
|
||||||
strip: bool,
|
strip: bool,
|
||||||
#[arg(
|
|
||||||
short = 'i',
|
|
||||||
long = "interactive",
|
|
||||||
help = "Starte interaktiven Dialog zum Modifizieren von OSC-Dateien"
|
|
||||||
)]
|
|
||||||
interactive: bool,
|
|
||||||
},
|
},
|
||||||
#[command(about = "Vergleiche zwei Dateien anhand der Revision der enthaltenen Inhalte")]
|
#[command(about = "Vergleiche zwei Dateien anhand der Revision der enthaltenen Inhalte")]
|
||||||
Diff {
|
Diff {
|
||||||
@@ -101,7 +95,4 @@ pub enum SubCommand {
|
|||||||
#[arg(long = "strict", help = "Strikter Vergleich des Inhalts")]
|
#[arg(long = "strict", help = "Strikter Vergleich des Inhalts")]
|
||||||
strict: bool,
|
strict: bool,
|
||||||
},
|
},
|
||||||
#[cfg(feature = "unzip-osb")]
|
|
||||||
#[command(about = "Entpackt eine OSB-Datei")]
|
|
||||||
UnzipOsb { file: String },
|
|
||||||
}
|
}
|
||||||
|
|||||||
35
src/main.rs
35
src/main.rs
@@ -33,7 +33,6 @@ use std::str::FromStr;
|
|||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use console::style;
|
use console::style;
|
||||||
use dialoguer::Confirm;
|
|
||||||
use quick_xml::se::Serializer;
|
use quick_xml::se::Serializer;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use sha256::digest;
|
use sha256::digest;
|
||||||
@@ -45,8 +44,6 @@ use crate::profile::Profile;
|
|||||||
mod cli;
|
mod cli;
|
||||||
mod model;
|
mod model;
|
||||||
mod profile;
|
mod profile;
|
||||||
#[cfg(feature = "unzip-osb")]
|
|
||||||
mod unzip_osb;
|
|
||||||
|
|
||||||
enum FileError {
|
enum FileError {
|
||||||
Reading(String, String),
|
Reading(String, String),
|
||||||
@@ -152,7 +149,6 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
compact,
|
compact,
|
||||||
sorted,
|
sorted,
|
||||||
strip,
|
strip,
|
||||||
interactive,
|
|
||||||
} => {
|
} => {
|
||||||
let data = &mut read_inputfile(inputfile)?;
|
let data = &mut read_inputfile(inputfile)?;
|
||||||
|
|
||||||
@@ -163,32 +159,6 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
data.apply_profile(&profile);
|
data.apply_profile(&profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut compact = compact;
|
|
||||||
let mut sorted = sorted;
|
|
||||||
let mut strip = strip;
|
|
||||||
|
|
||||||
if interactive {
|
|
||||||
compact = Confirm::new()
|
|
||||||
.with_prompt("Kompakte Ausgabe, ohne Einrücken?")
|
|
||||||
.default(compact)
|
|
||||||
.interact()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
sorted = Confirm::new()
|
|
||||||
.with_prompt("Sortiere Kataloge und Formulare nach Name und Abhängigkeiten?")
|
|
||||||
.default(sorted)
|
|
||||||
.interact()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
strip = Confirm::new()
|
|
||||||
.with_prompt(
|
|
||||||
"Entferne Einträge aus der Systembibliothek die nicht importiert werden?",
|
|
||||||
)
|
|
||||||
.default(strip)
|
|
||||||
.interact()
|
|
||||||
.unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
if sorted {
|
if sorted {
|
||||||
data.sorted();
|
data.sorted();
|
||||||
}
|
}
|
||||||
@@ -257,11 +227,6 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#[cfg(feature = "unzip-osb")]
|
|
||||||
SubCommand::UnzipOsb { file } => {
|
|
||||||
use crate::unzip_osb::unzip_osb;
|
|
||||||
unzip_osb(file.as_str())
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -102,8 +102,7 @@ impl Comparable for DataCatalogue {
|
|||||||
|
|
||||||
impl Requires for DataCatalogue {
|
impl Requires for DataCatalogue {
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
||||||
let mut result = self
|
self.entries
|
||||||
.entries
|
|
||||||
.entry
|
.entry
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|&entry| entry.property_catalogue.is_some())
|
.filter(|&entry| entry.property_catalogue.is_some())
|
||||||
@@ -117,10 +116,7 @@ impl Requires for DataCatalogue {
|
|||||||
Some(contained) => Requirement::PropertyCatalogue(contained),
|
Some(contained) => Requirement::PropertyCatalogue(contained),
|
||||||
None => Requirement::ExternalPropertyCatalogue(entry),
|
None => Requirement::ExternalPropertyCatalogue(entry),
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>()
|
||||||
result.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
|
|
||||||
result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use std::cmp::Ordering;
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
use console::style;
|
use console::style;
|
||||||
@@ -253,54 +252,9 @@ impl Comparable for DataForm {
|
|||||||
fn get_revision(&self) -> u16 {
|
fn get_revision(&self) -> u16 {
|
||||||
self.revision
|
self.revision
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compare_by_requirement(a: &Self, b: &Self) -> Ordering {
|
|
||||||
if a.get_name() == b.get_name()
|
|
||||||
|| a.is_system_library_content()
|
|
||||||
|| b.is_system_library_content()
|
|
||||||
{
|
|
||||||
return Ordering::Equal;
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.requires_form_reference(&b.get_name()) || a.requires_subform(&b.get_name()) {
|
|
||||||
return Ordering::Greater;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ordering::Less
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Requires for DataForm {
|
impl Requires for DataForm {
|
||||||
fn requires_form_reference(&self, name: &str) -> bool {
|
|
||||||
self.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.map(|item| {
|
|
||||||
item.type_ == "formReference"
|
|
||||||
&& match item.referenced_data_form.as_ref() {
|
|
||||||
Some(refname) => refname == name,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(|&it| it)
|
|
||||||
.last()
|
|
||||||
.unwrap_or_default()
|
|
||||||
}
|
|
||||||
fn requires_subform(&self, name: &str) -> bool {
|
|
||||||
self.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.map(|item| {
|
|
||||||
item.type_ == "subform"
|
|
||||||
&& match item.referenced_data_form.as_ref() {
|
|
||||||
Some(refname) => refname == name,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(|&it| it)
|
|
||||||
.last()
|
|
||||||
.unwrap_or_default()
|
|
||||||
}
|
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
||||||
let mut result = self
|
let mut result = self
|
||||||
.data_catalogues
|
.data_catalogues
|
||||||
@@ -313,7 +267,6 @@ impl Requires for DataForm {
|
|||||||
None => Requirement::ExternalDataCatalogue(entry.to_string()),
|
None => Requirement::ExternalDataCatalogue(entry.to_string()),
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
result.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
|
|
||||||
let referenced_forms = &mut self
|
let referenced_forms = &mut self
|
||||||
.entries
|
.entries
|
||||||
@@ -334,33 +287,58 @@ impl Requires for DataForm {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
referenced_forms.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
result.append(referenced_forms);
|
result.append(referenced_forms);
|
||||||
|
|
||||||
let sub_forms = &mut self
|
|
||||||
.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.filter(|&entry| entry.get_type() == "subform")
|
|
||||||
.filter_map(|entry| match &entry.referenced_data_form {
|
|
||||||
Some(name) => Some(name),
|
|
||||||
None => None,
|
|
||||||
})
|
|
||||||
.collect::<HashSet<_>>()
|
|
||||||
.into_iter()
|
|
||||||
.map(|entry| match all.find_data_form(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::DataFormSubform(contained),
|
|
||||||
None => match all.find_unterformular(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::UnterformularSubform(contained),
|
|
||||||
None => Requirement::ExternalUnterformularSubform(entry.to_string()),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
sub_forms.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
result.append(sub_forms);
|
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
||||||
|
format!(
|
||||||
|
"{}\n{}",
|
||||||
|
self.to_listed_string(),
|
||||||
|
self.get_required_entries(all)
|
||||||
|
.iter()
|
||||||
|
.map(|entry| match entry {
|
||||||
|
Requirement::DataCatalogue(x) => {
|
||||||
|
let inner = x
|
||||||
|
.get_required_entries(all)
|
||||||
|
.iter()
|
||||||
|
.map(|inner_entry| match inner_entry {
|
||||||
|
Requirement::PropertyCatalogue(y) => Some(y.to_listed_string()),
|
||||||
|
Requirement::ExternalPropertyCatalogue(name) => Some(format!(
|
||||||
|
"Merkmalskatalog (-) '{}' - hier nicht enthalten",
|
||||||
|
style(name).yellow()
|
||||||
|
)),
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.filter(Option::is_some)
|
||||||
|
.map(|item| format!(" - {}\n", item.unwrap()))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("");
|
||||||
|
|
||||||
|
if inner.is_empty() {
|
||||||
|
Some(format!(" + {}\n", x.to_listed_string()))
|
||||||
|
} else {
|
||||||
|
Some(format!(" + {}\n{}", x.to_listed_string(), inner))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Requirement::ExternalDataCatalogue(_) => {
|
||||||
|
Some(format!(" + {}\n", entry.to_string()))
|
||||||
|
}
|
||||||
|
Requirement::DataFormReference(_)
|
||||||
|
| Requirement::ExternalDataFormReference(_)
|
||||||
|
| Requirement::UnterformularReference(_)
|
||||||
|
| Requirement::ExternalUnterformularReference(_) => {
|
||||||
|
Some(format!(" > {}\n", entry.to_string()))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.filter(Option::is_some)
|
||||||
|
.flatten()
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("")
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FolderContent for DataForm {
|
impl FolderContent for DataForm {
|
||||||
@@ -551,7 +529,6 @@ pub struct Entry {
|
|||||||
#[serde(rename = "SeitenumbruchPatModul")]
|
#[serde(rename = "SeitenumbruchPatModul")]
|
||||||
seitenumbruch_pat_modul: bool,
|
seitenumbruch_pat_modul: bool,
|
||||||
#[serde(rename = "Kontaktliste")]
|
#[serde(rename = "Kontaktliste")]
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
kontaktliste: Option<String>,
|
kontaktliste: Option<String>,
|
||||||
#[serde(rename = "MarkierungIgnorieren")]
|
#[serde(rename = "MarkierungIgnorieren")]
|
||||||
markierung_ignorieren: bool,
|
markierung_ignorieren: bool,
|
||||||
|
|||||||
@@ -22,12 +22,10 @@
|
|||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use std::cmp::Ordering;
|
|
||||||
use std::collections::hash_map::DefaultHasher;
|
use std::collections::hash_map::DefaultHasher;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
|
|
||||||
use crate::model::requirements::Requires;
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::profile::{FormField, FormReference, Profile};
|
use crate::profile::{FormField, FormReference, Profile};
|
||||||
@@ -253,7 +251,6 @@ pub trait Listable {
|
|||||||
|
|
||||||
pub trait Sortable {
|
pub trait Sortable {
|
||||||
fn sorting_key(&self) -> String;
|
fn sorting_key(&self) -> String;
|
||||||
|
|
||||||
fn sorted(&mut self) -> &Self
|
fn sorted(&mut self) -> &Self
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
@@ -270,12 +267,6 @@ pub trait Comparable: Debug {
|
|||||||
format!("{:?}", self).hash(&mut h);
|
format!("{:?}", self).hash(&mut h);
|
||||||
h.finish().to_string()
|
h.finish().to_string()
|
||||||
}
|
}
|
||||||
fn compare_by_requirement(_: &Self, _: &Self) -> Ordering
|
|
||||||
where
|
|
||||||
Self: Requires,
|
|
||||||
{
|
|
||||||
Ordering::Equal
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait FormEntry {
|
pub trait FormEntry {
|
||||||
|
|||||||
@@ -229,25 +229,17 @@ impl OnkostarEditor {
|
|||||||
item.sorted();
|
item.sorted();
|
||||||
});
|
});
|
||||||
|
|
||||||
/*self.editor
|
|
||||||
.data_form
|
|
||||||
.sort_unstable_by_key(|e| e.sorting_key());*/
|
|
||||||
|
|
||||||
self.editor
|
self.editor
|
||||||
.data_form
|
.data_form
|
||||||
.sort_unstable_by(DataForm::compare_by_requirement);
|
.sort_unstable_by_key(|e| e.sorting_key());
|
||||||
|
|
||||||
self.editor.data_form.iter_mut().for_each(|item| {
|
self.editor.data_form.iter_mut().for_each(|item| {
|
||||||
item.sorted();
|
item.sorted();
|
||||||
});
|
});
|
||||||
|
|
||||||
/*self.editor
|
|
||||||
.unterformular
|
|
||||||
.sort_unstable_by_key(|e| e.sorting_key());*/
|
|
||||||
|
|
||||||
self.editor
|
self.editor
|
||||||
.unterformular
|
.unterformular
|
||||||
.sort_unstable_by(Unterformular::compare_by_requirement);
|
.sort_unstable_by_key(|e| e.sorting_key());
|
||||||
|
|
||||||
self.editor.unterformular.iter_mut().for_each(|item| {
|
self.editor.unterformular.iter_mut().for_each(|item| {
|
||||||
item.sorted();
|
item.sorted();
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ use crate::model::data_form::DataForm;
|
|||||||
use crate::model::onkostar_editor::OnkostarEditor;
|
use crate::model::onkostar_editor::OnkostarEditor;
|
||||||
use crate::model::property_catalogue::PropertyCatalogue;
|
use crate::model::property_catalogue::PropertyCatalogue;
|
||||||
use crate::model::unterformular::Unterformular;
|
use crate::model::unterformular::Unterformular;
|
||||||
use crate::model::{Comparable, Listable, Sortable};
|
use crate::model::Listable;
|
||||||
|
|
||||||
#[allow(clippy::enum_variant_names)]
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub enum Requirement<'a> {
|
pub enum Requirement<'a> {
|
||||||
@@ -40,31 +40,6 @@ pub enum Requirement<'a> {
|
|||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
ExternalDataFormReference(String),
|
ExternalDataFormReference(String),
|
||||||
ExternalUnterformularReference(String),
|
ExternalUnterformularReference(String),
|
||||||
|
|
||||||
DataFormSubform(&'a DataForm),
|
|
||||||
UnterformularSubform(&'a Unterformular),
|
|
||||||
#[allow(dead_code)]
|
|
||||||
ExternalDataFormSubform(String),
|
|
||||||
ExternalUnterformularSubform(String),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Sortable for Requirement<'_> {
|
|
||||||
fn sorting_key(&self) -> String {
|
|
||||||
match self {
|
|
||||||
Requirement::PropertyCatalogue(item) => item.get_name(),
|
|
||||||
Requirement::DataCatalogue(item) => item.get_name(),
|
|
||||||
Requirement::DataFormReference(item) => item.get_name(),
|
|
||||||
Requirement::UnterformularReference(item) => item.get_name(),
|
|
||||||
Requirement::DataFormSubform(item) => item.get_name(),
|
|
||||||
Requirement::UnterformularSubform(item) => item.get_name(),
|
|
||||||
Requirement::ExternalPropertyCatalogue(name)
|
|
||||||
| Requirement::ExternalDataCatalogue(name)
|
|
||||||
| Requirement::ExternalDataFormReference(name)
|
|
||||||
| Requirement::ExternalDataFormSubform(name)
|
|
||||||
| Requirement::ExternalUnterformularReference(name)
|
|
||||||
| Requirement::ExternalUnterformularSubform(name) => name.to_string(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToString for Requirement<'_> {
|
impl ToString for Requirement<'_> {
|
||||||
@@ -72,92 +47,26 @@ impl ToString for Requirement<'_> {
|
|||||||
match self {
|
match self {
|
||||||
Requirement::PropertyCatalogue(item) => item.to_listed_string(),
|
Requirement::PropertyCatalogue(item) => item.to_listed_string(),
|
||||||
Requirement::DataCatalogue(item) => item.to_listed_string(),
|
Requirement::DataCatalogue(item) => item.to_listed_string(),
|
||||||
Requirement::DataFormReference(item) => item.to_listed_string(),
|
|
||||||
Requirement::UnterformularReference(item) => item.to_listed_string(),
|
|
||||||
Requirement::DataFormSubform(item) => item.to_listed_string(),
|
|
||||||
Requirement::UnterformularSubform(item) => item.to_listed_string(),
|
|
||||||
Requirement::ExternalPropertyCatalogue(name) => {
|
Requirement::ExternalPropertyCatalogue(name) => {
|
||||||
format!("Merkmalskatalog (-) '{}' - hier nicht enthalten", name)
|
format!("Merkmalskatalog (-) '{}' - hier nicht enthalten", name)
|
||||||
}
|
}
|
||||||
Requirement::ExternalDataCatalogue(name) => {
|
Requirement::ExternalDataCatalogue(name) => {
|
||||||
format!("Datenkatalog (-) '{}' - hier nicht enthalten", name)
|
format!("Datenkatalog (-) '{}' - hier nicht enthalten", name)
|
||||||
}
|
}
|
||||||
Requirement::ExternalDataFormReference(name)
|
Requirement::DataFormReference(item) => item.to_listed_string(),
|
||||||
| Requirement::ExternalDataFormSubform(name) => {
|
Requirement::UnterformularReference(item) => item.to_listed_string(),
|
||||||
|
Requirement::ExternalDataFormReference(name) => {
|
||||||
format!("Formular (-) '{}' - hier nicht enthalten", name)
|
format!("Formular (-) '{}' - hier nicht enthalten", name)
|
||||||
}
|
}
|
||||||
Requirement::ExternalUnterformularReference(name)
|
Requirement::ExternalUnterformularReference(name) => {
|
||||||
| Requirement::ExternalUnterformularSubform(name) => {
|
|
||||||
format!("Unterformular (-) '{}' - hier nicht enthalten", name)
|
format!("Unterformular (-) '{}' - hier nicht enthalten", name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Requires
|
pub trait Requires {
|
||||||
where
|
|
||||||
Self: Listable,
|
|
||||||
{
|
|
||||||
fn requires_form_reference(&self, _: &str) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
fn requires_subform(&self, _: &str) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement>;
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement>;
|
||||||
|
|
||||||
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String;
|
||||||
format!(
|
|
||||||
"{}\n{}",
|
|
||||||
self.to_listed_string(),
|
|
||||||
self.get_required_entries(all)
|
|
||||||
.iter()
|
|
||||||
.map(|entry| match entry {
|
|
||||||
Requirement::DataCatalogue(x) => {
|
|
||||||
let inner = x
|
|
||||||
.get_required_entries(all)
|
|
||||||
.iter()
|
|
||||||
.map(|inner_entry| match inner_entry {
|
|
||||||
Requirement::PropertyCatalogue(_) => Some(inner_entry.to_string()),
|
|
||||||
Requirement::ExternalPropertyCatalogue(_) => {
|
|
||||||
Some(inner_entry.to_string())
|
|
||||||
}
|
|
||||||
_ => None,
|
|
||||||
})
|
|
||||||
.filter(Option::is_some)
|
|
||||||
.map(|item| format!(" - {}\n", item.unwrap()))
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
.join("");
|
|
||||||
|
|
||||||
if inner.is_empty() {
|
|
||||||
Some(format!(" + {}\n", x.to_listed_string()))
|
|
||||||
} else {
|
|
||||||
Some(format!(" + {}\n{}", x.to_listed_string(), inner))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Requirement::ExternalDataCatalogue(_) => {
|
|
||||||
Some(format!(" + {}\n", entry.to_string()))
|
|
||||||
}
|
|
||||||
Requirement::DataFormReference(_)
|
|
||||||
| Requirement::ExternalDataFormReference(_)
|
|
||||||
| Requirement::UnterformularReference(_)
|
|
||||||
| Requirement::ExternalUnterformularReference(_) => {
|
|
||||||
Some(format!(" > {}\n", entry.to_string()))
|
|
||||||
}
|
|
||||||
Requirement::DataFormSubform(_)
|
|
||||||
| Requirement::ExternalDataFormSubform(_)
|
|
||||||
| Requirement::UnterformularSubform(_)
|
|
||||||
| Requirement::ExternalUnterformularSubform(_) => {
|
|
||||||
Some(format!(" * {}\n", entry.to_string()))
|
|
||||||
}
|
|
||||||
_ => None,
|
|
||||||
})
|
|
||||||
.filter(Option::is_some)
|
|
||||||
.flatten()
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
.join("")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use std::cmp::Ordering;
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
use console::style;
|
use console::style;
|
||||||
@@ -257,55 +256,9 @@ impl Comparable for Unterformular {
|
|||||||
fn get_revision(&self) -> u16 {
|
fn get_revision(&self) -> u16 {
|
||||||
self.revision
|
self.revision
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compare_by_requirement(a: &Self, b: &Self) -> Ordering {
|
|
||||||
if a.get_name() == b.get_name()
|
|
||||||
|| a.is_system_library_content()
|
|
||||||
|| b.is_system_library_content()
|
|
||||||
{
|
|
||||||
return Ordering::Equal;
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.requires_form_reference(&b.get_name()) || a.requires_subform(&b.get_name()) {
|
|
||||||
return Ordering::Greater;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ordering::Less
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Requires for Unterformular {
|
impl Requires for Unterformular {
|
||||||
fn requires_form_reference(&self, name: &str) -> bool {
|
|
||||||
self.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.map(|item| {
|
|
||||||
item.type_ == "formReference"
|
|
||||||
&& match item.referenced_data_form.as_ref() {
|
|
||||||
Some(refname) => refname == name,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(|&it| it)
|
|
||||||
.last()
|
|
||||||
.unwrap_or_default()
|
|
||||||
}
|
|
||||||
fn requires_subform(&self, name: &str) -> bool {
|
|
||||||
self.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.map(|item| {
|
|
||||||
item.type_ == "subform"
|
|
||||||
&& match item.referenced_data_form.as_ref() {
|
|
||||||
Some(refname) => refname == name,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(|&it| it)
|
|
||||||
.last()
|
|
||||||
.unwrap_or_default()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
||||||
let mut result = self
|
let mut result = self
|
||||||
.data_catalogues
|
.data_catalogues
|
||||||
@@ -318,7 +271,6 @@ impl Requires for Unterformular {
|
|||||||
None => Requirement::ExternalDataCatalogue(entry.to_string()),
|
None => Requirement::ExternalDataCatalogue(entry.to_string()),
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
result.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
|
|
||||||
let referenced_forms = &mut self
|
let referenced_forms = &mut self
|
||||||
.entries
|
.entries
|
||||||
@@ -339,33 +291,57 @@ impl Requires for Unterformular {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
referenced_forms.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
result.append(referenced_forms);
|
result.append(referenced_forms);
|
||||||
|
|
||||||
let sub_forms = &mut self
|
|
||||||
.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.filter(|&entry| entry.get_type() == "subform")
|
|
||||||
.filter_map(|entry| match &entry.referenced_data_form {
|
|
||||||
Some(name) => Some(name),
|
|
||||||
None => None,
|
|
||||||
})
|
|
||||||
.collect::<HashSet<_>>()
|
|
||||||
.into_iter()
|
|
||||||
.map(|entry| match all.find_data_form(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::DataFormSubform(contained),
|
|
||||||
None => match all.find_unterformular(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::UnterformularSubform(contained),
|
|
||||||
None => Requirement::ExternalUnterformularSubform(entry.to_string()),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
sub_forms.sort_unstable_by_key(|item| item.sorting_key());
|
|
||||||
result.append(sub_forms);
|
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
||||||
|
format!(
|
||||||
|
"{}\n{}",
|
||||||
|
self.to_listed_string(),
|
||||||
|
self.get_required_entries(all)
|
||||||
|
.iter()
|
||||||
|
.map(|entry| match entry {
|
||||||
|
Requirement::DataCatalogue(x) => {
|
||||||
|
let inner = x
|
||||||
|
.get_required_entries(all)
|
||||||
|
.iter()
|
||||||
|
.map(|inner_entry| match inner_entry {
|
||||||
|
Requirement::PropertyCatalogue(_) => Some(inner_entry.to_string()),
|
||||||
|
Requirement::ExternalPropertyCatalogue(_) => {
|
||||||
|
Some(inner_entry.to_string())
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.filter(Option::is_some)
|
||||||
|
.map(|item| format!(" - {}\n", item.unwrap()))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("");
|
||||||
|
|
||||||
|
if inner.is_empty() {
|
||||||
|
Some(format!(" + {}\n", x.to_listed_string()))
|
||||||
|
} else {
|
||||||
|
Some(format!(" + {}\n{}", x.to_listed_string(), inner))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Requirement::ExternalDataCatalogue(_) => {
|
||||||
|
Some(format!(" + {}\n", entry.to_string()))
|
||||||
|
}
|
||||||
|
Requirement::DataFormReference(_)
|
||||||
|
| Requirement::ExternalDataFormReference(_)
|
||||||
|
| Requirement::UnterformularReference(_)
|
||||||
|
| Requirement::ExternalUnterformularReference(_) => {
|
||||||
|
Some(format!(" > {}\n", entry.to_string()))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.filter(Option::is_some)
|
||||||
|
.flatten()
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("")
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FolderContent for Unterformular {
|
impl FolderContent for Unterformular {
|
||||||
@@ -557,7 +533,6 @@ pub struct Entry {
|
|||||||
#[serde(rename = "SeitenumbruchPatModul")]
|
#[serde(rename = "SeitenumbruchPatModul")]
|
||||||
seitenumbruch_pat_modul: bool,
|
seitenumbruch_pat_modul: bool,
|
||||||
#[serde(rename = "Kontaktliste")]
|
#[serde(rename = "Kontaktliste")]
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
kontaktliste: Option<String>,
|
kontaktliste: Option<String>,
|
||||||
#[serde(rename = "MarkierungIgnorieren")]
|
#[serde(rename = "MarkierungIgnorieren")]
|
||||||
markierung_ignorieren: bool,
|
markierung_ignorieren: bool,
|
||||||
|
|||||||
132
src/unzip_osb.rs
132
src/unzip_osb.rs
@@ -1,132 +0,0 @@
|
|||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
use console::style;
|
|
||||||
use deob::deobfuscate;
|
|
||||||
use std::{fs, io};
|
|
||||||
|
|
||||||
macro_rules! started {
|
|
||||||
( $o:expr ) => {
|
|
||||||
println!("{: <6}{}", style("[..]").cyan(), $o);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! ok {
|
|
||||||
( $o:expr ) => {
|
|
||||||
use console::Term;
|
|
||||||
let _ = Term::stdout().move_cursor_up(1);
|
|
||||||
println!("{: <6}{}", style("[OK]").green(), $o);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! error {
|
|
||||||
( $o:expr, $e:expr ) => {
|
|
||||||
use console::Term;
|
|
||||||
let _ = Term::stdout().move_cursor_up(1);
|
|
||||||
println!("{: <6}{} - Error: {}", style("[ERR]").red(), $o, $e);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn unzip_osb(path: &str) {
|
|
||||||
println!("Entpacke OSB-Datei {}\n", style(path).yellow());
|
|
||||||
|
|
||||||
let pw = deobfuscate(env!("OSB_KEY").trim());
|
|
||||||
|
|
||||||
let file = match fs::File::open(path) {
|
|
||||||
Ok(file) => file,
|
|
||||||
Err(err) => {
|
|
||||||
println!(
|
|
||||||
"{: <6}Abbruch! - Kann Datei nicht entpacken: {}",
|
|
||||||
style("[ERR]").red(),
|
|
||||||
err
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut archive = match zip::ZipArchive::new(file) {
|
|
||||||
Ok(file) => file,
|
|
||||||
Err(err) => {
|
|
||||||
println!(
|
|
||||||
"{: <6}Abbruch! - Kann Datei nicht entpacken: {}",
|
|
||||||
style("[ERR]").red(),
|
|
||||||
err
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
for i in 0..archive.len() {
|
|
||||||
let mut file = if let Ok(Ok(file)) = archive.by_index_decrypt(i, pw.as_bytes()) {
|
|
||||||
file
|
|
||||||
} else {
|
|
||||||
println!(
|
|
||||||
"{: <6}Abbruch! - Kann Datei nicht entpacken",
|
|
||||||
style("[ERR]").red()
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
let outpath = match file.enclosed_name() {
|
|
||||||
Some(path) => path.to_owned(),
|
|
||||||
None => continue,
|
|
||||||
};
|
|
||||||
|
|
||||||
started!(outpath.display());
|
|
||||||
|
|
||||||
if !file.is_dir() {
|
|
||||||
if let Some(p) = outpath.parent() {
|
|
||||||
if !p.exists() {
|
|
||||||
fs::create_dir_all(p).unwrap();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let mut outfile = match fs::File::create(&outpath) {
|
|
||||||
Ok(file) => file,
|
|
||||||
Err(err) => {
|
|
||||||
error!(outpath.display(), err);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
match io::copy(&mut file, &mut outfile) {
|
|
||||||
Ok(_) => {}
|
|
||||||
Err(err) => {
|
|
||||||
error!(outpath.display(), err);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ok!(outpath.display());
|
|
||||||
} else {
|
|
||||||
if !outpath.exists() {
|
|
||||||
match fs::create_dir_all(&outpath) {
|
|
||||||
Ok(_) => {}
|
|
||||||
Err(err) => {
|
|
||||||
error!(outpath.display(), err);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ok!(outpath.display());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user