-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add CommandInput #252
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files
|
bb074a6
to
7ccb91b
Compare
fe6392a
to
a4b98b1
Compare
4130e15
to
44f6e9c
Compare
@nardoor thanks a lot for the review and the very valuable suggestions! The only question I have is about the naming of |
I feel like I'm glad you found my comments useful. I'll look at your changes tomorrow! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm!
## 🤖 New release * `rustic_backend`: 0.2.1 -> 0.3.0 (⚠️ API breaking changes) * `rustic_core`: 0.3.1 -> 0.4.0 (⚠️ API breaking changes) * `rustic_config`: 0.2.0 -> 0.2.1 (✓ API compatible changes) ###⚠️ `rustic_backend` breaking changes ``` --- failure enum_variant_missing: pub enum variant removed or renamed --- Description: A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/enum_variant_missing.ron Failed in: variant LocalBackendErrorKind::FromSplitError, previously in file /tmp/.tmpAmQX0r/rustic_backend/src/error.rs:109 ``` ###⚠️ `rustic_core` breaking changes ``` --- failure constructible_struct_adds_field: externally-constructible struct adds field --- Description: A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field. ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/constructible_struct_adds_field.ron Failed in: field LocalSourceFilterOptions.globs in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/backend/ignore.rs:73 field LocalSourceFilterOptions.iglobs in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/backend/ignore.rs:78 field LocalSourceFilterOptions.glob_files in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/backend/ignore.rs:83 field LocalSourceFilterOptions.iglob_files in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/backend/ignore.rs:88 field LocalSourceFilterOptions.custom_ignorefiles in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/backend/ignore.rs:106 --- failure inherent_method_missing: pub method removed or renamed --- Description: A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/inherent_method_missing.ron Failed in: SnapshotOptions::tag, previously in file /tmp/.tmpAmQX0r/rustic_core/src/repofile/snapshotfile.rs:46 LocalSourceFilterOptions::glob, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:65 LocalSourceFilterOptions::iglob, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:65 LocalSourceFilterOptions::glob_file, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:65 LocalSourceFilterOptions::iglob_file, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:65 LocalSourceFilterOptions::custom_ignorefile, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:65 --- failure method_parameter_count_changed: pub method parameter count changed --- Description: A publicly-visible method now takes a different number of parameters. ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/method_parameter_count_changed.ron Failed in: rustic_core::Repository::list now takes 1 parameters instead of 2, in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/repository.rs:689 rustic_core::Repository::get_index_entry now takes 2 parameters instead of 3, in /tmp/.tmpyfzyFf/rustic_core/crates/core/src/repository.rs:1480 --- failure struct_pub_field_missing: pub struct's pub field removed or renamed --- Description: A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/struct_pub_field_missing.ron Failed in: field tag of struct SnapshotOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/repofile/snapshotfile.rs:59 field glob of struct LocalSourceFilterOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:74 field iglob of struct LocalSourceFilterOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:80 field glob_file of struct LocalSourceFilterOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:86 field iglob_file of struct LocalSourceFilterOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:92 field custom_ignorefile of struct LocalSourceFilterOptions, previously in file /tmp/.tmpAmQX0r/rustic_core/src/backend/ignore.rs:108 --- failure trait_associated_type_added: non-sealed public trait added associated type without default value --- Description: A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/trait_associated_type_added.ron Failed in: trait associated type rustic_core::repofile::RepoFile::Id in file /tmp/.tmpyfzyFf/rustic_core/crates/core/src/repofile.rs:16 --- failure trait_no_longer_object_safe: trait no longer object safe --- Description: Trait is no longer object safe, which breaks `dyn Trait` usage. ref: https://doc.rust-lang.org/stable/reference/items/traits.html#object-safety impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.35.0/src/lints/trait_no_longer_object_safe.ron Failed in: trait IndexedIds in file /tmp/.tmpyfzyFf/rustic_core/crates/core/src/repository.rs:1300 trait IndexedTree in file /tmp/.tmpyfzyFf/rustic_core/crates/core/src/repository.rs:1287 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `rustic_backend` <blockquote> ## [0.3.0](rustic_backend-v0.2.1...rustic_backend-v0.3.0) - 2024-09-23 ### Added - [**breaking**] Use CommandInput for commands ([#269](#269)) ### Other - remove readme versions in usage section for easier release due to release PR ([#271](#271)) - [**breaking**] Use different Id types ([#256](#256)) - *(deps)* Update opendal ([#268](#268)) </blockquote> ## `rustic_core` <blockquote> ## [0.4.0](rustic_core-v0.3.1...rustic_core-v0.4.0) - 2024-09-23 ### Added - make IndexPack::pack_size() public - Add Repository::drop_index and ::drop_data_from_index ([#166](#166)) - *(commands)* Add option stdin_command to be used in CLI and config file ([#266](#266)) - [**breaking**] Use CommandInput for commands ([#269](#269)) - Add CommandInput ([#252](#252)) ### Fixed - de/serialize tags as DisplayFromStr ([#270](#270)) - [**breaking**] use plural names for options ([#267](#267)) - fix clippy lint - *(test)* shorten snapshot names for windows environment - [**breaking**] improve password-command error reporting ([#265](#265)) - properly finish progress bar in Repository::get_snapshot_group ([#263](#263)) ### Other - remove readme versions in usage section for easier release due to release PR ([#271](#271)) - [**breaking**] Use different Id types ([#256](#256)) - Use serde_with::skip_serializing_none instead of manual mapping ([#251](#251)) </blockquote> ## `rustic_config` <blockquote> ## [0.2.1](rustic_config-v0.2.0...rustic_config-v0.2.1) - 2024-09-23 ### Other - remove readme versions in usage section for easier release due to release PR ([#271](#271)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/MarcoIeni/release-plz/). Co-authored-by: rustic-release-plz[bot] <182542030+rustic-release-plz[bot]@users.noreply.github.com>
Add the new type CommandInput. This type supports serde and clap (using
FromStr
) and is supposed to be used where users need to specify commands which are to be executed.There are 3 ways to define commands (here TOML is used):
command = "echo test"
command = {command = "echo", args = ["test1", "test2"] }
command = {command = "echo", args = ["test1", "test2"], on_failure = "ignore" }
In the first example the full command and the args are split using
shell_words
which requires special escaping or quoting when spaces are contained. In the other examples every string is taken literally as given (but TOML escapes may apply when parsing TOML).This PR only adds the new type, using it on existing commands will be a breaking change.