Skip to content
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

error[E0277] when compiling komorebic #8

Closed
crosstyan opened this issue Aug 16, 2021 · 2 comments
Closed

error[E0277] when compiling komorebic #8

crosstyan opened this issue Aug 16, 2021 · 2 comments

Comments

@crosstyan
Copy link

When I'm compiling komorebic b2ab893 with cargo install --path komorebic I got complaints from compiler.

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:34:11
   |
34 |     Focus(OperationDirection),
   |           ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:35:10
   |
35 |     Move(OperationDirection),
   |          ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:36:11
   |
36 |     Stack(OperationDirection),
   |           ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `CycleDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:39:16
   |
39 |     CycleStack(CycleDirection),
   |                ^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `CycleDirection`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `BooleanState: clap::Args` is not satisfied
  --> komorebic\src\main.rs:59:24
   |
59 |     WatchConfiguration(BooleanState),
   |                        ^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `BooleanState`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `LayoutFlip: clap::Args` is not satisfied
  --> komorebic\src\main.rs:69:16
   |
69 |     FlipLayout(LayoutFlip),
   |                ^^^^^^^^^^ the trait `clap::Args` is not implemented for `LayoutFlip`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `BooleanState: clap::Args` is not satisfied
  --> komorebic\src\main.rs:70:23
   |
70 |     FocusFollowsMouse(BooleanState),
   |                       ^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `BooleanState`
   |
   = note: required by `augment_args`

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:34:11
   |
34 |     Focus(OperationDirection),
   |           ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:35:10
   |
35 |     Move(OperationDirection),
   |          ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `OperationDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:36:11
   |
36 |     Stack(OperationDirection),
   |           ^^^^^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `OperationDirection`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `CycleDirection: clap::Args` is not satisfied
  --> komorebic\src\main.rs:39:16
   |
39 |     CycleStack(CycleDirection),
   |                ^^^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `CycleDirection`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `BooleanState: clap::Args` is not satisfied
  --> komorebic\src\main.rs:59:24
   |
59 |     WatchConfiguration(BooleanState),
   |                        ^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `BooleanState`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `LayoutFlip: clap::Args` is not satisfied
  --> komorebic\src\main.rs:69:16
   |
69 |     FlipLayout(LayoutFlip),
   |                ^^^^^^^^^^ the trait `clap::Args` is not implemented for `LayoutFlip`
   |
   = note: required by `augment_args_for_update`

error[E0277]: the trait bound `BooleanState: clap::Args` is not satisfied
  --> komorebic\src\main.rs:70:23
   |
70 |     FocusFollowsMouse(BooleanState),
   |                       ^^^^^^^^^^^^ the trait `clap::Args` is not implemented for `BooleanState`
   |
   = note: required by `augment_args_for_update`

error: aborting due to 14 previous errors

The version of rustc is 1.54.0 (a178d0322 2021-07-26) and komorebi was compiled successfully. Because I have no knowledge about Rust, I'm not sure what is going on.

@LGUG2Z
Copy link
Owner

LGUG2Z commented Aug 16, 2021

This is because the library used for generating the CLI, clap, just released a new beta with a lot of breaking changes. You should git checkout HEAD Cargo.lock to reset the lockfile and then run cargo install --path komorebic --locked to force it to use v3.0.0-beta-2 of clap. I will update the README with this information, it is generally good practice to install binaries with Cargo's --locked flag.

@LGUG2Z LGUG2Z closed this as completed in 7ede5a2 Aug 16, 2021
@LGUG2Z
Copy link
Owner

LGUG2Z commented Aug 16, 2021

@crosstyan If you ever have errors in the future when compiling against a commit which has a passing GitHub Actions pipeline, you can click on the green tick and go to the top right of the page to download the Artifacts zip file which will contain the komorebi.exe and komorebic.exe files built against that commit.

LGUG2Z added a commit that referenced this issue Aug 16, 2021
The latest clap beta introduced a lot of breaking changes for komorebic,
so I decided it was a good time to refactor a little and add
documentation to all of the cli commands.

The primary change for komorebic is that subcommands now only take
structs as arguments, so every enum must be wrapped in a struct.

Some macros have been introduced to ease this. Using on|off alongside
enable|disable for BooleanState arguments has been deprecated, going
forward only enable|disable will be supported.

The commands to introduce float rules have been refactored to make use
of ApplicationTarget, and a single command 'float-rule' has been
introduced in the cli.

Finally I took some time to standardise the sample AHK config a little,
primarily making sure that command prompt windows are never shown for
any of the configuration commands.

BREAKING CHANGE: float-exe, float-class, and float-title have been
deprecated in favour of float-rule in komorebic. workspace-tiling now
only accepts enable|disable as valid inputs to the final arg,
deprecating the previously also valid on|off.

re #8
LGUG2Z added a commit that referenced this issue Aug 16, 2021
The latest clap beta introduced a lot of breaking changes for komorebic,
so I decided it was a good time to refactor a little and add
documentation to all of the cli commands.

The primary change for komorebic is that subcommands now only take
structs as arguments, so every enum must be wrapped in a struct. Some
macros have been introduced to ease this.

Using on|off alongside enable|disable for BooleanState arguments has
been deprecated, going forward only enable|disable will be supported.

The commands to introduce float rules have been refactored to make use
of ApplicationTarget, and a single command 'float-rule' has been
introduced in the cli.

Finally I took some time to standardise the sample AHK config a little,
primarily making sure that command prompt windows are never shown for
any of the configuration commands.

BREAKING CHANGE: float-exe, float-class, and float-title have been
deprecated in favour of float-rule in komorebic. workspace-tiling now
only accepts enable|disable as valid inputs to the final arg,
deprecating the previously also valid on|off.

re #8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants