Update CLI dependencies, rewrite with Clap's Derive API.
This commit is contained in:
		
							parent
							
								
									3a466adedc
								
							
						
					
					
						commit
						9db7f4f1b2
					
				| 
						 | 
				
			
			@ -2,20 +2,11 @@
 | 
			
		|||
# It is not intended for manual editing.
 | 
			
		||||
version = 3
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ansi_term"
 | 
			
		||||
version = "0.11.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "winapi",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "assert_cmd"
 | 
			
		||||
version = "2.0.1"
 | 
			
		||||
version = "2.0.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "b800c4403e8105d959595e1f88119e78bc12bc874c4336973658b648a746ba93"
 | 
			
		||||
checksum = "93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bstr",
 | 
			
		||||
 "doc-comment",
 | 
			
		||||
| 
						 | 
				
			
			@ -38,9 +29,9 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bitflags"
 | 
			
		||||
version = "1.2.1"
 | 
			
		||||
version = "1.3.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
 | 
			
		||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bstr"
 | 
			
		||||
| 
						 | 
				
			
			@ -55,17 +46,39 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap"
 | 
			
		||||
version = "2.33.3"
 | 
			
		||||
version = "4.0.7"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
 | 
			
		||||
checksum = "0a1af219c3e254a8b4649d6ddaef886b2015089f35f2ac5e1db31410c0566ab8"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "ansi_term",
 | 
			
		||||
 "atty",
 | 
			
		||||
 "bitflags",
 | 
			
		||||
 "clap_derive",
 | 
			
		||||
 "clap_lex",
 | 
			
		||||
 "once_cell",
 | 
			
		||||
 "strsim",
 | 
			
		||||
 "textwrap",
 | 
			
		||||
 "unicode-width",
 | 
			
		||||
 "vec_map",
 | 
			
		||||
 "termcolor",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap_derive"
 | 
			
		||||
version = "4.0.7"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "cd114ae53ce5a0670f43d2f169c1cd26c69b4896b0c121900cf1e4d06d67316c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "heck",
 | 
			
		||||
 "proc-macro-error",
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap_lex"
 | 
			
		||||
version = "0.3.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "os_str_bytes",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
| 
						 | 
				
			
			@ -82,15 +95,15 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "either"
 | 
			
		||||
version = "1.6.1"
 | 
			
		||||
version = "1.8.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 | 
			
		||||
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hard-xml"
 | 
			
		||||
version = "1.10.0"
 | 
			
		||||
version = "1.13.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8c049a5d5186e83c3cf139192e81ab9d06c6b20d18c8aa06b38f3f6a5ece8703"
 | 
			
		||||
checksum = "3477ce594ff6d821c38fc3f8d28744b9bac0340c94b152ebb0f8a1fd5b740f54"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "hard-xml-derive",
 | 
			
		||||
 "jetscii",
 | 
			
		||||
| 
						 | 
				
			
			@ -101,9 +114,9 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hard-xml-derive"
 | 
			
		||||
version = "1.10.0"
 | 
			
		||||
version = "1.13.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d24cec6f13bd2423158425bdb5f5ba0f2ddf7d7c2a825c0fdbf20c513df49725"
 | 
			
		||||
