mirror of
https://github.com/Threnklyn/jira.git
synced 2026-05-18 20:23:28 +02:00
Merge branch 'patrickpichler-make-password-source-binary-exchangeable'
This commit is contained in:
@@ -374,3 +374,19 @@ When `password-source` is set to `stdin`, the `jira login` command will read fro
|
||||
```bash
|
||||
$ ./password-generator | jira login --endpoint=https://my.jira.endpoint.com --user=USERNAME
|
||||
```
|
||||
|
||||
#### Switch path used for password source
|
||||
For `gopass` and `pass` it is possible to specify the full path for the `password-source` tool used for retrieval of the password. This can be accomplised
|
||||
by setting the `password-source-path` option in the configuration file.
|
||||
|
||||
E.g.
|
||||
```yaml
|
||||
password-source: gopass
|
||||
password-name: jira.example.com/myuser
|
||||
password-source-path: /path/to/my-special-gopass
|
||||
```
|
||||
|
||||
This will cause go-jira to use the `gopass` style cli interaction with the `my-special-gopass` binary.
|
||||
|
||||
If you ommit the `password-source-path` option, either `gopass` (for `gopass`) or `pass` (for `pass`)
|
||||
will be used.
|
||||
|
||||
@@ -72,6 +72,9 @@ type GlobalOptions struct {
|
||||
// location using the `pass` tool, if missing prompt the user and store in the PasswordDirectory
|
||||
PasswordSource figtree.StringOption `yaml:"password-source,omitempty" json:"password-source,omitempty"`
|
||||
|
||||
// PasswordSourcePath can be used to specify the path to the PasswordSource binary to use.
|
||||
PasswordSourcePath figtree.StringOption `yaml:"password-source-path,omitempty" json:"password-source-path,omitempty"`
|
||||
|
||||
// PasswordDirectory is only used for the "pass" PasswordSource. It is the location for the encrypted password
|
||||
// files used by `pass`. Effectively this overrides the "PASSWORD_STORE_DIR" environment variable
|
||||
PasswordDirectory figtree.StringOption `yaml:"password-directory,omitempty" json:"password-directory,omitempty"`
|
||||
|
||||
+13
-2
@@ -41,6 +41,15 @@ func (o *GlobalOptions) keyName() string {
|
||||
return user
|
||||
}
|
||||
|
||||
func (o *GlobalOptions) GetPasswordPath() string {
|
||||
// if no password source path then just default
|
||||
// to the password source name
|
||||
if o.PasswordSourcePath.Value == "" {
|
||||
return o.PasswordSource.Value
|
||||
}
|
||||
return o.PasswordSourcePath.Value
|
||||
}
|
||||
|
||||
func (o *GlobalOptions) GetPass() string {
|
||||
log.Debugf("Getting Password")
|
||||
passwd := ""
|
||||
@@ -53,6 +62,7 @@ func (o *GlobalOptions) GetPass() string {
|
||||
panic(err)
|
||||
}
|
||||
} else if o.PasswordSource.Value == "gopass" {
|
||||
binary := o.GetPasswordPath()
|
||||
if o.PasswordDirectory.Value != "" {
|
||||
orig := os.Getenv("PASSWORD_STORE_DIR")
|
||||
log.Debugf("using password-directory: %s", o.PasswordDirectory)
|
||||
@@ -62,7 +72,7 @@ func (o *GlobalOptions) GetPass() string {
|
||||
if passDir := os.Getenv("PASSWORD_STORE_DIR"); passDir != "" {
|
||||
log.Debugf("using PASSWORD_STORE_DIR=%s", passDir)
|
||||
}
|
||||
if bin, err := exec.LookPath("gopass"); err == nil {
|
||||
if bin, err := exec.LookPath(binary); err == nil {
|
||||
log.Debugf("found gopass at: %s", bin)
|
||||
buf := bytes.NewBufferString("")
|
||||
cmd := exec.Command(bin, "show", "-o", o.keyName())
|
||||
@@ -77,6 +87,7 @@ func (o *GlobalOptions) GetPass() string {
|
||||
log.Warning("Gopass binary was not found! Fallback to default password behaviour!")
|
||||
}
|
||||
} else if o.PasswordSource.Value == "pass" {
|
||||
binary := o.GetPasswordPath()
|
||||
if o.PasswordDirectory.Value != "" {
|
||||
orig := os.Getenv("PASSWORD_STORE_DIR")
|
||||
log.Debugf("using password-directory: %s", o.PasswordDirectory)
|
||||
@@ -86,7 +97,7 @@ func (o *GlobalOptions) GetPass() string {
|
||||
if passDir := os.Getenv("PASSWORD_STORE_DIR"); passDir != "" {
|
||||
log.Debugf("using PASSWORD_STORE_DIR=%s", passDir)
|
||||
}
|
||||
if bin, err := exec.LookPath("pass"); err == nil {
|
||||
if bin, err := exec.LookPath(binary); err == nil {
|
||||
log.Debugf("found pass at: %s", bin)
|
||||
buf := bytes.NewBufferString("")
|
||||
cmd := exec.Command(bin, o.keyName())
|
||||
|
||||
Reference in New Issue
Block a user