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. | ||||
| # 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]] | ||||
| name = "adduser" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "assert_cli", | ||||
|  "chrono", | ||||
|  "clap", | ||||
|  "derive_builder", | ||||
|  "env_logger", | ||||
|  "lazy_static", | ||||
| @ -14,6 +25,12 @@ dependencies = [ | ||||
|  "tempfile", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "adler" | ||||
| version = "0.2.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "aho-corasick" | ||||
| version = "0.7.13" | ||||
| @ -23,6 +40,20 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "atty" | ||||
| version = "0.2.14" | ||||
| @ -40,12 +71,38 @@ version = "1.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 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]] | ||||
| name = "cfg-if" | ||||
| version = "0.1.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cfg-if" | ||||
| version = "1.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "chrono" | ||||
| version = "0.4.19" | ||||
| @ -59,6 +116,49 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "darling" | ||||
| version = "0.10.2" | ||||
| @ -79,7 +179,7 @@ dependencies = [ | ||||
|  "ident_case", | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "strsim", | ||||
|  "strsim 0.9.3", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| @ -119,6 +219,12 @@ dependencies = [ | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "difference" | ||||
| version = "2.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "env_logger" | ||||
| version = "0.8.1" | ||||
| @ -132,6 +238,34 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "fnv" | ||||
| version = "1.0.7" | ||||
| @ -144,11 +278,32 @@ version = "0.1.15" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "cfg-if 0.1.10", | ||||
|  "libc", | ||||
|  "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]] | ||||
| name = "hermit-abi" | ||||
| version = "0.1.17" | ||||
| @ -170,6 +325,22 @@ version = "1.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 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]] | ||||
| name = "lazy_static" | ||||
| version = "1.4.0" | ||||
| @ -188,7 +359,7 @@ version = "0.4.11" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "cfg-if 0.1.10", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| @ -197,6 +368,16 @@ version = "2.3.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 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]] | ||||
| name = "num-integer" | ||||
| version = "0.1.43" | ||||
| @ -216,12 +397,48 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "ppv-lite86" | ||||
| version = "0.2.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 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]] | ||||
| name = "proc-macro2" | ||||
| version = "1.0.24" | ||||
| @ -314,6 +531,35 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "simplelog" | ||||
| version = "0.8.0" | ||||
| @ -331,6 +577,12 @@ version = "0.9.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "strsim" | ||||
| version = "0.10.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "syn" | ||||
| version = "1.0.48" | ||||
| @ -342,13 +594,25 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "tempfile" | ||||
| version = "3.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "cfg-if 0.1.10", | ||||
|  "libc", | ||||
|  "rand", | ||||
|  "redox_syscall", | ||||
| @ -365,6 +629,15 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "thread_local" | ||||
| version = "1.0.1" | ||||
| @ -385,12 +658,36 @@ dependencies = [ | ||||
|  "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]] | ||||
| 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" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "version_check" | ||||
| version = "0.9.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "wasi" | ||||
| version = "0.9.0+wasi-snapshot-preview1" | ||||
|  | ||||
| @ -20,6 +20,13 @@ simplelog = "0.8" | ||||
| chrono = "0.4" | ||||
| env_logger = "0.8" | ||||
| derive_builder = "0.9" | ||||
| clap = "3.0.0-beta" | ||||
| assert_cli = "0.6" | ||||
| 
 | ||||
| [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; | ||||
| 
 | ||||
| extern crate adduser; | ||||
| use adduser::api::UserDBWrite; | ||||
| extern crate clap; | ||||
| use clap::{App, Arg}; | ||||
| 
 | ||||
| fn main() { | ||||
| extern crate adduser; | ||||
| use adduser::{api::UserDBWrite, UserLibError}; | ||||
| 
 | ||||
| fn main() -> Result<(), UserLibError> { | ||||
|     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 { | ||||
|         passwd: Some(PathBuf::from("./passwd")), | ||||
| @ -14,20 +52,14 @@ fn main() { | ||||
| 
 | ||||
|     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() | ||||
|             .username("teste") | ||||
|             .username(matches.value_of("username").unwrap()) | ||||
|             // .delete_home(adduser::api::DeleteHome::Delete)
 | ||||
|             .build() | ||||
|             .unwrap(), | ||||
|     ); | ||||
| 
 | ||||
|     let user = adduser::User::default() | ||||
|         .username("fest".into()) | ||||
|         .shell_path("/bin/mash".into()) | ||||
|         .clone(); | ||||
| 
 | ||||
|     println!("{}", user); | ||||
| 
 | ||||
|     //db.new_user().expect("failed to create the user");
 | ||||
|     ) { | ||||
|         Ok(_) => Ok(()), | ||||
|         Err(e) => Err(e), | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| #![feature(option_expect_none)] | ||||
| #![warn(
 | ||||
|     clippy::all, | ||||
|     //clippy::restriction,
 | ||||
| @ -8,6 +7,7 @@ | ||||
| )] | ||||
| //#![allow(clippy::non_ascii_literal)]
 | ||||
| #![allow(clippy::missing_errors_doc)] | ||||
| #![allow(clippy::clippy::multiple_crate_versions)] | ||||
| 
 | ||||
| #[macro_use] | ||||
| extern crate lazy_static; | ||||
|  | ||||
| @ -235,9 +235,10 @@ impl UserDBWrite for UserDBLocal { | ||||
|                     opened.expect("failed to lock files!"); | ||||
|                 dbg!(&locked_p); | ||||
|                 locked_p.append(format!("{}", new_user))?; | ||||
|                 self.users | ||||
|                 assert!(self | ||||
|                     .users | ||||
|                     .insert(args.username.to_owned(), new_user) | ||||
|                     .expect_none("Is always none"); | ||||
|                     .is_none()); | ||||
|                 self.users | ||||
|                     .get(args.username) | ||||
|                     .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")); | ||||
| } | ||||
| #[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; | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| pub struct Fixture { | ||||
|     pub path: PathBuf, | ||||
|     pub source: PathBuf, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user