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

suggest next logical command #915

Merged
merged 10 commits into from
May 17, 2023

Conversation

SyedFasiuddin
Copy link
Contributor

closes #898

Copy link
Contributor

@oddgrd oddgrd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, thanks for picking this up @SyedFasiuddin! I think we can also add a message to the deployment stop command, something like "Run cargo shuttle deploy to re-deploy your service". Perhaps we can also add one to deployment list about how you can use the deployment id in the cargo shuttle logs <id> command to get the logs for a given deployment.

cargo-shuttle/src/lib.rs Outdated Show resolved Hide resolved
Comment on lines 611 to 617
println!("
To host the application on Shuttle run
`cargo shuttle project start`
if project environment is not created previously and then run
`cargo shuttle deploy`
Your application will be hosted at https://{}.shuttleapp.rs
", service_name);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we need this message in local run, but it might be useful 🤔 Either way we should not show the URL the project will be hosted at here, because they may use a name that is already taken, but that won't fail in local runs, it will only fail when they run cargo shuttle project start.

Copy link
Contributor Author

@SyedFasiuddin SyedFasiuddin May 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The users might do the local run multiple time, over and over again; do you think this message will get annoying to see every time? If yes then we should remove this but the user already see a lot of output from cargo, we could however print this to stderr, but there are no eprintln in the entire file just println.

Copy link
Contributor

@iulianbarbu iulianbarbu May 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is also the issue of possibly printing this multiple times because locally we'll spin a runtime for each workspace service. This log might be handy for people, so maybe we can add it in the local_run function, but before waiting for runtimes to finish. This is somehow conflicting with what I said previously, but I see the point here of having the next logical command be project start/deploy.

LE: The URL shouldn't be added though because what @oddgrd said. Also, we have two flavours of local_runs (unix/windows), and it will be good to have the log for both.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

local_run both of unix and windows call spin_local_runtime and I have added those two suggestion in this method rather than adding it to both local_run methods. Anything wrong with this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops sorry spin_local_runtime gets called multiple times if we have multiple services, I didn't see this because of my limited testing on hello world shuttle service.

cargo-shuttle/src/lib.rs Outdated Show resolved Hide resolved
@SyedFasiuddin
Copy link
Contributor Author

When cargo shuttle stop is ran the service stays deployed but is inactive i.e. stopped, is this right?

How am I now supposed to start the service back? Do I need to run cargo shuttle deploy again?
There is no cargo shuttle start to start a stopped service, perhaps we could have a cargo shuttle start <id> to do the same.

@SyedFasiuddin
Copy link
Contributor Author

The git history looks bad sorry. Can you cherrypick commits on github? 😄

@iulianbarbu
Copy link
Contributor

When cargo shuttle stop is ran the service stays deployed but is inactive i.e. stopped, is this right?

Correct.

How am I now supposed to start the service back? Do I need to run cargo shuttle deploy again? There is no cargo shuttle start to start a stopped service, perhaps we could have a cargo shuttle start <id> to do the same.

A cargo shuttle project start is what you're looking for. This will restart the environment for the project deployment.

@SyedFasiuddin
Copy link
Contributor Author

As @oddgrd mentioned here

I think we can also add a message to the deployment stop command, something like "Run cargo shuttle deploy to re-deploy your service".

we could use cargo shuttle deploy and you are suggesting cargo shuttle project start ??

@iulianbarbu
Copy link
Contributor

As @oddgrd mentioned here

I think we can also add a message to the deployment stop command, something like "Run cargo shuttle deploy to re-deploy your service".

we could use cargo shuttle deploy and you are suggesting cargo shuttle project start ??

Hmm, seems a bit confusing I agree. Probably there is some misunderstanding, but you can try it yourself as well. Testing this is doable by following the CONTRIBUTING.md. Doing a sequence of project start, deploy, project stop, deploy results on my local machine with:

Error: 503 Service Unavailable
message: project not ready

But if I am doing a project start between the last stop and deploy, it's working as expected. This is an issue that I think was documented somewhere. I can't find though where.

@SyedFasiuddin
Copy link
Contributor Author

so something like this is desirable:

$ cargo shuttle init
...
Run `cargo shuttle project start` to create project environment on Shuttle.

$ cargo shuttle project start
...
Run `cargo shuttle deploy` to deploy your Shuttle service.

$ cargo shuttle deploy
...
$ cargo shuttle project stop
...
Run `cargo shuttle project start` to recreate project environment on Shuttle.

$ cargo shuttle project start
...
Run `cargo shuttle deploy` to deploy your Shuttle service.

$ cargo shuttle deploy
...

Some of these commands will eventually call wait_with_spinner to which I have added the deploy command suggestion but this will be false in the case of project stop as we need to call project start before deploy which means I have to move the deploy suggestion out of wait_with_spinner

@SyedFasiuddin
Copy link
Contributor Author

project start command will call project_create method where I can suggest to run deploy, thats fine.
project stop command will call project_delete method where I can suggest to run project start, thats fine.

But project restart command will call project_delete and then project_create and in this case we only want to suggest to deploy and not project start

Or should we just leave it?

@iulianbarbu
Copy link
Contributor

project start command will call project_create method where I can suggest to run deploy, thats fine. project stop command will call project_delete method where I can suggest to run project start, thats fine.

But project restart command will call project_delete and then project_create and in this case we only want to suggest to deploy and not project start

Or should we just leave it?

Good question. We can suggest to deploy.

@iulianbarbu
Copy link
Contributor

iulianbarbu commented May 16, 2023

so something like this is desirable:

$ cargo shuttle init
...
Run `cargo shuttle project start` to create project environment on Shuttle.

$ cargo shuttle project start
...
Run `cargo shuttle deploy` to deploy your Shuttle service.

$ cargo shuttle deploy
...
$ cargo shuttle project stop
...
Run `cargo shuttle project start` to recreate project environment on Shuttle.

$ cargo shuttle project start
...
Run `cargo shuttle deploy` to deploy your Shuttle service.

$ cargo shuttle deploy
...

Some of these commands will eventually call wait_with_spinner to which I have added the deploy command suggestion but this will be false in the case of project stop as we need to call project start before deploy which means I have to move the deploy suggestion out of wait_with_spinner

Indeed, good catch. We might need to duplicate a bit the println here and there, but it should be fine.

@SyedFasiuddin
Copy link
Contributor Author

project restart will look something like this then:

$ cargo shuttle project restart
project '...' is destroyed
Run `cargo shuttle project start` to recreate project environment on Shuttle.
project '...' is ready
Run `cargo shuttle deploy` to deploy your Shuttle service.

Both those suggestions coming from project_delete and project_create respectively.

@iulianbarbu
Copy link
Contributor

project restart will look something like this then:

$ cargo shuttle project restart
project '...' is destroyed
Run `cargo shuttle project start` to recreate project environment on Shuttle.
project '...' is ready
Run `cargo shuttle deploy` to deploy your Shuttle service.

Both those suggestions coming from project_delete and project_create respectively.

Love it :D

@SyedFasiuddin
Copy link
Contributor Author

SyedFasiuddin commented May 16, 2023

If every thing is resolved then still I don't think we should merge this PR as adding a few println statements should not require 9 commits, it should have been a single commit. If you agree with me then I'll create another PR.

Copy link
Contributor

@iulianbarbu iulianbarbu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, we're almost there. 👍

cargo-shuttle/src/lib.rs Outdated Show resolved Hide resolved
cargo-shuttle/src/lib.rs Outdated Show resolved Hide resolved
@iulianbarbu
Copy link
Contributor

If every thing is resolved then still I don't think we should merge this PR as adding a few println statements should not require 9 commits, it should have been a single commit. If you agree with me then I'll create another PR.

No worries, we can keep all these commits for now. Usually, the commits of a shuttle PR are squashed and merged by using GitHub, after the PR was approved. So merging into main will consist of a single commit at the end.

Screenshot 2023-05-17 at 10 08 39

@SyedFasiuddin
Copy link
Contributor Author

So merging into main will consist of a single commit at the end.

Didn't knew about this. Thanks.

Copy link
Contributor

@iulianbarbu iulianbarbu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! LGTM.

Copy link
Contributor

@iulianbarbu iulianbarbu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! LGTM.

@iulianbarbu iulianbarbu merged commit d9e4255 into shuttle-hq:main May 17, 2023
iulianbarbu added a commit that referenced this pull request Jun 6, 2023
* cargo-shuttle: separated unix from windows local_run (#823)

* docs: add note about init bug to readme (#824)

Add a note about #821 to the readme.

* ci: fix windows binary build (#825)

* ci: test prod ci

* ci: restore ci

* chore: v0.15.0 (#820)

* chore: v0.15.0

* chore: bump examples submodule

* revert: protoc removal (#826)

* revert: protoc removal

* ci: test run release jobs

* revert: dockerfile protoc install

* revert: deployer prepare.sh protoc install

* ci: restore ci

* fix: wasm qa casing (#828)

* fix: disable docker QA (#830)

* fix: disable docker QA

* ci: keep running QA

* fix: Remove unused project list filtering (#832)

* fix: Project filtering is disabled

* remove filter flag

---------

Signed-off-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>

* add star gif

* docs: document how to generate protofiles (#836)

* docs: document how to generate protofiles

* docs: expand on crate description

* feat: refactor deployer to run locally without auth (#810)

* feat: refactor deployer to run locally without auth

* docs: update contributing deployer guide

* refactor: workspace dep

* fix: bump regex to 1.8.1 to fix 1.8.0 bug

* fix: provisioner port for local deployer

* refactor: renaming

* feat: refactor to request token from auth

* refactor: remove claims feature from deployer common

* refactor: use key/cookie from original request

* refactor: implement scopebuilder

* fix: clippy

* refactor: address review

* refactor: auth container command

* refactor: cleanup builder in start fn

* docs: local arg docs

* added shuttle console sneak peek

* typo-fix

* fix: shuttle init --template, reorder subcommands, fix bugs (#792)

* shuttle init --template, reorder subcommands, fix bugs

* fix review feedback

* ci: download sccache instead of compiling it (#859)

* ci: download sccache instead of compiling it

* ci: fix some typos

* chore: more typos

* build(docker): Change default provisioner port to 3000 (#852)

On MacOs, port 5000 is used by AirPlay receiver which will make the 'make up' command described in CONTRIBUTING.md fail for Mac users

* feat: ApiKey newtype to ensure key is always valid format (#835)

* feat: ensure API key is valid

* feat: use ApiKey in auth

* refactor: clean up tests

* refactor: don't allocate in parse unless it succeeds

* fix: clippy

* fix: missing anyhow

* feat: impl debug/display for apikey

* chore: add `.editorconfig` (#855)

This adds a simple `.editorconfig` file to the root of the repository so
that different editors/IDEs may pick up the settings. This makes it
easier to have consistent formatting while editing, not just after
running `cargo fmt`. See [here](https://editorconfig.org) for more details.

Co-authored-by: AlphaKeks <alphakeks@dawn.sh>

* fix: `make test` (#858)

* fix: `make test`

* fix: update api-key

* fix: some panic messages get lost (#854)

* fix: some panic messages get lost

* feat: tests for loader and bind panics

---------

Co-authored-by: Thomas Grimm <thomas@boros.world>

* feat: remove /hello from tests/ci (#863)

* feat: change "/hello" routes to "/"

* feat: use updated examples

* fix: clippy complaining about format!{"{url}") being useless post '/hello' removal

* chore: run cargo fmt

* chore: update examples

---------

Co-authored-by: Paul Otten <potten@my.bcit.ca>
Co-authored-by: Paul Otten <lightnica@yahoo.ca>

* feat: add on_new_span impl to runtime Logger (#864)

* feat: add on_new_span impl to runtime Logger

* PR suggestion

Co-authored-by: Pieter <pieter@chesedo.me>

---------

Co-authored-by: Vlad Stepanov <8uk.8ak@gmail.com>
Co-authored-by: Pieter <pieter@chesedo.me>

* misc: rename examples to shuttle-examples (#871)

* misc: rename examples to shuttle-examples

* misc: update examples repo

* chore: v0.16.0 (#881)

* chore: v0.16.0

* chore: bump examples

* feat(Makefile): add option to disable --detach on make up (#878)

* feat(Makefile): add option to disable --detach on make up

* fix: minor formatting changes

* fix: revert addition of apikey to auth (#886)

* fix: revert addition of apikey to auth

* fix: display impl is needed for key.to_string()

* revert: revert #886 (#887)

* Revert "fix: revert addition of apikey to auth (#886)"

This reverts commit 7054e6a.

* feat: add debug call for malformed api key

* add option to use rustls instead of native-tls in `shuttle-shared-db` (#870)

* add option to use rustls instead of native-tls in `shuttle-shared-db`

* Update CircleCI config

Allow specifying features by one for a specific crates.
Test `shuttle-shared-db` features one by one.

* more readable CI job name

* Add comment to CircleCI config

* Match doc links with Shuttle Service current doc url (#885)

* match doc links with current url

* missing test error comparisons

* Update/syn 2.0 (#880)

* update syn to 2.0

* feat: codegen upgraded to use syn v2 (close #875)

---
Co-Authored-by: John Vandenberg <jayvdb@gmail.com>
Co-Authored-by: Yatin Maan

* fix: appropriate expect statement (#875)

* chore: update aws crates (#897)

* chore: update aws crates

* fix: remove accidental comment

* fix:  set correct admin scopes in scopebuilder (#899)

* chore: bump common to 0.16.2 (#900)

* chore: bump common to 0.16.1

* chore: v0.16.2

* Update README.md

updated capital

* Update README.md

updated capitalization of Shuttle

* Reimplemented JwtAuthentication with struct-based Future. (#868)

* Reimplemented JwtAuthentication with struct-based Future.

* More effective encoding

* Remove explicit lifetime

* Code cleanup

* Code cleanup

---------

Co-authored-by: root <root@razor.localdomain>

* docs: add installation instructions for Arch Linux (#902)

* feat: show output of failed tests (#907)

* feat: show output of failed tests

* feat: remove cargo dependency

* fix: cargo clippy warnings

* fix: Cargo.lock version

* ci: release automation on unstable (#816)

* ci: push images to unstable on main with approval

* ci: rename approve unstable push job

* ci: test unstable ssh access

* ci: test master access

* ci: test ssh access with generated config

* ci: try StrictHostKeyChecking no

* ci: try circleci user

* ci: try host admin.unstable

* ci: try unstable deployment

* ci: only deploy on push success

* ci: restore other jobs

* ci: remove sparse registry from deploy

* ci: remove test

* chore: upgrade salvo in shuttle-salvo (#901)

* chore: upgrade salvo in shuttle-salvo

* docs: hello_world at root

* feat: allow resetting a user's API-key (#857)

* feat: allow resetting a users API-key

A user should be able to reset their api-key, this is important functionality to have in case users leak their key. This should generate a new api-key and persist it in the users table.

Fixes #838

* clippy

* chore: some cleanup, code style, etc.

* account name from cookie or key

* invalidate auth_layer cache

* fixes

* Add `logout --invalidate-api-key`

* Rename to reset, add success msg and login url hint.

* fmt

---------

Co-authored-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>

* feat(cargo-shuttle): log reconnects and improved error messages (#853)

* feat(cargo-shuttle): log reconnects and improved error messages

* feat(cargo-shuttle): outputs about the reconnect

* chore: cargo fmt

* chore: cargo fmt

* made last_state optional, added more verbose state outputs, removed Clone trait struct Client and DeployArgs.

* refactor: refactoring cargo-shuttle library

add optional to last_state, change state output messages to have more information, and removed unused clone trait from stucts

* fix: typo in State: Unkown

Co-authored-by: Iulian Barbu <14218860+iulianbarbu@users.noreply.github.com>

* refactor: remove unused code

remove the running state arm as this state should be unreachable and remove Eq and PartialEq since last_state is optional now

---------

Co-authored-by: Forrest Walker <forrestpatwalker@hotmail.com>
Co-authored-by: Iulian Barbu <14218860+iulianbarbu@users.noreply.github.com>

* feat(runtime): Remove dependency on clap (#822)

* docs: contributing updates (#918)

* fix: deployment state shown as running on startup crash (#919)

* fix: deployment state shown as running on startup crash

* fix: remove second deployment fetch

* chore: promote hyper-reverse-proxy to a workspace dependency (#921)

this fixes `cargo vendor`

* suggest next logical command (#915)

* suggest next command

* suggest next command

* suggest next command

* fix: suggest next command

* fix: suggest new command

* fix: suggest next command

* fix: suggest next command

* fix: suggest next command

* ci: add windows qa (#812)

* ci: add windows qa

* ci: why???

* ci: windows qa

* ci: stop on error

* ci: test wasm

* ci: test docker

* ci: turn off docker for now

* ci: add --template flag

* ci: remove /hello from test endpoints

* ci: figure out sleep time

* ci: fix timeout

* ci: disable wasm

* ci: restore old

* fix(gateway): handle certificate expiration as well (#932)

* fix(gateway): handle certificate expiration as well

* gateway: commented the renewal check

* ci: production deployment automation (#920)

* ci: production deployment automation initial commit

* ci: incorrect requirement

* ci: fix production ssh config

* ci: test deduplicated deploy-images workflow

* ci: test deduplicated deploy workflow for prod

* ci: test deploying to unstable with envs in params

* ci: try using $ for env vars in params

* ci: fix password types

* release(prod): test dry run

* release(prod): enable unstable and prod image build/push...

...and deploy

* release(prod): test cargo publish dry run

* release(prod): cargo-shuttle publish crates conflicts with platform-test

* release(prod): improved with speed ups

---------

Co-authored-by: Iulian Barbu <iulianbarbu2@gmail.com>

* Chore/0.17.0 (#934)

* chore: release 0.17.0

* chore: updated deps versions

* examples: updated to latest shuttle-examples/main

* release(prod): gate against local crates.io patch (#936)

* release(prod): fix the missing line break escape (#937)

* release(prod): add protoc dependency and fix the crates order (#938)

* feat(shuttle-axum) Make AxumService generic to be able to use axum::State with it (#924)

* docs: Update links and commands (#948)

* update docs etc

* remove comment

* Update GitHub templates (#945)

* chore: update Cargo.lock (#942)

* Add helpful error if port cannot be used (#950)

* Add helpful error if port cannot be used

* Don't println on success

* cargo format

* fix: --name was ignored when not running from cargo folder (#929)

* fix: --name was ignored when not running from cargo folder

* fix: remove custom error message to fix tests

* Use `unwrap_or` instead of explicit match statement

Co-authored-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>

* Fix cargo fmt

---------

Co-authored-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>

* chore: bump otel crates and remove protoc dep (#956)

* fix: log files packed in archive (#931)

* fix: log files packed in archive

* fix: change log level to debug

* refactor: sanitize all path on the user's proxy (#946)

* feat(gateway, cargo-shuttle): implement pagination for project list (#862)

* feat(gateway, cargo-shuttle): implement pagination for `project list`

This change adds query parameters to the `/projects` endpoint that allow
specifying an `offset` and a `limit` to allow for pagination. The
`cargo-shuttle` CLI has also been updated to take those as optional
parameters for the `project list` subcommand with default values of `0`
for `offset` and `10` for `limit`.

refactor(deployer, cargo-shuttle): implement pagination for `deployment list`

This adds pagination functionality to `cargo shuttle deployment list`
just like `cargo shuttle project list` and allows the same parameters.

* feat(deployer, cargo-shuttle): implement pagination for `deployment list`

This adds the same pagination functionality to `cargo shuttle deployment
list` as `cargo shuttle project list`.

* Updated from PR suggestions

fix(cargo-shuttle): remove long name in page param

fix(cargo-shuttle): reorder params in get_deployments path

fix(cargo-shuttle): check it limit is 0 in deployments_list to prevent useless code

fix(deployer, gateway): Move PaginationDetails struct to common

fix(gateway): Chain query builder params

* fix(cargo-shuttle, deployer): get rid of warnings

Reorders arguments to be consistent between `get_projects_list` and
`get_deployments`, and gets rid of an unused import.

* feat(deployer): add missing pagination params to get_deployments utoipa

* test: add test for out of bound pagination of deploy and projects list

* feat(gateway): add order by clause for paginated endpoint

* ref: revert having PaginationDetails in common

* feat(cargo): improve error message when page == 1 vs page > 1

* feat(common): add message that more page might be available for projects

* feat(cargo, deployment): update pagination message for deployment list

* style(deployer): reformat perstistence/mod.rs file

* feat(deployer): return the deployments starting from the latest updated

* feat(cargo-shuttle): update next page message

* feat(gateway): add created_at field on projects, use it to sort projects

* style(cargo-shuttle): reformat files

* test(deployer): fix test with new get_deployments ordering

---------

Co-authored-by: AlphaKeks <alphakeks@dawn.sh>
Co-authored-by: Jocelyn Boullier <jocelyn@boullier.bzh>
Co-authored-by: 73nko <apramos89@gmail.com>

* fix: crossterm/comfytable conflict (#959)

* fix: crossterm/comfytable conflict

* ci: remove unused protoc installs

* feat: pre-installed build environment in deployer (#960)

* feat: pre-installed build environment in deployer

* Edit list

* refactor: un-tangle crossterm/comfytable (#961)

* refactor: un-tangle crossterm/comfytable

* chore: bump crossterm

* docs: comment typo

* fix: Ignore span logs below WARN (#958)

* fix: Ignore span logs below WARN

* modify test

* fmt

* move to before JsonVisitor, fix test

* Convert later

* fmt

* Flip the comparison like a burger

* fix: remove cargo-sort from CONTRIBUTING.md (#966)

* fix/release(prod): unstable AWS creds clashed with prod (#970)

* chore: v0.18.0 (#972)

* chore: v0.18.0

* chore: bump examples

* fix: broken cargo.lock after merge

---------

Signed-off-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>
Co-authored-by: Iulian Barbu <14218860+iulianbarbu@users.noreply.github.com>
Co-authored-by: jonaro00 <54029719+jonaro00@users.noreply.github.com>
Co-authored-by: Ivan <cernja@pm.me>
Co-authored-by: s e <iamawacko@protonmail.com>
Co-authored-by: Zisulin Morbrot <22527555+morlinbrot@users.noreply.github.com>
Co-authored-by: AlphaKeks <85143381+AlphaKeks@users.noreply.github.com>
Co-authored-by: AlphaKeks <alphakeks@dawn.sh>
Co-authored-by: paulotten <paulotten@users.noreply.github.com>
Co-authored-by: piewhat <hhwzmw5ql@relay.firefox.com>
Co-authored-by: Thomas Grimm <thomas@boros.world>
Co-authored-by: mikegin <gindin.mike@gmail.com>
Co-authored-by: Paul Otten <potten@my.bcit.ca>
Co-authored-by: Paul Otten <lightnica@yahoo.ca>
Co-authored-by: Valentin <59ichiigo@gmail.com>
Co-authored-by: Vlad Stepanov <8uk.8ak@gmail.com>
Co-authored-by: Pieter <pieter@chesedo.me>
Co-authored-by: Xavi <30369208+XaviFP@users.noreply.github.com>
Co-authored-by: Syed Fasiuddin <66054777+SyedFasiuddin@users.noreply.github.com>
Co-authored-by: Artūras Šlajus <x11@arturaz.net>
Co-authored-by: root <root@razor.localdomain>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
Co-authored-by: piewhat <Piewhat@protonmail.com>
Co-authored-by: Heiko Seeberger <hseeberger@users.noreply.github.com>
Co-authored-by: Forrest Walker <forrestpatwalker@hotmail.com>
Co-authored-by: Kieren Davies <kieren@kdavi.es>
Co-authored-by: figsoda <figsoda@pm.me>
Co-authored-by: Iulian Barbu <iulianbarbu2@gmail.com>
Co-authored-by: Boyd Kane <33420535+beyarkay@users.noreply.github.com>
Co-authored-by: Raminder Singh <romi_ssk@yahoo.co.in>
Co-authored-by: Jocelyn Boullier <jocelyn@boullier.bzh>
Co-authored-by: 73nko <apramos89@gmail.com>
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

Successfully merging this pull request may close these issues.

[Feature]: suggest the next logical command (if relevant) on success of cargo shuttle subcommands
3 participants