Commit Graph

41 Commits

Author SHA1 Message Date
Martin Atkins 02576988c1 lang: "try" and "can" functions
These are intended to make it easier to work with arbitrary data
structures whose shape might not be known statically, such as the result
of jsondecode(...) or yamldecode(...) of data from a separate system.

For example, in an object value which has attributes that may or may not
be set we can concisely provide a fallback value to use when the attribute
isn't set:

    try(local.example.foo, "fallback-foo")

Using a "try to evaluate" model rather than explicit testing fits better
with the usual programming model of the Terraform language where values
are normally automatically converted to the necessary type where possible:
the given expression is subject to all of the same normal type conversions,
which avoids inadvertently creating a more restrictive evaluation model
as might happen if this were handled using checks like a hypothetical
isobject(...) function, etc.
2020-01-10 15:23:25 -08:00
Martin Atkins b62e9a7227 vendor: go get github.com/hashicorp/hcl/v2@v2.3.0
This brings in the new HCL extension functions "try", "can", and
"convert", along with the underlying HCL and cty infrastructure that allow
them to work.
2020-01-10 15:23:25 -08:00
Martin Atkins 9a17497d3f vendor: go get github.com/hashicorp/hcl/v2@v2.2.0
This also includes an upgrade to cty v1.1.1 because HCL calls for it.