checksum = "3aa4585e2b133d2479ff3f03febd76972234cc04b40cdb374fab11a7f7b797ca"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
| 
						 | 
				
			
			@ -111,34 +124,40 @@ dependencies = [
 | 
			
		|||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hermit-abi"
 | 
			
		||||
version = "0.1.15"
 | 
			
		||||
name = "heck"
 | 
			
		||||
version = "0.4.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
 | 
			
		||||
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hermit-abi"
 | 
			
		||||
version = "0.1.19"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "itertools"
 | 
			
		||||
version = "0.10.1"
 | 
			
		||||
version = "0.10.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
 | 
			
		||||
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "either",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "itoa"
 | 
			
		||||
version = "0.4.6"
 | 
			
		||||
version = "1.0.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
 | 
			
		||||
checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "jetscii"
 | 
			
		||||
version = "0.5.1"
 | 
			
		||||
version = "0.5.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "c9447923c57a8a2d5c1b0875cdf96a6324275df728b498f2ede0e5cbde088a15"
 | 
			
		||||
checksum = "47f142fe24a9c9944451e8349de0a56af5f3e7226dc46f3ed4d4ecc0b85af75e"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "lazy_static"
 | 
			
		||||
| 
						 | 
				
			
			@ -148,15 +167,21 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "libc"
 | 
			
		||||
version = "0.2.76"
 | 
			
		||||
version = "0.2.134"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3"
 | 
			
		||||
checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "memchr"
 | 
			
		||||
version = "2.4.1"
 | 
			
		||||
version = "2.5.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
 | 
			
		||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "once_cell"
 | 
			
		||||
version = "1.15.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "opml"
 | 
			
		||||
| 
						 | 
				
			
			@ -179,10 +204,16 @@ dependencies = [
 | 
			
		|||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "predicates"
 | 
			
		||||
version = "2.0.2"
 | 
			
		||||
name = "os_str_bytes"
 | 
			
		||||
version = "6.3.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "c143348f141cc87aab5b950021bac6145d0e5ae754b0591de23244cee42c9308"
 | 
			
		||||
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "predicates"
 | 
			
		||||
version = "2.1.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "difflib",
 | 
			
		||||
 "itertools",
 | 
			
		||||
| 
						 | 
				
			
			@ -191,34 +222,58 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "predicates-core"
 | 
			
		||||
version = "1.0.0"
 | 
			
		||||
version = "1.0.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178"
 | 
			
		||||
checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "predicates-tree"
 | 
			
		||||
version = "1.0.0"
 | 
			
		||||
version = "1.0.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124"
 | 
			
		||||
checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "predicates-core",
 | 
			
		||||
 "treeline",
 | 
			
		||||
 "termtree",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "proc-macro-error"
 | 
			
		||||
version = "1.0.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro-error-attr",
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "version_check",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "proc-macro-error-attr"
 | 
			
		||||
version = "1.0.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "version_check",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "proc-macro2"
 | 
			
		||||
version = "1.0.24"
 | 
			
		||||
version = "1.0.46"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
 | 
			
		||||
checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "unicode-xid",
 | 
			
		||||
 "unicode-ident",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "quote"
 | 
			
		||||
version = "1.0.7"
 | 
			
		||||
version = "1.0.21"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
 | 
			
		||||
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -231,24 +286,24 @@ checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ryu"
 | 
			
		||||
version = "1.0.5"
 | 
			
		||||
version = "1.0.11"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
 | 
			
		||||
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde"
 | 
			
		||||
version = "1.0.130"
 | 
			
		||||
version = "1.0.145"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
 | 
			
		||||
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "serde_derive",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde_derive"
 | 
			
		||||
version = "1.0.130"
 | 
			
		||||
version = "1.0.145"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
 | 
			
		||||
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
| 
						 | 
				
			
			@ -257,9 +312,9 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde_json"
 | 
			
		||||
version = "1.0.68"
 | 
			
		||||
version = "1.0.85"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8"
 | 
			
		||||
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "itoa",
 | 
			
		||||
 "ryu",
 | 
			
		||||
| 
						 | 
				
			
			@ -268,44 +323,50 @@ dependencies = [
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "strsim"
 | 
			
		||||
version = "0.8.0"
 | 
			
		||||
version = "0.10.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
 | 
			
		||||
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "syn"
 | 
			
		||||
version = "1.0.64"
 | 
			
		||||
version = "1.0.101"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "3fd9d1e9976102a03c542daa2eff1b43f9d72306342f3f8b3ed5fb8908195d6f"
 | 
			
		||||
checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "unicode-xid",
 | 
			
		||||
 "unicode-ident",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "textwrap"
 | 
			
		||||
version = "0.11.0"
 | 
			
		||||
name = "termcolor"
 | 
			
		||||
version = "1.1.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
 | 
			
		||||
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "unicode-width",
 | 
			
		||||
 "winapi-util",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "termtree"
 | 
			
		||||
version = "0.2.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "thiserror"
 | 
			
		||||
version = "1.0.29"
 | 
			
		||||
version = "1.0.37"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88"
 | 
			
		||||
checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "thiserror-impl",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "thiserror-impl"
 | 
			
		||||
version = "1.0.29"
 | 
			
		||||
version = "1.0.37"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c"
 | 
			
		||||
checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
| 
						 | 
				
			
			@ -313,28 +374,16 @@ dependencies = [
 | 
			
		|||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "treeline"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
name = "unicode-ident"
 | 
			
		||||
version = "1.0.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
 | 
			
		||||
checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-width"
 | 
			
		||||
version = "0.1.8"
 | 
			
		||||
name = "version_check"
 | 
			
		||||
version = "0.9.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-xid"
 | 
			
		||||
version = "0.2.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "vec_map"
 | 
			
		||||
version = "0.8.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
 | 
			
		||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "wait-timeout"
 | 
			
		||||
| 
						 | 
				
			
			@ -361,6 +410,15 @@ version = "0.4.0"
 | 
			
		|||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "winapi-util"
 | 
			
		||||
version = "0.1.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "winapi",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "winapi-x86_64-pc-windows-gnu"
 | 
			
		||||
version = "0.4.0"
 | 
			
		||||
| 
						 | 
				
			
			@ -369,6 +427,6 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 | 
			
		|||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "xmlparser"
 | 
			
		||||
version = "0.13.2"
 | 
			
		||||
version = "0.13.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "52613e655f6f11f63c0fe7d1c3b5ef69e44d96df9b65dab296b441ed0e1125f5"
 | 
			
		||||
checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,13 +2,13 @@
 | 
			
		|||
 | 
			
		||||
[package]
 | 
			
		||||
name = "opml_cli"
 | 
			
		||||
description = "An OPML parser for the command-line."
 | 
			
		||||
description = "OPML for the command-line."
 | 
			
		||||
version = "1.1.4"
 | 
			
		||||
authors = ["Holllo <helllo@holllo.cc>"]
 | 
			
		||||
license = "MIT OR Apache-2.0"
 | 
			
		||||
repository = "https://github.com/Holllo/opml"
 | 
			
		||||
readme = "../README.md"
 | 
			
		||||
edition = "2018"
 | 
			
		||||
edition = "2021"
 | 
			
		||||
keywords = ["xml", "opml"]
 | 
			
		||||
 | 
			
		||||
[[bin]]
 | 
			
		||||
| 
						 | 
				
			
			@ -16,16 +16,19 @@ name = "opml"
 | 
			
		|||
path = "source/main.rs"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
clap = "2.33.3"
 | 
			
		||||
serde_json = "1.0.68"
 | 
			
		||||
serde_json = "1.0.85"
 | 
			
		||||
 | 
			
		||||
[dependencies.clap]
 | 
			
		||||
version = "4.0.7"
 | 
			
		||||
features = ["derive"]
 | 
			
		||||
 | 
			
		||||
[dependencies.opml]
 | 
			
		||||
path = "../opml_api"
 | 
			
		||||
version = "1.1.4"
 | 
			
		||||
 | 
			
		||||
[dependencies.serde]
 | 
			
		||||
version = "1.0.130"
 | 
			
		||||
version = "1.0.145"
 | 
			
		||||
features = ["derive"]
 | 
			
		||||
 | 
			
		||||
[dev-dependencies]
 | 
			
		||||
assert_cmd = "2.0.1"
 | 
			
		||||
assert_cmd = "2.0.4"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,70 +1,43 @@
 | 
			
		|||
use std::fs::read_to_string;
 | 
			
		||||
use std::{fs::read_to_string, path::PathBuf};
 | 
			
		||||
 | 
			
		||||
use clap::{
 | 
			
		||||
  crate_authors, crate_description, crate_version, App, Arg, ArgGroup,
 | 
			
		||||
};
 | 
			
		||||
use clap::Parser;
 | 
			
		||||
use opml::{Outline, OPML};
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Parser)]
 | 
			
		||||
#[clap(about, author, version)]
 | 
			
		||||
struct Args {
 | 
			
		||||
  /// The OPML file to parse.
 | 
			
		||||
  #[clap(short, long)]
 | 
			
		||||
  file: PathBuf,
 | 
			
		||||
 | 
			
		||||
  /// Output the OPML as JSON.
 | 
			
		||||
  #[clap(long, group = "format", required = true)]
 | 
			
		||||
  json: bool,
 | 
			
		||||
 | 
			
		||||
  /// Output the OPML as pretty-printed JSON.
 | 
			
		||||
  #[clap(long, group = "format", required = true)]
 | 
			
		||||
  json_pretty: bool,
 | 
			
		||||
 | 
			
		||||
  /// Only output the outline text and xmlUrl attributes when both are present
 | 
			
		||||
  /// in the outline element.
 | 
			
		||||
  #[clap(long, group = "format", required = true)]
 | 
			
		||||
  rss: bool,
 | 
			
		||||
 | 
			
		||||
  /// Print extra information while running.
 | 
			
		||||
  #[clap(long)]
 | 
			
		||||
  verbose: bool,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
  let cli = App::new("OPML CLI")
 | 
			
		||||
    .about(crate_description!())
 | 
			
		||||
    .author(crate_authors!())
 | 
			
		||||
    .version(crate_version!())
 | 
			
		||||
    .args(&[
 | 
			
		||||
      // Format flags.
 | 
			
		||||
      Arg::with_name("json")
 | 
			
		||||
        .long("json")
 | 
			
		||||
        .long_help("Output the OPML as JSON.")
 | 
			
		||||
        .takes_value(false),
 | 
			
		||||
      Arg::with_name("json pretty")
 | 
			
		||||
        .long("json-pretty")
 | 
			
		||||
        .long_help("Output the OPML as pretty-printed JSON.")
 | 
			
		||||
        .takes_value(false),
 | 
			
		||||
      Arg::with_name("rss")
 | 
			
		||||
        .long("rss")
 | 
			
		||||
        .long_help(
 | 
			
		||||
          "Only output the outline text and xmlUrl attributes \
 | 
			
		||||
          when both are present in the outline element.",
 | 
			
		||||
        )
 | 
			
		||||
        .takes_value(false),
 | 
			
		||||
      // Boolean flags.
 | 
			
		||||
      Arg::with_name("verbose")
 | 
			
		||||
        .long("verbose")
 | 
			
		||||
        .long_help("Print extra information while running.")
 | 
			
		||||
        .takes_value(false),
 | 
			
		||||
      // Options that are only allowed once.
 | 
			
		||||
      Arg::with_name("file")
 | 
			
		||||
        .long("file")
 | 
			
		||||
        .long_help("The OPML file to parse.")
 | 
			
		||||
        .required(true)
 | 
			
		||||
        .short("f")
 | 
			
		||||
        .takes_value(true),
 | 
			
		||||
    ])
 | 
			
		||||
    .group(
 | 
			
		||||
      ArgGroup::with_name("format")
 | 
			
		||||
        .args(&["json", "json pretty", "rss"])
 | 
			
		||||
        .required(true),
 | 
			
		||||
    )
 | 
			
		||||
    .get_matches();
 | 
			
		||||
 | 
			
		||||
  // Extract format flags.
 | 
			
		||||
  let json = cli.is_present("json");
 | 
			
		||||
  let json_pretty = cli.is_present("json pretty");
 | 
			
		||||
  let rss = cli.is_present("rss");
 | 
			
		||||
 | 
			
		||||
  // Extract boolean flags.
 | 
			
		||||
  let verbose = cli.is_present("verbose");
 | 
			
		||||
 | 
			
		||||
  // Extract the various options.
 | 
			
		||||
  let file = cli.value_of("file").unwrap();
 | 
			
		||||
  let args = Args::parse();
 | 
			
		||||
 | 
			
		||||
  // Read the file to string.
 | 
			
		||||
  let xml = read_to_string(file).expect("Failed to read OPML file");
 | 
			
		||||
  let xml = read_to_string(args.file).expect("Failed to read OPML file");
 | 
			
		||||
 | 
			
		||||
  // Parse the OPML from the read file.
 | 
			
		||||
  let opml = OPML::from_str(&xml).expect("Failed to parse OPML file");
 | 
			
		||||
 | 
			
		||||
  if rss {
 | 
			
		||||
  if args.rss {
 | 
			
		||||
    // Get all the outlines from the OPML document.
 | 
			
		||||
    let outlines = extract_all_outlines(&opml.body.outlines);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -73,19 +46,19 @@ fn main() {
 | 
			
		|||
      if let Some(xml_url) = outline.xml_url {
 | 
			
		||||
        println!("{}", outline.text);
 | 
			
		||||
        println!("{}", xml_url);
 | 
			
		||||
      } else if verbose {
 | 
			
		||||
      } else if args.verbose {
 | 
			
		||||
        println!(
 | 
			
		||||
          "Skipping \"{}\" because it did not have an xmlUrl attribute.",
 | 
			
		||||
          outline.text
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else if json {
 | 
			
		||||
  } else if args.json {
 | 
			
		||||
    println!(
 | 
			
		||||
      "{}",
 | 
			
		||||
      serde_json::to_string(&opml).expect("Failed to convert OPML to JSON")
 | 
			
		||||
    );
 | 
			
		||||
  } else if json_pretty {
 | 
			
		||||
  } else if args.json_pretty {
 | 
			
		||||
    println!(
 | 
			
		||||
      "{}",
 | 
			
		||||
      serde_json::to_string_pretty(&opml)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue