mirror of
https://github.com/gopasspw/gopass.git
synced 2025-12-08 19:24:54 +00:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package create
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/fatih/color"
|
|
"github.com/gopasspw/gopass/pkg/debug"
|
|
"github.com/gopasspw/gopass/pkg/fsutil"
|
|
)
|
|
|
|
func fmtfn(d int, n string, t string) string {
|
|
strlen := 40 - d
|
|
// indent - [N] - text (trailing spaces)
|
|
fmtStr := "%" + strconv.Itoa(d) + "s%s %-" + strconv.Itoa(strlen) + "s"
|
|
debug.Log("d: %d, n: %q, t: %q, strlen: %d, fmtStr: %q", d, n, t, strlen, fmtStr)
|
|
|
|
return fmt.Sprintf(fmtStr, "", color.GreenString("["+n+"]"), t)
|
|
}
|
|
|
|
// extractHostname tries to extract the hostname from a URL in a filepath-safe
|
|
// way for use in the name of a secret.
|
|
func extractHostname(in string) string {
|
|
if in == "" {
|
|
return ""
|
|
}
|
|
// help url.Parse by adding a scheme if one is missing. This should still
|
|
// allow for any scheme, but by default we assume http (only for parsing)
|
|
urlStr := in
|
|
if !strings.Contains(urlStr, "://") {
|
|
urlStr = "http://" + urlStr
|
|
}
|
|
|
|
u, err := url.Parse(urlStr)
|
|
if err == nil {
|
|
if ch := fsutil.CleanFilename(u.Hostname()); ch != "" {
|
|
return ch
|
|
}
|
|
}
|
|
|
|
return fsutil.CleanFilename(in)
|
|
}
|