Commit graph

157 commits

Author SHA1 Message Date
Charlie Andrews
8bf0cb8f13 Refactor the getOrChooseCodespace to always check for pending ops 2022-03-16 08:56:17 -04:00
Charlie Andrews
10e43b5136 Use color variable instead of literal for disabled reason 2022-03-16 08:43:34 -04:00
Charlie Andrews
3ed2e49bd9 Add tests for disallowing all port commands for codespace w/ pending op 2022-03-15 17:27:38 -04:00
Charlie Andrews
f94a1a2bd4 Add test for disallowing opening vs code for codespace with pending op
I also refactored the existing vs code test a bit to work with the new
use of `getOrChooseCodespace`.
2022-03-15 17:27:38 -04:00
Charlie Andrews
6346779f35 Add test for disallowing logs when codespace has a pending op 2022-03-15 17:27:38 -04:00
Charlie Andrews
27a5512b41 Add test for disallowing ssh when codespace has a pending op 2022-03-15 17:27:38 -04:00
Charlie Andrews
5ffe838dce Disallow any port operations when codespace has pending operation
Since all of the port operations require the codespace to be running, we
need to disallow these operations when there's a pending op since we
can't start the codespace in this state.

Since the API already disallows this, this is basically cleaning up the
error messages that the user sees in this state

Old error message:

```
$ gh cs ports forward 80:80
? Choose codespace: redacted
Starting codespace ⣻error connecting to codespace: error starting codespace: HTTP 422: your codespace has an operation pending: updating to a sku with a different amount of storage; please wait until this operation is complete (https://api.github.com/user/codespaces/cwndrws-redacted/start)
```

New error message:

```
$ gh cs ports forward 80:80
? Choose codespace: redacted
codespace is disabled while it has a pending operation: Changing machine types...
exit status 1
```
2022-03-15 17:27:38 -04:00
Charlie Andrews
da99a1b59b Ensure codespace exists and doesn't have a pending op when opening Code
The initial intention for this change was to disallow users to open a
codespace in VS Code if the codespace has a pending operation. This also
adds a side-benefit of presenting the user an error before waiting for
VS Code to open if they provide an invalid codespace to open.
2022-03-15 17:21:28 -04:00
Charlie Andrews
599c7c900f Disallow getting logs from codespaces with pending ops
Since the API already disallows this, this pretty much just cleans up
the error reporting to the user.

Example of old error:

```
$ gh cs logs -c cwndrws-redacted
Starting codespace ⣽connecting to codespace: error starting codespace: HTTP 422: your codespace has an operation pending: updating to a sku with a different amount of storage; please wait until this operation is complete (https://api.github.com/user/codespaces/cwndrws-redacted/start)
exit status 1

```

Example of new error:

```
$ gh cs logs -c cwndrws-redacted
codespace is disabled while it has a pending operation: Changing machine types...
exit status 1
```
2022-03-15 17:21:28 -04:00
Charlie Andrews
afa71c4b2f Disallow ssh'ing to codespace with a pending operation
Since the API already disallows this, this makes the error cleaner and
more explicit when a user is trying to start/ssh into a codespace that
has a pending operation.

Example of the old error message:

```
$ gh cs ssh -c cwndrws-redacted
Starting codespace ⣽error connecting to codespace: error starting codespace: HTTP 422: your codespace has an operation pending: updating to a sku with a different amount of storage; please wait until this operation is complete (https://api.github.com/user/codespaces/cwndrws-redacted/start)
exit status 1

```

Example of the new error message:

