Commit graph

90 commits

Author SHA1 Message Date
Sam Coe
e6ad8a10d0
Add support for XDG_DATA_HOME 2021-06-02 09:46:14 -04:00
Sam Coe
1d7ffc2013
Add support for LocalAppData and .local/state/ fallback 2021-06-01 15:50:10 -04:00
Sam Coe
602167c0c7
Address PR comments 2021-05-26 11:28:58 -04:00
Sam Coe
583e74d70c
Add support for XDG_STATE_HOME 2021-05-25 16:30:51 -04:00
Sam Coe
972d5ff5f0
Fix test that was deleting local config folder 2021-05-24 18:35:37 -04:00
Sam Coe
0d49bfba42
Add support for XDG_CONFIG_HOME and AppData on Windows 2021-05-24 16:13:33 -04:00
Mislav Marohnić
e0e25c82ff Fix creating Windows directory for gh config 2021-05-19 17:13:12 +02:00
Mislav Marohnić
c57e30fff0 Fix stubbing config in tests on Windows 2021-04-22 11:42:51 +02:00
Mislav Marohnić
c6c3e72f43 Unexport StubConfig 2021-04-22 11:42:28 +02:00
Junjie Yuan
927e4c7e4d
using filepath.Join() instead of path.Join() to fix wrong filepath on Windows:
PS C:\Users\Junjie Yuan> gh auth status
github.com
  ✓ Logged in to github.com as junjieyuan (C:\Users\Junjie Yuan\.config\gh/hosts.yml)
  ✓ Git operations for github.com configured to use https protocol.
  ✓ Token: *******************

