Compare commits
	
		
			3 Commits
		
	
	
		
			de17ff12be
			...
			c21ba2fa39
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c21ba2fa39 | |||
| f7fc3229ed | |||
| 101dcbb649 | 
							
								
								
									
										305
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										305
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -1,10 +1,21 @@ | |||||||
| # This file is automatically @generated by Cargo. | # This file is automatically @generated by Cargo. | ||||||
| # It is not intended for manual editing. | # It is not intended for manual editing. | ||||||
|  | [[package]] | ||||||
|  | name = "addr2line" | ||||||
|  | version = "0.14.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" | ||||||
|  | dependencies = [ | ||||||
|  |  "gimli", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "adduser" | name = "adduser" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  |  "assert_cli", | ||||||
|  "chrono", |  "chrono", | ||||||
|  |  "clap", | ||||||
|  "derive_builder", |  "derive_builder", | ||||||
|  "env_logger", |  "env_logger", | ||||||
|  "lazy_static", |  "lazy_static", | ||||||
| @ -14,6 +25,12 @@ dependencies = [ | |||||||
|  "tempfile", |  "tempfile", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "adler" | ||||||
|  | version = "0.2.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "aho-corasick" | name = "aho-corasick" | ||||||
| version = "0.7.13" | version = "0.7.13" | ||||||
| @ -23,6 +40,20 @@ dependencies = [ | |||||||
|  "memchr", |  "memchr", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "assert_cli" | ||||||
|  | version = "0.6.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "a29ab7c0ed62970beb0534d637a8688842506d0ff9157de83286dacd065c8149" | ||||||
|  | dependencies = [ | ||||||
|  |  "colored", | ||||||
|  |  "difference", | ||||||
|  |  "environment", | ||||||
|  |  "failure", | ||||||
|  |  "failure_derive", | ||||||
|  |  "serde_json", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "atty" | name = "atty" | ||||||
| version = "0.2.14" | version = "0.2.14" | ||||||
| @ -40,12 +71,38 @@ 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 = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "backtrace" | ||||||
|  | version = "0.3.54" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "2baad346b2d4e94a24347adeee9c7a93f412ee94b9cc26e5b59dea23848e9f28" | ||||||
|  | dependencies = [ | ||||||
|  |  "addr2line", | ||||||
|  |  "cfg-if 1.0.0", | ||||||
|  |  "libc", | ||||||
|  |  "miniz_oxide", | ||||||
|  |  "object", | ||||||
|  |  "rustc-demangle", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "bitflags" | ||||||
|  | version = "1.2.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "cfg-if" | name = "cfg-if" | ||||||
| version = "0.1.10" | 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 = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "cfg-if" | ||||||
|  | version = "1.0.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "chrono" | name = "chrono" | ||||||
| version = "0.4.19" | version = "0.4.19" | ||||||
| @ -59,6 +116,49 @@ dependencies = [ | |||||||
|  "winapi", |  "winapi", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "clap" | ||||||
|  | version = "3.0.0-beta.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" | ||||||
|  | dependencies = [ | ||||||
|  |  "atty", | ||||||
|  |  "bitflags", | ||||||
|  |  "clap_derive", | ||||||
|  |  "indexmap", | ||||||
|  |  "lazy_static", | ||||||
|  |  "os_str_bytes", | ||||||
|  |  "strsim 0.10.0", | ||||||
|  |  "termcolor", | ||||||
|  |  "textwrap", | ||||||
|  |  "unicode-width", | ||||||
|  |  "vec_map", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "clap_derive" | ||||||
|  | version = "3.0.0-beta.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" | ||||||
|  | dependencies = [ | ||||||
|  |  "heck", | ||||||
|  |  "proc-macro-error", | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "colored" | ||||||
|  | version = "1.9.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" | ||||||
|  | dependencies = [ | ||||||
|  |  "atty", | ||||||
|  |  "lazy_static", | ||||||
|  |  "winapi", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "darling" | name = "darling" | ||||||
| version = "0.10.2" | version = "0.10.2" | ||||||
| @ -79,7 +179,7 @@ dependencies = [ | |||||||
|  "ident_case", |  "ident_case", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "strsim", |  "strsim 0.9.3", | ||||||
|  "syn", |  "syn", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| @ -119,6 +219,12 @@ dependencies = [ | |||||||
|  "syn", |  "syn", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "difference" | ||||||
|  | version = "2.0.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "env_logger" | name = "env_logger" | ||||||
| version = "0.8.1" | version = "0.8.1" | ||||||
| @ -132,6 +238,34 @@ dependencies = [ | |||||||
|  "termcolor", |  "termcolor", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "environment" | ||||||
|  | version = "0.1.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "1f4b14e20978669064c33b4c1e0fb4083412e40fe56cbea2eae80fd7591503ee" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "failure" | ||||||
|  | version = "0.1.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" | ||||||
|  | dependencies = [ | ||||||
|  |  "backtrace", | ||||||
|  |  "failure_derive", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "failure_derive" | ||||||
|  | version = "0.1.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn", | ||||||
|  |  "synstructure", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "fnv" | name = "fnv" | ||||||
| version = "1.0.7" | version = "1.0.7" | ||||||
| @ -144,11 +278,32 @@ version = "0.1.15" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" | checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if 0.1.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "wasi 0.9.0+wasi-snapshot-preview1", |  "wasi 0.9.0+wasi-snapshot-preview1", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "gimli" | ||||||
|  | version = "0.23.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "hashbrown" | ||||||
|  | version = "0.9.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "heck" | ||||||
|  | version = "0.3.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-segmentation", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "hermit-abi" | name = "hermit-abi" | ||||||
| version = "0.1.17" | version = "0.1.17" | ||||||
| @ -170,6 +325,22 @@ 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 = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "indexmap" | ||||||
|  | version = "1.6.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" | ||||||
|  | dependencies = [ | ||||||
|  |  "autocfg", | ||||||
|  |  "hashbrown", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "itoa" | ||||||
|  | version = "0.4.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "lazy_static" | name = "lazy_static" | ||||||
| version = "1.4.0" | version = "1.4.0" | ||||||
| @ -188,7 +359,7 @@ version = "0.4.11" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" | checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if 0.1.10", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| @ -197,6 +368,16 @@ version = "2.3.3" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" | checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "miniz_oxide" | ||||||
|  | version = "0.4.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" | ||||||
|  | dependencies = [ | ||||||
|  |  "adler", | ||||||
|  |  "autocfg", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "num-integer" | name = "num-integer" | ||||||
| version = "0.1.43" | version = "0.1.43" | ||||||
| @ -216,12 +397,48 @@ dependencies = [ | |||||||
|  "autocfg", |  "autocfg", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "object" | ||||||
|  | version = "0.22.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "os_str_bytes" | ||||||
|  | version = "2.4.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "ppv-lite86" | name = "ppv-lite86" | ||||||
| version = "0.2.10" | version = "0.2.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" | checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" | ||||||
| 
 | 
 | ||||||
|  | [[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]] | [[package]] | ||||||
| name = "proc-macro2" | name = "proc-macro2" | ||||||
| version = "1.0.24" | version = "1.0.24" | ||||||
| @ -314,6 +531,35 @@ dependencies = [ | |||||||
|  "winapi", |  "winapi", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "rustc-demangle" | ||||||
|  | version = "0.1.18" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "ryu" | ||||||
|  | version = "1.0.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "serde" | ||||||
|  | version = "1.0.117" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "serde_json" | ||||||
|  | version = "1.0.59" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" | ||||||
|  | dependencies = [ | ||||||
|  |  "itoa", | ||||||
|  |  "ryu", | ||||||
|  |  "serde", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "simplelog" | name = "simplelog" | ||||||
| version = "0.8.0" | version = "0.8.0" | ||||||
| @ -331,6 +577,12 @@ version = "0.9.3" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "strsim" | ||||||
|  | version = "0.10.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "syn" | name = "syn" | ||||||
| version = "1.0.48" | version = "1.0.48" | ||||||
| @ -342,13 +594,25 @@ dependencies = [ | |||||||
|  "unicode-xid", |  "unicode-xid", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "synstructure" | ||||||
|  | version = "0.12.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn", | ||||||
|  |  "unicode-xid", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "tempfile" | name = "tempfile" | ||||||
| version = "3.1.0" | version = "3.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" | checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if 0.1.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "rand", |  "rand", | ||||||
|  "redox_syscall", |  "redox_syscall", | ||||||
| @ -365,6 +629,15 @@ dependencies = [ | |||||||
|  "winapi-util", |  "winapi-util", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "textwrap" | ||||||
|  | version = "0.12.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-width", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "thread_local" | name = "thread_local" | ||||||
| version = "1.0.1" | version = "1.0.1" | ||||||
| @ -385,12 +658,36 @@ dependencies = [ | |||||||
|  "winapi", |  "winapi", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-segmentation" | ||||||
|  | version = "1.6.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-width" | ||||||
|  | version = "0.1.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "unicode-xid" | name = "unicode-xid" | ||||||
| version = "0.2.1" | version = "0.2.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "vec_map" | ||||||
|  | version = "0.8.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "version_check" | ||||||
|  | version = "0.9.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasi" | name = "wasi" | ||||||
| version = "0.9.0+wasi-snapshot-preview1" | version = "0.9.0+wasi-snapshot-preview1" | ||||||
|  | |||||||
| @ -20,6 +20,13 @@ simplelog = "0.8" | |||||||
| chrono = "0.4" | chrono = "0.4" | ||||||
| env_logger = "0.8" | env_logger = "0.8" | ||||||
| derive_builder = "0.9" | derive_builder = "0.9" | ||||||
|  | clap = "3.0.0-beta" | ||||||
|  | assert_cli = "0.6" | ||||||
| 
 | 
 | ||||||
| [dev-dependencies] | [dev-dependencies] | ||||||
| tempfile = "3.1" | tempfile = "3.1" | ||||||
|  | 
 | ||||||
|  | # optimize for size at cost of compilation speed. | ||||||
|  | [profile.release] | ||||||
|  | lto = true | ||||||
|  | codegen-units = 1 | ||||||
| @ -1,10 +1,48 @@ | |||||||
| use std::path::PathBuf; | use std::path::PathBuf; | ||||||
| 
 | 
 | ||||||
| extern crate adduser; | extern crate clap; | ||||||
| use adduser::api::UserDBWrite; | use clap::{App, Arg}; | ||||||
| 
 | 
 | ||||||
| fn main() { | extern crate adduser; | ||||||
|  | use adduser::{api::UserDBWrite, UserLibError}; | ||||||
|  | 
 | ||||||
|  | fn main() -> Result<(), UserLibError> { | ||||||
|     env_logger::init(); |     env_logger::init(); | ||||||
|  |     let matches = App::new("Create a new linux user") | ||||||
|  |         .version("0.1.0") | ||||||
|  |         .author("Franz Dietrich <dietrich@teilgedanken.de>") | ||||||
|  |         .about("Create a linux user do not use this in production (yet)") | ||||||
|  |         .arg( | ||||||
|  |             Arg::new("username") | ||||||
|  |                 .value_name("USERNAME") | ||||||
|  |                 .about("the new users name") | ||||||
|  |                 .takes_value(true) | ||||||
|  |                 .required(true), | ||||||
|  |         ) /* | ||||||
|  |         .arg( | ||||||
|  |             Arg::new("INPUT") | ||||||
|  |                 .about("Sets the input file to use") | ||||||
|  |                 .required(true) | ||||||
|  |                 .index(1), | ||||||
|  |         ) | ||||||
|  |         .arg( | ||||||
|  |             Arg::new("v") | ||||||
|  |                 .short('v') | ||||||
|  |                 .multiple(true) | ||||||
|  |                 .about("Sets the level of verbosity"), | ||||||
|  |         ) | ||||||
|  |         .subcommand( | ||||||
|  |             App::new("test") | ||||||
|  |                 .about("controls testing features") | ||||||
|  |                 .version("1.3") | ||||||
|  |                 .author("Someone E. <someone_else@other.com>") | ||||||
|  |                 .arg( | ||||||
|  |                     Arg::new("debug") | ||||||
|  |                         .short('d') | ||||||
|  |                         .about("print debug information verbosely"), | ||||||
|  |                 ), | ||||||
|  |         )*/ | ||||||
|  |         .get_matches(); | ||||||
| 
 | 
 | ||||||
|     let mf = adduser::Files { |     let mf = adduser::Files { | ||||||
|         passwd: Some(PathBuf::from("./passwd")), |         passwd: Some(PathBuf::from("./passwd")), | ||||||
| @ -14,20 +52,14 @@ fn main() { | |||||||
| 
 | 
 | ||||||
|     let mut db = adduser::UserDBLocal::load_files(mf).unwrap(); |     let mut db = adduser::UserDBLocal::load_files(mf).unwrap(); | ||||||
| 
 | 
 | ||||||
|     let _user_res: Result<&adduser::User, adduser::UserLibError> = db.new_user( |     match db.new_user( | ||||||
|         adduser::api::CreateUserArgs::builder() |         adduser::api::CreateUserArgs::builder() | ||||||
|             .username("teste") |             .username(matches.value_of("username").unwrap()) | ||||||
|             // .delete_home(adduser::api::DeleteHome::Delete)
 |             // .delete_home(adduser::api::DeleteHome::Delete)
 | ||||||
|             .build() |             .build() | ||||||
|             .unwrap(), |             .unwrap(), | ||||||
|     ); |     ) { | ||||||
| 
 |         Ok(_) => Ok(()), | ||||||
|     let user = adduser::User::default() |         Err(e) => Err(e), | ||||||
|         .username("fest".into()) |     } | ||||||
|         .shell_path("/bin/mash".into()) |  | ||||||
|         .clone(); |  | ||||||
| 
 |  | ||||||
|     println!("{}", user); |  | ||||||
| 
 |  | ||||||
|     //db.new_user().expect("failed to create the user");
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,4 +1,3 @@ | |||||||
| #![feature(option_expect_none)] |  | ||||||
| #![warn(
 | #![warn(
 | ||||||
|     clippy::all, |     clippy::all, | ||||||
|     //clippy::restriction,
 |     //clippy::restriction,
 | ||||||
| @ -8,6 +7,7 @@ | |||||||
| )] | )] | ||||||
| //#![allow(clippy::non_ascii_literal)]
 | //#![allow(clippy::non_ascii_literal)]
 | ||||||
| #![allow(clippy::missing_errors_doc)] | #![allow(clippy::missing_errors_doc)] | ||||||
|  | #![allow(clippy::clippy::multiple_crate_versions)] | ||||||
| 
 | 
 | ||||||
| #[macro_use] | #[macro_use] | ||||||
| extern crate lazy_static; | extern crate lazy_static; | ||||||
|  | |||||||
| @ -235,9 +235,10 @@ impl UserDBWrite for UserDBLocal { | |||||||
|                     opened.expect("failed to lock files!"); |                     opened.expect("failed to lock files!"); | ||||||
|                 dbg!(&locked_p); |                 dbg!(&locked_p); | ||||||
|                 locked_p.append(format!("{}", new_user))?; |                 locked_p.append(format!("{}", new_user))?; | ||||||
|                 self.users |                 assert!(self | ||||||
|  |                     .users | ||||||
|                     .insert(args.username.to_owned(), new_user) |                     .insert(args.username.to_owned(), new_user) | ||||||
|                     .expect_none("Is always none"); |                     .is_none()); | ||||||
|                 self.users |                 self.users | ||||||
|                     .get(args.username) |                     .get(args.username) | ||||||
|                     .map_or_else(|| Err("User was not successfully added!".into()), Ok) |                     .map_or_else(|| Err("User was not successfully added!".into()), Ok) | ||||||
|  | |||||||
| @ -40,3 +40,44 @@ fn test_create_user_function() { | |||||||
|     } |     } | ||||||
|     assert!(pf2.lines().last().unwrap().starts_with("test2")); |     assert!(pf2.lines().last().unwrap().starts_with("test2")); | ||||||
| } | } | ||||||
|  | #[test] | ||||||
|  | fn test_create_user_binary() { | ||||||
|  |     use testfiles::Fixture; | ||||||
|  | 
 | ||||||
|  |     use adduser::api::UserDBWrite; | ||||||
|  |     use adduser::api::UserRead; | ||||||
|  |     use std::fs; | ||||||
|  | 
 | ||||||
|  |     let p = Fixture::copy("passwd"); | ||||||
|  |     let s = Fixture::copy("shadow"); | ||||||
|  |     let g = Fixture::copy("group"); | ||||||
|  | 
 | ||||||
|  |     dbg!(&p, &s, &g); | ||||||
|  | 
 | ||||||
|  |     let pf = fs::read_to_string(&p.path).unwrap(); | ||||||
|  | 
 | ||||||
|  |     let mf = adduser::Files { | ||||||
|  |         passwd: Some(p.path.clone()), | ||||||
|  |         shadow: Some(s.path), | ||||||
|  |         group: Some(g.path), | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     let mut db = adduser::UserDBLocal::load_files(mf).unwrap(); | ||||||
|  | 
 | ||||||
|  |     let user_res: Result<&adduser::User, adduser::UserLibError> = db.new_user( | ||||||
|  |         adduser::api::CreateUserArgs::builder() | ||||||
|  |             .username("test2") | ||||||
|  |             // .delete_home(adduser::api::DeleteHome::Delete)
 | ||||||
|  |             .build() | ||||||
|  |             .unwrap(), | ||||||
|  |     ); | ||||||
|  |     let pf2 = fs::read_to_string(&p.path).unwrap(); | ||||||
|  |     assert_eq!(user_res.unwrap().get_username().unwrap(), "test2"); | ||||||
|  |     let pflines = pf.lines(); | ||||||
|  |     let pflines2 = pf2.lines(); | ||||||
|  |     for (l1, l2) in pflines.zip(pflines2) { | ||||||
|  |         dbg!(l1, l2); | ||||||
|  |         assert!(l1 == l2); | ||||||
|  |     } | ||||||
|  |     assert!(pf2.lines().last().unwrap().starts_with("test2")); | ||||||
|  | } | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ use tempfile::TempDir; | |||||||
| 
 | 
 | ||||||
| use std::ops::Deref; | use std::ops::Deref; | ||||||
| 
 | 
 | ||||||
|  | #[derive(Debug)] | ||||||
| pub struct Fixture { | pub struct Fixture { | ||||||
|     pub path: PathBuf, |     pub path: PathBuf, | ||||||
|     pub source: PathBuf, |     pub source: PathBuf, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user