diff options
author | Jake Champlin <jake.champlin.27@gmail.com> | 2017-06-06 12:40:07 -0400 |
---|---|---|
committer | Jake Champlin <jake.champlin.27@gmail.com> | 2017-06-06 12:40:07 -0400 |
commit | bae9f6d2fd5eb5bc80929bd393932b23f14d7c93 (patch) | |
tree | ca9ab12a7d78b1fc27a8f734729081357ce6d252 /vendor/github.com/hashicorp/go-getter/netrc.go | |
parent | 254c495b6bebab3fb72a243c4bce858d79e6ee99 (diff) | |
download | terraform-provider-statuscake-bae9f6d2fd5eb5bc80929bd393932b23f14d7c93.tar.gz terraform-provider-statuscake-bae9f6d2fd5eb5bc80929bd393932b23f14d7c93.tar.zst terraform-provider-statuscake-bae9f6d2fd5eb5bc80929bd393932b23f14d7c93.zip |
Initial transfer of provider code
Diffstat (limited to 'vendor/github.com/hashicorp/go-getter/netrc.go')
-rw-r--r-- | vendor/github.com/hashicorp/go-getter/netrc.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-getter/netrc.go b/vendor/github.com/hashicorp/go-getter/netrc.go new file mode 100644 index 0000000..c7f6a3f --- /dev/null +++ b/vendor/github.com/hashicorp/go-getter/netrc.go | |||
@@ -0,0 +1,67 @@ | |||
1 | package getter | ||
2 | |||
3 | import ( | ||
4 | "fmt" | ||
5 | "net/url" | ||
6 | "os" | ||
7 | "runtime" | ||
8 | |||
9 | "github.com/bgentry/go-netrc/netrc" | ||
10 | "github.com/mitchellh/go-homedir" | ||
11 | ) | ||
12 | |||
13 | // addAuthFromNetrc adds auth information to the URL from the user's | ||
14 | // netrc file if it can be found. This will only add the auth info | ||
15 | // if the URL doesn't already have auth info specified and the | ||
16 | // the username is blank. | ||
17 | func addAuthFromNetrc(u *url.URL) error { | ||
18 | // If the URL already has auth information, do nothing | ||
19 | if u.User != nil && u.User.Username() != "" { | ||
20 | return nil | ||
21 | } | ||
22 | |||
23 | // Get the netrc file path | ||
24 | path := os.Getenv("NETRC") | ||
25 | if path == "" { | ||
26 | filename := ".netrc" | ||
27 | if runtime.GOOS == "windows" { | ||
28 | filename = "_netrc" | ||
29 | } | ||
30 | |||
31 | var err error | ||
32 | path, err = homedir.Expand("~/" + filename) | ||
33 | if err != nil { | ||
34 | return err | ||
35 | } | ||
36 | } | ||
37 | |||
38 | // If the file is not a file, then do nothing | ||
39 | if fi, err := os.Stat(path); err != nil { | ||
40 | // File doesn't exist, do nothing | ||
41 | if os.IsNotExist(err) { | ||
42 | return nil | ||
43 | } | ||
44 | |||
45 | // Some other error! | ||
46 | return err | ||
47 | } else if fi.IsDir() { | ||
48 | // File is directory, ignore | ||
49 | return nil | ||
50 | } | ||
51 | |||
52 | // Load up the netrc file | ||
53 | net, err := netrc.ParseFile(path) | ||
54 | if err != nil { | ||
55 | return fmt.Errorf("Error parsing netrc file at %q: %s", path, err) | ||
56 | } | ||
57 | |||
58 | machine := net.FindMachine(u.Host) | ||
59 | if machine == nil { | ||
60 | // Machine not found, no problem | ||
61 | return nil | ||
62 | } | ||
63 | |||
64 | // Set the user info | ||
65 | u.User = url.UserPassword(machine.Login, machine.Password) | ||
66 | return nil | ||
67 | } | ||