The changes in these two libraries are mainly to codepaths that don't
directly affect Terraform, but including this upgrade will cause some
small improvements to Terraform's error messages for type conversion
problems.
2019-12-12 10:36:23 -08:00
Radek Simko 9051591899
go mod tidy & go mod vendor 2019-10-11 22:41:27 +01:00
Stas Alekseev 6656104f8f deps: github.com/hashicorp/aws-sdk-go-base@v0.4.0 (#22994) 2019-10-11 12:50:12 -04:00
Martin Atkins 39e609d5fd vendor: switch to HCL 2.0 in the HCL repository
Previously we were using the experimental HCL 2 repository, but now we'll
shift over to the v2 import path within the main HCL repository as part of
actually releasing HCL 2.0 as stable.

This is a mechanical search/replace to the new import paths. It also
switches to the v2.0.0 release of HCL, which includes some new code that
Terraform didn't previously have but should not change any behavior that
matters for Terraform's purposes.

For the moment the experimental HCL2 repository is still an indirect
dependency via terraform-config-inspect, so it remains in our go.sum and
vendor directories for the moment. Because terraform-config-inspect uses
a much smaller subset of the HCL2 functionality, this does still manage
to prune the vendor directory a little. A subsequent release of
terraform-config-inspect should allow us to completely remove that old
repository in a future commit.
2019-10-02 15:10:21 -07:00
Kristin Laemmert 5f8916b4fd
configs/configupgrade: do not panic on HEREDOCs. (#20281)
Previously, configupgrade would panic if it encountered a HEREDOC. For
the time being, we will simply print out the HEREDOC as-is.

Unfortunately, we discovered that terraform 0.11's version of HCL
allowed for HEREDOCs with the termination delimiter inline (instead of
on a newline, which is technically correct). Since 0.12configupgrade
needs to be bug-compatible with terraform 0.11, we must roll back to the
same version of HCL used in terraform 0.11.
2019-02-08 15:51:53 -08:00
Martin Atkins 047239e68c vendor: Add github.com/hashicorp/terraform-config-inspect 2019-01-14 11:33:21 -08:00
Martin Atkins 1bb79696c6 vendor: update to latest github.com/zclconf/go-cty
This includes a bugfix to the cty/msgpack package to ensure correct
decoding of unknown and null values.

This also includes updates to cty's dependencies.
2018-10-16 19:14:11 -07:00
James Bardin f37c08929b update vendored hcl 2017-05-04 17:08:18 -04:00
Mitchell Hashimoto 3c543a4d6f
vendor: update HCL (formatting) 2017-02-17 08:52:09 -08:00
Mitchell Hashimoto 244992c1be
vendor: update HCL 2017-02-06 18:24:39 -08:00
Mitchell Hashimoto 9a8c3ce753
vendor update HCL 2017-01-24 17:12:02 -08:00
Mitchell Hashimoto 6b044a82df
vendor: update HCL 2017-01-08 16:30:44 -08:00
Mitchell Hashimoto e97195c935
vendor: update HCL 2016-11-30 13:03:56 -08:00
Mitchell Hashimoto 5ce7ff178b
vendor: update HCL 2016-11-29 10:30:51 -08:00
Mitchell Hashimoto 23c58c6d62
vendor: update HCL 2016-11-21 18:16:09 -08:00
Mitchell Hashimoto 27f7e4b296
vendor: update HCL 2016-11-09 14:55:45 -08:00
Mitchell Hashimoto 839e91756e
vendor: update HCL for GH-8709 2016-11-08 16:07:24 -08:00
Mitchell Hashimoto 429373c47c
vendor: update HCL 2016-11-03 18:46:27 -07:00
Mitchell Hashimoto 3b2aa0ad0d
vendor: update HCL for printing updates 2016-11-01 11:08:08 -07:00
Mitchell Hashimoto 6e1e33fd8a
vendor: update HCL 2016-10-28 19:39:00 -04:00
Mitchell Hashimoto 0ff0d23287
update HCL vendor
This fixes primarily printer issues with JSON, list comments, and bare
comments not attached to anything in particular.
2016-10-08 16:29:25 +08:00
James Bardin 425142d221 Update github.com/hashicorp/hcl
Fixes #8820
2016-09-16 09:06:26 -04:00
Mitchell Hashimoto c84f699158
update HCL vendor 2016-09-02 09:58:05 -07:00
Mitchell Hashimoto 02512b5487
vendor: update HCL for GH-8295 2016-08-22 09:40:31 -07:00
James Nugent 4f3cc7e314 deps: Update github.com/hashicorp/hcl 2016-07-11 17:24:27 -06:00
Paul Hinze f48ddfb142
vendor: Update to lastest hashicorp/hcl
Catches https://github.com/hashicorp/hcl/pull/137
Fixes #7142
2016-07-11 12:59:31 -05:00
James Nugent c39044659b deps: Update github.com/hashicorp/hcl/... 2016-06-24 13:20:26 +01:00
James Nugent 9acd031e3b deps: Update github.com/hashicorp/hcl/...
Fixes #6774.
2016-06-21 11:30:24 +03:00
Paul Hinze 04f7afa04c vendor: Update hashicorp/hcl to latest version
Catches https://github.com/hashicorp/hcl/pull/132

Fixes #5550
2016-06-20 18:56:40 +03:00
Paul Hinze 029c79e677
Update HCL to latest version
Pulls in https://github.com/hashicorp/hcl/pull/125

Which fixes #6359
2016-06-07 09:21:10 -05:00
Paul Hinze c74c5fe7f0
Update HCL to latest, unskip fmt tests
See https://github.com/hashicorp/hcl/pull/115
2016-04-27 07:37:47 -05:00
Justin Nauman 6aba504b85 Update of HCL Format dep
#Fixes 6346
2016-04-26 06:35:46 -05:00
Martin Atkins fa703db8a6 Merge #4955: "terraform fmt" command 2016-04-04 01:07:32 -07:00
James Nugent 849e916c9d deps: Update github.com/hashicorp/hcl
Fixes #5740.
2016-03-21 14:48:28 +00:00
Dan Carley cc41c7cfa0 command/fmt: Add new fmt command
This uses the `fmtcmd` package which has recently been merged into HCL. Per
the usage text, this rewrites Terraform config files to their canonical
formatting and style.

Some notes about the implementation for this initial commit:

- all of the fmtcmd options are exposed as CLI flags
- it operates on all files that have a `.tf` suffix
- it currently only operates on the working directory and doesn't accept a
  directory argument, but I'll extend this in subsequent commits
- output is proxied through `cli.UiWriter` so that we write in the same way
  as other commands and we can capture the output during tests
- the test uses a very simple fixture just to ensure that it is working
  correctly end-to-end; the fmtcmd package has more exhaustive tests
- we have to write the fixture to a file in a temporary directory because it
  will be modified and for this reason it was easier to define the fixture
  contents as a raw string
2016-03-07 15:07:04 +00:00
Paul Hinze de97bad050 deps: update hcl to latest
refs #5372
2016-03-01 12:39:40 -06:00
Edward Muller 9f376e13ef Fix up deps
Done with:

```console
$ godep restore -v
$ rm -rf Godep vendor/
$ godep save ./...
```

Spot checked, but things look legit. I don't (yet) know how to build
terraform though.
2016-02-22 10:21:33 -08:00
Paul Hinze 8209b40526 vendor: Recapture deps w/ latest godep
The original contents of `vendor` were inadvertently captured with an
older version of `godep`. Here, we recapture dependencies by running the
following:

```
godep restore -v
cat Godeps/Godeps.json | jq -r '.Deps[].ImportPath' | xargs godep update -v
```

The newer godep makes the following changes as it captures dependencies:

 * Skips test files
 * Copies `LICENSE` / `PATENTS` files

There is also an additional diff in `golang.org/x/sys/unix` that looks
very similar to the diff between `master..c65f27f` in that repo, so I'm
guessing that dependency was accidentally captured from master instead
of the commit saved to `Godeps.json`.

All in all, these changes should all be "more correct" and result in
smaller diffs for any future updates made to dependencies.
2016-02-10 10:45:16 -06:00
Paul Hinze 6fe2703665 Vendor all dependencies w/ Godep
* Remove `make updatedeps` from Travis build. We'll follow up with more
   specific plans around dependency updating in subsequent PRs.
 * Update all `make` targets to set `GO15VENDOREXPERIMENT=1` and to
   filter out `/vendor/` from `./...` where appropriate.
 * Temporarily remove `vet` from the `make test` target until we can
   figure out how to get it to not vet `vendor/`. (Initial
   experimentation failed to yield the proper incantation.)

Everything is pinned to current master, with the exception of:

 * Azure/azure-sdk-for-go which is pinned before the breaking change today
 * aws/aws-sdk-go which is pinned to the most recent tag

The documentation still needs to be updated, which we can do in a follow
up PR. The goal here is to unblock release.
2016-01-29 15:08:48 -06:00