Signed-off-by: Junjie Yuan <yuan@junjie.pro>
2021-04-22 15:19:16 +08:00
Sam
9ec1e21d4c
Default to GHES host if only GHES is authenticated (#3286) 2021-03-30 16:51:00 +02:00
Sam Coe
85a6267810
Remove last hardcoded config paths and fix tests 2021-01-25 11:43:37 -08:00
Kevin McDermott
d54a7618d4
Configuration path can come from environment.
This adds support for using the GH_CONFIG_DIR environment variable to determine
where the config files are written, this is useful for cases where the homedir
is not writable.
2021-01-25 10:07:54 -08:00
Mislav Marohnić
64fda21116 Avoid ever invoking go-homedir when config was found in a new location 2021-01-22 20:22:32 +01:00
Matthew Gleich
7d9461b819 ♻️ Refactor to use os.UserHomeDir() 2021-01-22 18:51:28 +01:00
Mislav Marohnić
c9407b2629 More descriptive error when aborting auth due to environment variables
Old message:

    read-only token in GH_TOKEN cannot be modified

This message was vague and some users did not understand that this
refers to the value that is read from environment variables.

New message:

    $ GH_TOKEN=123 ghd auth login -h github.com
    The value of the GH_TOKEN environment variable is being used for authentication.
    To have GitHub CLI store credentials instead, first clear the value from the environment.
2021-01-20 18:27:35 +01:00
Mislav Marohnić
75ebb863e3 Use testify assertions for error matching 2021-01-19 13:59:37 +01:00
Cristian Dominguez
45f4a1f087 Equal: flip arguments position 2021-01-18 21:00:59 -03:00
Cristian Dominguez
3afb1d0b1a Use Testify assertions in test 2021-01-16 19:19:30 -03:00
Mislav Marohnić
bc81282a6c Merge remote-tracking branch 'origin' into git-credentials 2020-12-07 20:02:08 +01:00
Sam Coe
e21c5100fa
Properly check env auth tokens in CheckAuth 2020-12-01 11:44:14 -05:00
Mislav Marohnić
d56d92c908 If git credential helper is non-defined, set gh as credential helper 2020-11-23 20:20:05 +01:00
Josh Soref
c8b9486fd3 spelling: nonexistent 2020-11-21 21:43:51 -05:00
Sam Coe
2eb40f8a14
Empty auth token env variables are equal to being unset 2020-11-12 10:09:08 +03:00
Sam Coe
414de332fb
cleanup 2020-11-12 09:52:14 +03:00
Sam Coe
a79a0bbfd7
Add support for GH_TOKEN and GH_ENTERPRISE_TOKEN 2020-11-12 09:52:10 +03:00
Sam Coe
ce18b943b8
Export type ConfigOption and group InvalidValueError code 2020-11-03 09:49:05 +03:00
Sam Coe
5c5f52c4c4
Refactor config command 2020-11-03 09:49:05 +03:00
Sam Coe
e6be06f737
Cleanup duplicate config options 2020-11-03 09:49:05 +03:00
Mislav Marohnić
ae7d42a876 Centralize all known configuration options 2020-10-26 14:42:04 +01:00
Shrihan Kumar Padhy
f31e49fdff
Add a new config validation key called prompt (#2246) 2020-10-21 16:56:25 +02:00
Mislav Marohnić
14a222bade Let the receiver choose how to format the cfg.Set() value error 2020-10-16 18:54:36 +00:00
Cristian Dominguez
09401b30b6 Validate git protocol config before setting it 2020-10-16 18:54:25 +00:00
Teubel György
9b2fe1ee30 Disable pager when set to "cat" 2020-09-29 23:21:59 +02:00
yuuji.yaginuma
177f683876 Fix typo overriden -> overridden 2020-09-18 13:59:44 +09:00
Mislav Marohnić
f6dd1bcd0a Add the pager config option 2020-09-16 16:15:37 +02:00
Mislav Marohnić
c643778701 Have only one test assert default config rendering 2020-09-16 16:10:53 +02:00
vilmibm
1073c97409 review feedback 2020-09-11 11:36:24 -05:00
vilmibm
79b5ca2cd6 update default config test values 2020-09-10 12:13:48 -05:00
vilmibm
15bfb5447b split auth flow code into new internal package 2020-09-10 12:13:48 -05:00
vilmibm
ecd1b34b39 Add prompt config setting and support in CanPrompt 2020-09-10 12:13:48 -05:00
Mislav Marohnić
c80292c2e8 Extend Config object with GITHUB_TOKEN support
Adding GITHUB_TOKEN & GITHUB_ENTERPRISE_TOKEN support orthogonal to
Config was getting out of hand, especially in `auth` commands that
adjust their messaging and error status based on the presence of these
environment variables.

The new approach builds in support for tokens from environment straight
into Config object by composition. Thus, commands need not ever be
concerned with any specific environment variables.
2020-09-07 21:33:26 +02:00
Mislav Marohnić
a8b06c329b Ensure correct ANSI color output during OAuth flow on Windows
We used to write directly to `os.Stderr`, but we first need to convert
that into a colorable stream.
2020-09-01 12:31:36 +02:00
Nate Smith
e8c4b301d3
Merge pull request #1522 from cli/oauth-device-flow
Implement OAuth Device Authorization flow
2020-08-25 13:54:07 -05:00
Mislav Marohnić
d8c5b7bfc0
Merge pull request #1517 from cli/select-host
Allow explicitly setting hostname for gh operations
2020-08-14 19:08:13 +02:00
Mislav Marohnić
60eebd2896 Implement OAuth Device Authorization flow
Before, we implemented the OAuth app authorization flow which requires a
callback URL. To provide such a URL, we had to spin up a local HTTP
server, which was brittle and did not cover cases where a person might
want to authenticate with a browser that runs on a different machine
than the GitHub CLI process.

This implements the OAuth Device Authorization flow where the user is
given a one-time code and asked to paste it in the browser flow. There
is no callback URL, so we can avoid spinning up a local server, and the
user may open a browser on any of their devices, as long as they provide
the correct one-time code.

If the Device Authorization flow is detected to be unavailable for the
OAuth app (right now, it's specifically enabled for GitHub CLI) or for
an older GitHub Enterprise instance, this falls back to the old app
authentication flow.
2020-08-13 19:21:08 +02:00
vilmibm
e6ae0a122b accept additional scopes in auth flow 2020-08-12 12:05:54 -05:00
Mislav Marohnić
7908c214df Avoid erroring when looking up config keys for nonexistent host 2020-08-12 15:33:26 +02:00
Mislav Marohnić
a6e78d74de Merge branch 'pr-commands-isolate-3' into issue-commands-isolate 2020-08-11 15:40:05 +02:00
Mislav Marohnić
172ea2b078 Isolate all alias commands 2020-08-11 13:57:48 +02:00