```
$ gh cs ssh -c cwndrws-redacted
codespace is disabled while it has a pending operation: Changing machine types...
exit status 1
```
2022-03-15 17:21:28 -04:00
Charlie Andrews
3d28c52104 Mark codespace with pending op as disabled with reason instead of state 2022-03-15 17:21:24 -04:00
Mark Phelps
43e4e9514d
Merge pull request #5276 from markphelps/codespaces-accept-perms-wording 2022-03-15 12:55:44 -04:00
Caleb Brose
ca98aec535
Merge pull request #5297 from cmbrose/cmbrose/cs-cp-profile
Add `--profile` option to `gh cs cp`
2022-03-14 07:10:02 -05:00
GitHub Action
94128d683c Add consts for targets and treat empty as prod 2022-03-10 19:59:24 -06:00
GitHub Action
21a1059f7c Add --profile option to gh cs cp 2022-03-10 19:01:55 -06:00
GitHub Action
5e62a417d8 Add emojis to name 2022-03-10 18:50:12 -06:00
GitHub Action
d85feafa85 Rename to hasNonProdVSCSTarget 2022-03-10 17:05:13 -06:00
GitHub Action
be5923770b Add vscs-target to gh cs list 2022-03-10 16:42:31 -06:00
Josh Spicer
4d5ce7aa56
Adds internal codespace developer flags (#5287) 2022-03-09 15:59:29 +00:00
Patrick Veverka
cd8d653285
Merge pull request #5211 from cli/edit_codspaces
Allow Editing Codespaces
2022-03-03 18:22:01 -05:00
Mark Phelps
625f3ac144 Updates wording for codespaces accept permissions flow 2022-03-03 15:36:53 -05:00
Patrick Veverka
edfaac23da updates from review 2022-03-02 13:17:57 +00:00
Nate Smith
91c4a5d828
Merge pull request #5234 from markphelps/codespaces-accept-perms
Codespaces Create: Allow Accepting Permissions
2022-02-28 16:54:45 -06:00
Mark Phelps
dd5feda00a Update wording after consulting product 2022-02-25 17:32:08 -05:00
Mark Phelps
71f32376d0 Fix tests 2022-02-22 20:20:52 -05:00
Mark Phelps
707220a9b1 PR updates 2022-02-22 14:16:03 -05:00
Mark Phelps
1ea26f33d8 Add create test 2022-02-22 09:50:43 -05:00
Mark Phelps
e7c2f973ae Support opting out of permissions 2022-02-17 15:11:12 -05:00
Christian Gregg
c5dbf20ed4
Alias list as ls for all commands (#5214)
I always get tripped up whenever trying to list my codespaces, adding
`ls` as an alias to `list` feels natural enough.

Co-authored-by: Mislav Marohnić <mislav@github.com>
2022-02-17 13:53:42 +01:00
Mark Phelps
590acaa1d6 WIP 2022-02-15 19:35:53 -05:00
Patrick Veverka
e3ff873d64 since we can change the machine name, we should probably allow them to list it 2022-02-16 00:00:13 +00:00
Patrick Veverka
0635514ddf first stab
wip

move to method param

flushing out
2022-02-15 20:13:30 +00:00
Patrick Veverka
f6f8ba8b7b
Add display name for codespaces (#5044) 2022-02-09 16:15:03 +01:00
Caleb Brose
eeeb73a3e3
Repo name suggestions for cs create (#5108)
Co-authored-by: Alan Donovan <alan@alandonovan.net>
2022-01-31 10:20:49 +00:00
Jason Lunz
61e5fbb007
Revert "move gh cs ssh --config into a separate gh cs ssh config command"
This reverts commit c9d0085e57.
2022-01-06 10:03:54 -07:00
Mislav Marohnić
3b7e5fc246 Store Executable() information on codespaces App
This is to avoid having to explicitly pass it to each subcommand that
needs it. Each codespaces command runs in the context of App, so that's
a point of shared context that we can store state in.
2021-12-21 14:03:10 +01:00
Jason Lunz
38eb894d73
prevent leaking any blocked goroutines on error 2021-12-20 13:57:53 -07:00
Jason Lunz
932c9da473
clean up inadvertently truncated help message 2021-12-20 13:57:53 -07:00
Jason Lunz
7bd6fe9af8
maximize the time checkAuthorizedKeys has to run concurrently
Also, other than that, restore the original ordering of this function
2021-12-20 13:57:53 -07:00
Jason Lunz
a864985f0a
use WaitGroup for a more idiomatic concurrency pattern 2021-12-20 13:57:53 -07:00
Jason Lunz
81b34d272c
inline openSSHSession 2021-12-20 13:57:53 -07:00
Jason Lunz
28dd73ffdf
always pass a non-nil logger to openSSHSession 2021-12-20 13:57:53 -07:00
Jason Lunz
37f8039f76
merge ensureAuthorizedKeys into checkAuthorizedKeys 2021-12-20 13:57:52 -07:00
Jason Lunz
ae3aacb964
fix errcheck linter warning 2021-12-20 13:57:52 -07:00
Jason Lunz
6b34fa2a27
oh look, struct definitions can be scoped! 2021-12-20 13:57:52 -07:00
Jason Lunz
f22be4a03d
use a more robust method to get the executable path
cmdutil.Factory.Executable() accounts for things like package managers
and symlinks to the actual executable.

An alternative to passing the *cmdutil.Factory down the stack would be
stashing the executable string in the codespace.App, which works (and
the diff is smaller), but it produced some odd non-local test failures.
This way seems less mysterious and more like other uses of Factory in
the codebase.
2021-12-20 13:57:52 -07:00
Jason Lunz
7b432de5c2
use heredoc helper for config template 2021-12-17 17:09:06 -07:00
Jason Lunz
b2598d64f9
start codespace to fetch config if it's explicitly requested
When running `gh cs ssh config` without a `-c` option, we skip
codespaces that aren't available. This change suppresses that behavior
when a single codespace is explicitly requested, starting the codespace
if it's not running.
2021-12-17 17:08:58 -07:00
Jason Lunz
61823997c2
always verify authorized keys in parallel with other work, and at most once 2021-12-17 16:46:53 -07:00
Jason Lunz
0af268da4e
properly indent ssh config example 2021-12-17 16:11:55 -07:00