]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/go-getter/client.go
deps: github.com/hashicorp/terraform@sdk-v0.11-with-go-modules
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / go-getter / client.go
index 876812a0a26812b51f306bfc5b0f54ce90949930..300301c2eb4b900c3e16a5d88e46cd85ab3e005d 100644 (file)
@@ -17,6 +17,7 @@ import (
        "strings"
 
        urlhelper "github.com/hashicorp/go-getter/helper/url"
+       "github.com/hashicorp/go-safetemp"
 )
 
 // Client is a client for downloading things.
@@ -100,17 +101,14 @@ func (c *Client) Get() error {
        dst := c.Dst
        src, subDir := SourceDirSubdir(src)
        if subDir != "" {
-               tmpDir, err := ioutil.TempDir("", "tf")
+               td, tdcloser, err := safetemp.Dir("", "getter")
                if err != nil {
                        return err
                }
-               if err := os.RemoveAll(tmpDir); err != nil {
-                       return err
-               }
-               defer os.RemoveAll(tmpDir)
+               defer tdcloser.Close()
 
                realDst = dst
-               dst = tmpDir
+               dst = td
        }
 
        u, err := urlhelper.Parse(src)
@@ -232,7 +230,18 @@ func (c *Client) Get() error {
                // Destination is the base name of the URL path in "any" mode when
                // a file source is detected.
                if mode == ClientModeFile {
-                       dst = filepath.Join(dst, filepath.Base(u.Path))
+                       filename := filepath.Base(u.Path)
+
+                       // Determine if we have a custom file name
+                       if v := q.Get("filename"); v != "" {
+                               // Delete the query parameter if we have it.
+                               q.Del("filename")
+                               u.RawQuery = q.Encode()
+
+                               filename = v
+                       }
+
+                       dst = filepath.Join(dst, filename)
                }
        }
 
@@ -305,7 +314,13 @@ func (c *Client) Get() error {
                        return err
                }
 
-               return copyDir(realDst, filepath.Join(dst, subDir), false)
+               // Process any globs
+               subDir, err := SubdirGlob(dst, subDir)
+               if err != nil {
+                       return err
+               }
+
+               return copyDir(realDst, subDir, false)
        }
 
        return nil