Skip to content

Commit

Permalink
feat(providers_mirror.go): providers mirror command should honor depe…
Browse files Browse the repository at this point in the history
…ndency lock file
  • Loading branch information
Reda KHALED (contractor) authored and rkhaled0 committed Jul 25, 2022
1 parent 5da30c2 commit 5a9c05f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
3 changes: 2 additions & 1 deletion internal/command/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"github.com/google/go-cmp/cmp"
"io"
"io/ioutil"
"net/http"
Expand All @@ -20,6 +19,8 @@ import (
"syscall"
"testing"

"github.com/google/go-cmp/cmp"

svchost "github.com/hashicorp/terraform-svchost"
"github.com/hashicorp/terraform-svchost/disco"
"github.com/hashicorp/terraform/internal/addrs"
Expand Down
10 changes: 9 additions & 1 deletion internal/command/providers_mirror.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ func (c *ProvidersMirrorCommand) Run(args []string) int {
reqs, moreDiags := config.ProviderRequirements()
diags = diags.Append(moreDiags)

// Read dependency lock info
providersLock, lockDiags := c.lockedDependencies()
diags = diags.Append(lockDiags)

// If we have any error diagnostics already then we won't proceed further.
if diags.HasErrors() {
c.showDiagnostics(diags)
Expand Down Expand Up @@ -121,6 +125,7 @@ func (c *ProvidersMirrorCommand) Run(args []string) int {
c.Ui.Output(fmt.Sprintf("- Skipping %s because it is built in to Terraform CLI", provider.ForDisplay()))
continue
}
providerLock := providersLock.Provider(provider)
constraintsStr := getproviders.VersionConstraintsString(constraints)
c.Ui.Output(fmt.Sprintf("- Mirroring %s...", provider.ForDisplay()))
// First we'll look for the latest version that matches the given
Expand All @@ -140,7 +145,10 @@ func (c *ProvidersMirrorCommand) Run(args []string) int {
continue
}
selected := candidates.Newest()
if len(constraintsStr) > 0 {
if providerLock != nil {
selected = providerLock.Version()
c.Ui.Output(fmt.Sprintf(" - Selected v%s to meet dependency lock record", selected.String()))
} else if len(constraintsStr) > 0 {
c.Ui.Output(fmt.Sprintf(" - Selected v%s to meet constraints %s", selected.String(), constraintsStr))
} else {
c.Ui.Output(fmt.Sprintf(" - Selected v%s with no constraints", selected.String()))
Expand Down
1 change: 1 addition & 0 deletions internal/command/views/show.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package views

import (
"fmt"

"github.com/hashicorp/terraform/internal/command/arguments"
"github.com/hashicorp/terraform/internal/command/format"
"github.com/hashicorp/terraform/internal/command/jsonplan"
Expand Down

0 comments on commit 5a9c05f

Please sign in to comment.