1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! rusync
//!
//! Implements copy from one directory to an other
//!
//! To use rusync as a library, start with the [Syncer](sync/struct.Syncer.html) struct.
//!
//! To customize its output, implement the [ProgressInfo](progress/trait.ProgressInfo.html) trait.

//! # Example
//!
//! ```
//! let console_info = rusync::ConsoleProgressInfo::new();
//! // or any struct that implements the ProgressInfo trait
//!
//! let options = rusync::SyncOptions::new();
//! // can set any public field of SyncOptions here
//!
//! let source = std::path::Path::new("src");
//! let destination = std::path::Path::new("dest");
//! let syncer = rusync::Syncer::new(&source, &destination, options, Box::new(console_info));
//! let stats = syncer.sync();
//! match stats {
//!     Err(err) => {
//!         eprintln!("Error when syncing: {}", err);
//!     }
//!     Ok(stats) => {
//!         println!("Transfered {} files", stats.copied);
//!     }
//! }
//! ```
//!
extern crate colored;
extern crate filetime;
extern crate term_size;

pub mod console_info;
mod entry;
mod error;
mod fsops;
pub mod progress;
pub mod sync;
mod workers;
pub use crate::console_info::ConsoleProgressInfo;
pub use crate::sync::Stats;
pub use crate::sync::SyncOptions;
pub use crate::sync::Syncer;