2cfce72 (cargo-release) start next development iteration 0.1.2
~jpastuszek pushed to ~jpastuszek/file-mode git
Decode Unix file mode bits, change them and apply them to files.
All file type, special and protection bits described in sys/stat.h
are represented.
The Mode
object can represent a file mode partially by the use of a bitmask. Only modified bits will be changed in the target file.
Modifications specific only to directories (search) are handled correctly.
use std::path::Path;
use file_mode::{ModePath, User};
let mode = Path::new("LICENSE").mode().unwrap();
// query bits
assert!(mode.file_type().unwrap().is_regular_file());
assert!(mode.user_protection(User::Owner).is_read_set());
assert!(mode.user_protection(User::Group).is_write_set());
assert!(!mode.user_protection(User::Other).is_execute_set());
// print as string
println!("{}", mode); // -rw-rw-r--
assert_eq!(&mode.to_string(), "-rw-rw-r--");
// apply chmod string
Path::new("LICENSE").set_mode("u+r,g+u").unwrap();
See module level documentation on docs.rs for more examples.