From 7abf5ba24a39c9f04d4358b24156da17a13128d5 Mon Sep 17 00:00:00 2001 From: Alessandro Maestri Date: Mon, 27 Apr 2026 13:05:39 +0200 Subject: [PATCH 1/2] docs: update README and Cargo.toml version to 0.7.1 - Updated Cargo.toml version from 0.7.0 to 0.7.1 to match CHANGELOG - Added prominent note that rBackup does not require administrator privileges - Reorganized Options section: separated per-command and global options for clarity - Documented missing CLI options in copy command: * -d, --delta: delta mode for incremental-only copies * -j, --jobs: worker thread count control * --show-skipped: advanced control over skipped item display - Updated config command documentation with missing --upgrade option - Added dedicated Language Support section explaining language configuration - Fixed Build from source section with correct repository URL - Added development setup instructions including rustfmt/clippy setup - Added validation commands for contributors - Removed outdated reference to '-l, --lang' as CLI option (managed via config) --- Cargo.toml | 17 +++++------ README.md | 82 ++++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 77 insertions(+), 22 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 84ffddf..9da5a7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rbackup" -version = "0.7.0" +version = "0.7.1" edition = "2024" license = "MIT" description = "Incremental, cross-platform and multithreaded backup tool written in Rust" @@ -22,6 +22,7 @@ exclude = [ ] include = [ "src/**/*", + "assets/**", "Cargo.toml", "README.md", "LICENSE", @@ -29,7 +30,7 @@ include = [ ] [build-dependencies] -winresource = "0.1.23" +winresource = "0.1.31" [package.metadata.winresource] Icon = "assets/rbackup.ico" @@ -40,18 +41,18 @@ identifier = "eu.umpire274.rbackup" icon = ["assets/rbackup.png"] [dependencies] -clap = { version = "4.5.50", features = ["derive"] } +clap = { version = "4.5.61", features = ["derive"] } crossterm = "0.29.0" walkdir = "2.5.0" serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -chrono = "0.4.42" +serde_json = "1.0.149" +chrono = "0.4.44" sys-locale = "0.3.2" globset = "0.4.18" serde_yaml = "0.9.33" -rayon = "1.11.0" +rayon = "1.12.0" unicode-width = "0.2.2" [dev-dependencies] -tempfile = "3.23.0" -filetime = "0.2.26" +tempfile = "3.27.0" +filetime = "0.2.27" diff --git a/README.md b/README.md index 2ebb52c..34e0191 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ backups of directories. It is inspired by tools like `rsync` and `robocopy`, but designed with simplicity, portability, and localization in mind. +> **Note:** rBackup does not require administrator privileges on any platform. + [![Build Status](https://github.com/umpire274/rBackup/actions/workflows/ci.yml/badge.svg)](https://github.com/umpire274/rBackup/actions/workflows/ci.yml) [![Latest Release](https://img.shields.io/github/v/release/umpire274/rBackup)](https://github.com/umpire274/rBackup/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) @@ -83,16 +85,22 @@ rbackup copy ~/Documents /mnt/backup_drive/Documents ## ๐Ÿงฉ Options -Global options (applicable to all commands) +### Common Options (per-command) + +These options are available on most commands: + +| Option | Description | +|---------------------|-------------------------------| +| `-q`, `--quiet` | Suppress console output | +| `-t`, `--timestamp` | Prepend timestamp to messages | +| `--log ` | Write output to a log file | -| Option | Description | -|-----------------------|----------------------------------| -| `-q`, `--quiet` | Suppress console output | -| `-t`, `--timestamp` | Prepend timestamp to messages | -| `--log ` | Write output to a log file | -| `-l`, `--lang ` | Force language (e.g. `en`, `it`) | -| `-V`, `--version` | Show version | -| `-h`, `--help` | Show help message | +### Global Options + +| Option | Description | +|-------------------|-------------------| +| `-V`, `--version` | Show version | +| `-h`, `--help` | Show help message | --- @@ -115,6 +123,7 @@ rbackup copy [OPTIONS] Important options: - ` ` โ€” required positional arguments +- `-d`, `--delta` โ€” copy only changed/new items (delta mode); skipped items are hidden by default - `-q`, `--quiet` โ€” suppress console output - `-t`, `--timestamp` โ€” prepend timestamps to messages - `--log ` โ€” write output to a log file @@ -122,7 +131,9 @@ Important options: - `--absolute-exclude` โ€” match exclude patterns against absolute source paths - `--ignore-case` โ€” perform case-insensitive matching for exclude patterns - `--dry-run` โ€” perform a dry-run without copying files -- `--show-skipped ` โ€” control whether skipped items are printed during the run (default: `summary`) +- `-j, --jobs ` โ€” number of worker threads to use (overrides automatic choice) +- `--show-skipped ` โ€” control whether skipped items are printed during the run (default: `summary`; + overrides `--delta` default) Example: @@ -147,7 +158,8 @@ Important options: - `--init` โ€” initialize a default configuration file - `--print` โ€” print the current configuration to stdout - `--edit` โ€” open the configuration in the user's editor -- `--editor ` โ€” specify the editor to use (overrides $EDITOR/$VISUAL) +- `--upgrade` โ€” insert new config options into existing `rbackup.conf` when missing +- `--editor ` โ€” specify the editor to use (overrides `$EDITOR`/`$VISUAL`) Example: @@ -169,6 +181,25 @@ Description: Print help for a specific command (e.g. `rbackup help copy`). --- +## ๐ŸŒ Language Support + +rBackup supports multiple languages with automatic system locale detection. The language is configured via the +configuration file (`rbackup.conf`): + +- **auto** (default) โ€” automatically detect system locale (falls back to English if not supported) +- **en** โ€” English +- **it** โ€” Italian + +To manage the configuration file: + +```bash +rbackup config --init # Create default config +rbackup config --edit # Edit config with default editor +rbackup config --print # View current config +``` + +--- + ## ๐Ÿ”Ž Exclude patterns (`--exclude`) `rbackup copy` supports flexible exclude patterns to skip files and directories during a backup. The @@ -330,15 +361,38 @@ rbackup copy /home/alex/Projects /mnt/usb-backup --log backup.log --timestamp ## ๐Ÿงช Build from source -To compile rbackup yourself: +To compile rBackup yourself: ```sh -git clone https://github.com/your-username/rbackup.git +git clone https://github.com/umpire274/rbackup.git cd rbackup cargo build --release ``` -For Windows, rbackup.rc will be embedded automatically in the executable. +The compiled binary will be available in `target/release/`. + +### Platform-specific requirements + +- **Windows**: The application icon (`assets/rbackup.ico`) is automatically embedded during the build via the `build.rs` + script. +- **macOS/Linux**: No additional steps needed; build proceeds with standard Rust toolchain. + +### Development setup + +If you're contributing to the project, ensure you have the required Rust components: + +```sh +rustup component add rustfmt +rustup component add clippy +``` + +Run validation before submitting a PR: + +```sh +cargo fmt --all -- --check +cargo clippy --all-targets --all-features -- -D warnings +cargo test --all +``` --- From f46ec37f77efee28e948c5b8528e8080a3444379 Mon Sep 17 00:00:00 2001 From: Alessandro Maestri Date: Mon, 27 Apr 2026 13:06:34 +0200 Subject: [PATCH 2/2] chore: update Changelog for v0.7.1 --- CHANGELOG.md | 25 ++++++++++++++ Cargo.lock | 94 ++++++++++++++++++++++++++-------------------------- dev_tools | 2 +- 3 files changed, 73 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7682d56..361e3e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,31 @@ All notable changes to the `rbackup` project will be documented in this file. +## [0.7.1] - 2026-04-27 + +### ๐Ÿ› Fixed + +- Fixed packaging error during `cargo package` / `cargo publish` caused by missing embedded asset: + - `assets/translations.json` is now correctly included in the crate + - Resolved runtime failure in `include_str!("../assets/translations.json")` + +### ๐Ÿ“ฆ Packaging + +- Added `assets/**` to `package.include` in `Cargo.toml` +- Ensured all required runtime assets are bundled in the published crate + +### ๐Ÿ”„ Dependencies + +- Updated several dependencies to newer compatible versions + +### ๐Ÿง  Notes + +- No functional changes to application behavior +- No breaking changes +- This is a maintenance release focused on packaging correctness and dependency updates + +--- + ## [0.7.0] - 2026-02-23 ### โœจ Added diff --git a/Cargo.lock b/Cargo.lock index 2c4d625..26661e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,9 +22,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -37,15 +37,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -115,9 +115,9 @@ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -128,9 +128,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.59" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -138,9 +138,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -150,9 +150,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck", "proc-macro2", @@ -335,9 +335,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" [[package]] name = "heck" @@ -371,9 +371,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown", @@ -420,9 +420,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litrs" @@ -510,18 +510,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -534,9 +534,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -554,7 +554,7 @@ dependencies = [ [[package]] name = "rbackup" -version = "0.7.0" +version = "0.7.1" dependencies = [ "chrono", "clap", @@ -600,9 +600,9 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", @@ -683,9 +683,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -753,9 +753,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.102" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -773,9 +773,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.25.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "getrandom", @@ -786,9 +786,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", @@ -801,27 +801,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "unicode-ident" @@ -1195,15 +1195,15 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.13" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" [[package]] name = "winresource" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e287ced0f21cd11f4035fe946fd3af145f068d1acb708afd248100f89ec7432d" +checksum = "0986a8b1d586b7d3e4fe3d9ea39fb451ae22869dcea4aa109d287a374d866087" dependencies = [ "toml", "version_check", diff --git a/dev_tools b/dev_tools index 1b824b1..8ca1b90 160000 --- a/dev_tools +++ b/dev_tools @@ -1 +1 @@ -Subproject commit 1b824b15c074e128a8708b86244cc045f4a2d782 +Subproject commit 8ca1b90338551422a2b08c53cf582ccdb4cd3012