Mislav Marohnić
3cce16e72d
Refactor factory.Executable() to be a method rather than a func
...
This way, factory can satisfy an interface that requires `Executable()`.
2021-12-21 13:50:55 +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
Jason Lunz
06eb5ad47f
fetch remote ssh usernames in parallel
2021-12-17 16:10:44 -07:00
Jason Lunz
2ee88da647
close session on error
2021-12-17 14:42:54 -07:00
Jason Lunz
a05541f4ed
drop redundant API call
2021-12-17 11:39:14 -07:00
Jason Lunz
0670a7758b
use generic io interfaces
2021-12-17 11:18:59 -07:00
Jason Lunz
811d6505d2
tighten up ssh config help wording
2021-12-17 11:03:11 -07:00
Jason Lunz
206b6379c3
return non-zero if ssh config skips any codespaces
2021-12-17 10:47:22 -07:00
Jason Lunz
a9d02a746b
push fetching codespace details into openSSHSession callers
2021-12-16 17:19:34 -07:00
Jason Lunz
ac685611b1
openssh -> OpenSSH
2021-12-16 17:00:40 -07:00
Jason Lunz
71c9fa11f0
add more ssh config --help documentation
2021-12-16 17:00:40 -07:00
Jason Lunz
369ea534b6
explain why failure to connect to a codespace doesn't fail the entire command
2021-12-16 17:00:39 -07:00
Jason Lunz
4a6887f99e
add a comment explaining why we build an sshUsers map
2021-12-16 17:00:38 -07:00
Jason Lunz
6f8635a17e
listOpensshConfig -> printOpenSSHConfig
2021-12-16 17:00:37 -07:00
Jason Lunz
b7cd2bbc72
no need to separately declare vars here
2021-12-16 17:00:37 -07:00
Jason Lunz
3cb3cf7ca5
make ListOpensshConfig private
2021-12-16 17:00:36 -07:00
Jason Lunz
96a2e125e6
document the codespaceSSHConfig struct
2021-12-16 17:00:36 -07:00
Jason Lunz
ca3b59dd35
use struct embedding to express this less verbosely
2021-12-16 16:09:33 -07:00
Jason Lunz
ac3b0c50e3
Ssh -> SSH
2021-12-16 16:09:32 -07:00
Jason Lunz
92609bd1ec
Revert "use go-multierror to combine read/write close errors"
...
This reverts commit 456f4381e02aa843ddb3cc1b9628cb81487ba895.
2021-12-16 16:09:32 -07:00
Jason Lunz
3ca5cbab84
hide the gh cs ssh --stdio option in the --help message
2021-12-16 16:09:31 -07:00
Jason Lunz
8687fcb2a0
clean up gh cs ssh option parsing/validation
2021-12-16 16:09:30 -07:00
Jason Lunz
c9d0085e57
move gh cs ssh --config into a separate gh cs ssh config command
...
We could also move this to a toplevel command, but I don't want to
pollute that namespace too much. Open to suggestions.
2021-12-16 16:09:30 -07:00
Jason Lunz
0e6abda73b
allow generating ssh config for a single codespace
2021-12-16 15:42:39 -07:00
Jason Lunz
92403f3a2f
check for incompatible command line options
2021-12-16 15:42:38 -07:00
Jason Lunz
7765000601
add gh cs ssh openssh config file generator
2021-12-16 15:42:38 -07:00
Jason Lunz
4306762f8b
factor out openSshSession() helper function
2021-12-16 15:42:37 -07:00
Jason Lunz
c5e553e400
implement gh cs ssh --stdio
2021-12-16 15:42:37 -07:00
Jason Lunz
81b658ea75
use go-multierror to combine read/write close errors
2021-12-16 15:42:33 -07:00
Jason Lunz
9416056da1
allow combining os.Stdin and os.Stdout as an io.ReadWriteCloser
2021-12-16 15:41:54 -07:00
Mislav Marohnić
5cd977e328
💅 normalize prompt style for text inputs
2021-12-14 18:38:46 +01:00
Mislav Marohnić
c90fc18b0c
Avoid creating repo when cancelling from interactive mode
2021-12-14 18:18:08 +01:00
Mislav Marohnić
3e40780074
💅 repo create cleanups
2021-12-14 18:05:42 +01:00
Mislav Marohnić
21e6d95982
Fix repo create printing created URL in no-TTY mode
2021-12-14 17:49:43 +01:00
Benjamin Chadwick
4bbbf46321
Fix browse last commit when using the repo override flag ( #4845 )
2021-12-13 15:00:22 +01:00
Mislav Marohnić
2d0b9460be
Merge pull request #4318 from g14a/gh-repo-edit
...
gh repo edit
2021-12-10 13:44:39 +01:00
Mislav Marohnić
db50b54513
Simplify GraphQL mutations whose response we are not interested in
2021-12-08 13:35:19 +01:00