diff --git a/go.mod b/go.mod index a3d6ba68..7ec4d734 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/vercel/terraform-provider-vercel go 1.19 require ( - github.com/hashicorp/terraform-plugin-framework v0.14.0 + github.com/hashicorp/terraform-plugin-framework v0.15.0 github.com/hashicorp/terraform-plugin-go v0.14.0 github.com/hashicorp/terraform-plugin-log v0.7.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.10.1 @@ -48,11 +48,11 @@ require ( github.com/vmihailenco/tagparser v0.1.2 // indirect github.com/zclconf/go-cty v1.10.0 // indirect golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect - golang.org/x/net v0.0.0-20221004154528-8021a29435af // indirect - golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875 // indirect - golang.org/x/text v0.3.7 // indirect + golang.org/x/net v0.1.0 // indirect + golang.org/x/sys v0.1.0 // indirect + golang.org/x/text v0.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91 // indirect - google.golang.org/grpc v1.50.0 // indirect + google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect + google.golang.org/grpc v1.50.1 // indirect google.golang.org/protobuf v1.28.1 // indirect ) diff --git a/go.sum b/go.sum index 78a0c65b..805181cf 100644 --- a/go.sum +++ b/go.sum @@ -50,7 +50,6 @@ github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7l github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= @@ -69,18 +68,12 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1U github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -90,14 +83,11 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= @@ -137,7 +127,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -151,7 +140,6 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -169,7 +157,6 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -186,10 +173,6 @@ github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXj github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.2.2 h1:ihRI7YFwcZdiSD7SIenIhHfQH3OuDvWerAUBZbeQS3M= -github.com/hashicorp/go-hclog v1.2.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-hclog v1.3.0 h1:G0ACM8Z2WilWgPv3Vdzwm3V0BQu/kSmrkVtpe1fy9do= -github.com/hashicorp/go-hclog v1.3.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-hclog v1.3.1 h1:vDwF1DFNZhntP4DAjuTpOw3uEgMUpXh1pB5fW9DqHpo= github.com/hashicorp/go-hclog v1.3.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= @@ -223,12 +206,8 @@ github.com/hashicorp/terraform-exec v0.15.0 h1:cqjh4d8HYNQrDoEmlSGelHmg2DYDh5yay github.com/hashicorp/terraform-exec v0.15.0/go.mod h1:H4IG8ZxanU+NW0ZpDRNsvh9f0ul7C0nHP+rUR/CHs7I= github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= -github.com/hashicorp/terraform-plugin-framework v0.11.1 h1:rq8f+TLDO4tJu+n9mMYlDrcRoIdrg0gTUvV2Jr0Ya24= -github.com/hashicorp/terraform-plugin-framework v0.11.1/go.mod h1:GENReHOz6GEt8Jk3UN94vk8BdC6irEHFgN3Z9HPhPUU= -github.com/hashicorp/terraform-plugin-framework v0.13.0 h1:tGnqttzZwU3FKc+HasHr2Yi5L81FcQbdc8zQhbBD9jQ= -github.com/hashicorp/terraform-plugin-framework v0.13.0/go.mod h1:wcZdk4+Uef6Ng+BiBJjGAcIPlIs5bhlEV/TA1k6Xkq8= -github.com/hashicorp/terraform-plugin-framework v0.14.0 h1:Mwj55u+Jc/QGM6fLBPCe1P+ZF3cuYs6wbCdB15lx/Dg= -github.com/hashicorp/terraform-plugin-framework v0.14.0/go.mod h1:wcZdk4+Uef6Ng+BiBJjGAcIPlIs5bhlEV/TA1k6Xkq8= +github.com/hashicorp/terraform-plugin-framework v0.15.0 h1:6f4UY2yfp5UsSX9JhUA6RSptjd+ojStBGWA4jrPhB6Q= +github.com/hashicorp/terraform-plugin-framework v0.15.0/go.mod h1:wcZdk4+Uef6Ng+BiBJjGAcIPlIs5bhlEV/TA1k6Xkq8= github.com/hashicorp/terraform-plugin-go v0.5.0/go.mod h1:PAVN26PNGpkkmsvva1qfriae5Arky3xl3NfzKa8XFVM= github.com/hashicorp/terraform-plugin-go v0.14.0 h1:ttnSlS8bz3ZPYbMb84DpcPhY4F5DsQtcAS7cHo8uvP4= github.com/hashicorp/terraform-plugin-go v0.14.0/go.mod h1:2nNCBeRLaenyQEi78xrGrs9hMbulveqG/zDMQSvVJTE= @@ -327,7 +306,6 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= @@ -343,7 +321,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= @@ -376,7 +353,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -419,8 +395,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -449,17 +425,11 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= -golang.org/x/net v0.0.0-20220822230855-b0a4917ee28c h1:JVAXQ10yGGVbSyoer5VILysz6YKjdNT2bsvlayjqhes= -golang.org/x/net v0.0.0-20220822230855-b0a4917ee28c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221004154528-8021a29435af h1:wv66FM3rLZGPdxpYL+ApnDe2HzHcTFta3z5nsc13wI4= -golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -504,9 +474,7 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -515,22 +483,18 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220818161305-2296e01440c6 h1:Sx/u41w+OwrInGdEckYmEuU5gHoGSL4QbDz3S9s6j4U= -golang.org/x/sys v0.0.0-20220818161305-2296e01440c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875 h1:AzgQNqF+FKwyQ5LbVrVqOcuuFB67N47F9+htZYH0wFM= -golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -571,13 +535,11 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed h1:+qzWo37K31KxduIYaBeMqJ8MUOyTayOQKpH9aDPLMSY= golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -626,17 +588,12 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc h1:Nf+EdcTLHR8qDNN/KfkQL0u0ssxt9OhbaWCl5C0ucEI= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa h1:VWkrxnAx2C2hirAP+W5ADU7e/+93Yhk//ioKd2XFyDI= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91 h1:Ezh2cpcnP5Rq60sLensUsFnxh7P6513NLvNtCm9iyJ4= -google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 h1:GEgb2jF5zxsFJpJfg9RoDDWm7tiwc/DDSTE2BtLUkXU= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -650,14 +607,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0 h1:fPVVDxY9w++VjTZsYvXWqEf9Rqar/e+9zYfxKK+W+YU= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -670,7 +621,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -684,7 +634,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vercel/data_source_alias.go b/vercel/data_source_alias.go index 95d323b4..b200a17e 100644 --- a/vercel/data_source_alias.go +++ b/vercel/data_source_alias.go @@ -85,13 +85,13 @@ func (d *aliasDataSource) Read(ctx context.Context, req datasource.ReadRequest, return } - out, err := d.client.GetAlias(ctx, config.Alias.Value, config.TeamID.Value) + out, err := d.client.GetAlias(ctx, config.Alias.ValueString(), config.TeamID.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error reading alias", fmt.Sprintf("Could not read alias %s %s, unexpected error: %s", - config.TeamID.Value, - config.Alias.Value, + config.TeamID.ValueString(), + config.Alias.ValueString(), err, ), ) @@ -100,8 +100,8 @@ func (d *aliasDataSource) Read(ctx context.Context, req datasource.ReadRequest, result := convertResponseToAlias(out, config) tflog.Trace(ctx, "read alias", map[string]interface{}{ - "team_id": result.TeamID.Value, - "alias": result.Alias.Value, + "team_id": result.TeamID.ValueString(), + "alias": result.Alias.ValueString(), }) diags = resp.State.Set(ctx, result) diff --git a/vercel/data_source_file.go b/vercel/data_source_file.go index 72556e01..1930fce7 100644 --- a/vercel/data_source_file.go +++ b/vercel/data_source_file.go @@ -89,12 +89,12 @@ func (d *fileDataSource) Read(ctx context.Context, req datasource.ReadRequest, r return } - content, err := os.ReadFile(config.Path.Value) + content, err := os.ReadFile(config.Path.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error reading file", fmt.Sprintf("Could not read file %s, unexpected error: %s", - config.Path.Value, + config.Path.ValueString(), err, ), ) @@ -104,7 +104,7 @@ func (d *fileDataSource) Read(ctx context.Context, req datasource.ReadRequest, r rawSha := sha1.Sum(content) sha := hex.EncodeToString(rawSha[:]) config.File = map[string]string{ - config.Path.Value: fmt.Sprintf("%d~%s", len(content), sha), + config.Path.ValueString(): fmt.Sprintf("%d~%s", len(content), sha), } config.ID = config.Path diff --git a/vercel/data_source_prebuilt_project.go b/vercel/data_source_prebuilt_project.go index 7204af5a..aca91644 100644 --- a/vercel/data_source_prebuilt_project.go +++ b/vercel/data_source_prebuilt_project.go @@ -94,14 +94,14 @@ func (d *prebuiltProjectDataSource) ValidateConfig(ctx context.Context, req data return } - if config.Path.Unknown || config.Path.Null { + if config.Path.IsUnknown() || config.Path.IsNull() { return } // if we know the path, let's do a quick check for prebuilt output valid-ness. i.e. reading the output directory // and ensuring no build errors. // We want to validate this both here and in the Read method in case the field is Unknown at plan time. - validatePrebuiltOutput(&resp.Diagnostics, config.Path.Value) + validatePrebuiltOutput(&resp.Diagnostics, config.Path.ValueString()) } // AddErrorer defines an interface that contains the AddError method. Most commonly used with Diagnostics. @@ -181,8 +181,8 @@ func (d *prebuiltProjectDataSource) Read(ctx context.Context, req datasource.Rea return } - outputDir := filepath.Join(config.Path.Value, ".vercel", "output") - validatePrebuiltOutput(&resp.Diagnostics, config.Path.Value) + outputDir := filepath.Join(config.Path.ValueString(), ".vercel", "output") + validatePrebuiltOutput(&resp.Diagnostics, config.Path.ValueString()) if resp.Diagnostics.HasError() { return } diff --git a/vercel/data_source_project.go b/vercel/data_source_project.go index 6a5cd06b..d6732c37 100644 --- a/vercel/data_source_project.go +++ b/vercel/data_source_project.go @@ -188,23 +188,23 @@ func (d *projectDataSource) Read(ctx context.Context, req datasource.ReadRequest return } - out, err := d.client.GetProject(ctx, config.Name.Value, config.TeamID.Value, true) + out, err := d.client.GetProject(ctx, config.Name.ValueString(), config.TeamID.ValueString(), true) if err != nil { resp.Diagnostics.AddError( "Error reading project", fmt.Sprintf("Could not read project %s %s, unexpected error: %s", - config.TeamID.Value, - config.Name.Value, + config.TeamID.ValueString(), + config.Name.ValueString(), err, ), ) return } - result := convertResponseToProject(out, config.coercedFields(), types.Set{Null: true}) + result := convertResponseToProject(out, config.coercedFields(), types.SetNull(envVariableElemType)) tflog.Trace(ctx, "read project", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) diff --git a/vercel/data_source_project_directory.go b/vercel/data_source_project_directory.go index 77d7d216..5ce15890 100644 --- a/vercel/data_source_project_directory.go +++ b/vercel/data_source_project_directory.go @@ -94,7 +94,7 @@ func (d *projectDirectoryDataSource) Read(ctx context.Context, req datasource.Re return } - ignoreRules, err := file.GetIgnores(config.Path.Value) + ignoreRules, err := file.GetIgnores(config.Path.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error reading .vercelignore file", @@ -105,12 +105,12 @@ func (d *projectDirectoryDataSource) Read(ctx context.Context, req datasource.Re return } - paths, err := file.GetPaths(config.Path.Value, ignoreRules) + paths, err := file.GetPaths(config.Path.ValueString(), ignoreRules) if err != nil { resp.Diagnostics.AddError( "Error reading directory", fmt.Sprintf("Could not read files for directory %s, unexpected error: %s", - config.Path.Value, + config.Path.ValueString(), err, ), ) @@ -124,7 +124,7 @@ func (d *projectDirectoryDataSource) Read(ctx context.Context, req datasource.Re resp.Diagnostics.AddError( "Error reading file", fmt.Sprintf("Could not read file %s, unexpected error: %s", - config.Path.Value, + config.Path.ValueString(), err, ), ) diff --git a/vercel/provider.go b/vercel/provider.go index 6d154e5f..19859eda 100644 --- a/vercel/provider.go +++ b/vercel/provider.go @@ -93,7 +93,7 @@ func (p *vercelProvider) Configure(ctx context.Context, req provider.ConfigureRe // User must provide an api_token to the provider var apiToken string - if config.APIToken.Unknown { + if config.APIToken.IsUnknown() { resp.Diagnostics.AddWarning( "Unable to create client", "Cannot use unknown value as api_token", @@ -101,10 +101,10 @@ func (p *vercelProvider) Configure(ctx context.Context, req provider.ConfigureRe return } - if config.APIToken.Null { + if config.APIToken.IsNull() { apiToken = os.Getenv("VERCEL_API_TOKEN") } else { - apiToken = config.APIToken.Value + apiToken = config.APIToken.ValueString() } if apiToken == "" { @@ -124,8 +124,8 @@ func (p *vercelProvider) Configure(ctx context.Context, req provider.ConfigureRe } vercelClient := client.New(apiToken) - if config.Team.Value != "" { - res, err := vercelClient.GetTeam(ctx, config.Team.Value) + if config.Team.ValueString() != "" { + res, err := vercelClient.GetTeam(ctx, config.Team.ValueString()) if client.NotFound(err) { resp.Diagnostics.AddError( "Vercel Team not found", @@ -136,7 +136,7 @@ func (p *vercelProvider) Configure(ctx context.Context, req provider.ConfigureRe if err != nil { resp.Diagnostics.AddError( "Unexpected error reading Vercel Team", - fmt.Sprintf("Could not read Vercel Team %s, unexpected error: %s", config.Team.Value, err), + fmt.Sprintf("Could not read Vercel Team %s, unexpected error: %s", config.Team.ValueString(), err), ) return } diff --git a/vercel/resource_alias.go b/vercel/resource_alias.go index ace40094..53d17016 100644 --- a/vercel/resource_alias.go +++ b/vercel/resource_alias.go @@ -88,8 +88,8 @@ func (r *aliasResource) Create(ctx context.Context, req resource.CreateRequest, } out, err := r.client.CreateAlias(ctx, client.CreateAliasRequest{ - Alias: plan.Alias.Value, - }, plan.DeploymentID.Value, plan.TeamID.Value) + Alias: plan.Alias.ValueString(), + }, plan.DeploymentID.ValueString(), plan.TeamID.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error creating alias", @@ -100,9 +100,9 @@ func (r *aliasResource) Create(ctx context.Context, req resource.CreateRequest, result := convertResponseToAlias(out, plan) tflog.Trace(ctx, "created alias", map[string]interface{}{ - "team_id": plan.TeamID.Value, - "deployment_id": plan.DeploymentID.Value, - "alias_id": result.ID.Value, + "team_id": plan.TeamID.ValueString(), + "deployment_id": plan.DeploymentID.ValueString(), + "alias_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -122,7 +122,7 @@ func (r *aliasResource) Read(ctx context.Context, req resource.ReadRequest, resp return } - out, err := r.client.GetAlias(ctx, state.ID.Value, state.TeamID.Value) + out, err := r.client.GetAlias(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -131,8 +131,8 @@ func (r *aliasResource) Read(ctx context.Context, req resource.ReadRequest, resp resp.Diagnostics.AddError( "Error reading alias", fmt.Sprintf("Could not get alias %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -141,8 +141,8 @@ func (r *aliasResource) Read(ctx context.Context, req resource.ReadRequest, resp result := convertResponseToAlias(out, state) tflog.Trace(ctx, "read alias", map[string]interface{}{ - "team_id": result.TeamID.Value, - "alias_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "alias_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -183,7 +183,7 @@ func (r *aliasResource) Delete(ctx context.Context, req resource.DeleteRequest, return } - _, err := r.client.DeleteAlias(ctx, state.ID.Value, state.TeamID.Value) + _, err := r.client.DeleteAlias(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { return } @@ -192,7 +192,7 @@ func (r *aliasResource) Delete(ctx context.Context, req resource.DeleteRequest, "Error deleting alias", fmt.Sprintf( "Could not delete alias %s, unexpected error: %s", - state.Alias.Value, + state.Alias.ValueString(), err, ), ) @@ -200,7 +200,7 @@ func (r *aliasResource) Delete(ctx context.Context, req resource.DeleteRequest, } tflog.Trace(ctx, "deleted alias", map[string]interface{}{ - "team_id": state.TeamID.Value, - "alias_id": state.ID.Value, + "team_id": state.TeamID.ValueString(), + "alias_id": state.ID.ValueString(), }) } diff --git a/vercel/resource_alias_model.go b/vercel/resource_alias_model.go index e26c075d..30a6e3e3 100644 --- a/vercel/resource_alias_model.go +++ b/vercel/resource_alias_model.go @@ -19,8 +19,8 @@ type Alias struct { func convertResponseToAlias(response client.AliasResponse, plan Alias) Alias { return Alias{ Alias: plan.Alias, - ID: types.String{Value: response.UID}, - DeploymentID: types.String{Value: response.DeploymentID}, + ID: types.StringValue(response.UID), + DeploymentID: types.StringValue(response.DeploymentID), TeamID: toTeamID(response.TeamID), } } diff --git a/vercel/resource_deployment.go b/vercel/resource_deployment.go index 71c8dd97..fe7812ba 100644 --- a/vercel/resource_deployment.go +++ b/vercel/resource_deployment.go @@ -194,14 +194,14 @@ func (r *deploymentResource) ValidateConfig(ctx context.Context, req resource.Va return } - if !config.Ref.Null && !config.Files.Null { + if !config.Ref.IsNull() && !config.Files.IsNull() { resp.Diagnostics.AddError( "Deployment Invalid", "A Deployment cannot have both `ref` and `files` specified", ) return } - if config.Ref.Null && config.Files.Null { + if config.Ref.IsNull() && config.Files.IsNull() { resp.Diagnostics.AddError( "Deployment Invalid", "A Deployment must have either `ref` or `files` specified", @@ -230,7 +230,7 @@ func validatePrebuiltBuilds(diags AddErrorer, config Deployment, files []client. } target := "preview" - if config.Production.Value { + if config.Production.ValueBool() { target = "production" } @@ -302,19 +302,19 @@ func (r *deploymentResource) Create(ctx context.Context, req resource.CreateRequ } target := "" - if plan.Production.Value { + if plan.Production.ValueBool() { target = "production" } cdr := client.CreateDeploymentRequest{ Files: files, Environment: environment, - ProjectID: plan.ProjectID.Value, + ProjectID: plan.ProjectID.ValueString(), ProjectSettings: plan.ProjectSettings.toRequest(), Target: target, - Ref: plan.Ref.Value, + Ref: plan.Ref.ValueString(), } - _, err = r.client.GetProject(ctx, plan.ProjectID.Value, plan.TeamID.Value, false) + _, err = r.client.GetProject(ctx, plan.ProjectID.ValueString(), plan.TeamID.ValueString(), false) if client.NotFound(err) { resp.Diagnostics.AddError( "Error creating deployment", @@ -323,7 +323,7 @@ func (r *deploymentResource) Create(ctx context.Context, req resource.CreateRequ return } - out, err := r.client.CreateDeployment(ctx, cdr, plan.TeamID.Value) + out, err := r.client.CreateDeployment(ctx, cdr, plan.TeamID.ValueString()) var mfErr client.MissingFilesError if errors.As(err, &mfErr) { // Then we need to upload the files, and create the deployment again. @@ -346,7 +346,7 @@ func (r *deploymentResource) Create(ctx context.Context, req resource.CreateRequ Filename: normaliseFilename(f.File, plan.PathPrefix), SHA: f.Sha, Content: string(content), - TeamID: plan.TeamID.Value, + TeamID: plan.TeamID.ValueString(), }) if err != nil { resp.Diagnostics.AddError( @@ -361,7 +361,7 @@ func (r *deploymentResource) Create(ctx context.Context, req resource.CreateRequ } } - out, err = r.client.CreateDeployment(ctx, cdr, plan.TeamID.Value) + out, err = r.client.CreateDeployment(ctx, cdr, plan.TeamID.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error creating deployment", @@ -379,8 +379,8 @@ func (r *deploymentResource) Create(ctx context.Context, req resource.CreateRequ result := convertResponseToDeployment(out, plan) tflog.Trace(ctx, "created deployment", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -400,7 +400,7 @@ func (r *deploymentResource) Read(ctx context.Context, req resource.ReadRequest, return } - out, err := r.client.GetDeployment(ctx, state.ID.Value, state.TeamID.Value) + out, err := r.client.GetDeployment(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -409,8 +409,8 @@ func (r *deploymentResource) Read(ctx context.Context, req resource.ReadRequest, resp.Diagnostics.AddError( "Error reading deployment", fmt.Sprintf("Could not get deployment %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -419,8 +419,8 @@ func (r *deploymentResource) Read(ctx context.Context, req resource.ReadRequest, result := convertResponseToDeployment(out, state) tflog.Trace(ctx, "read deployment", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -472,14 +472,14 @@ func (r *deploymentResource) Delete(ctx context.Context, req resource.DeleteRequ return } - if state.DeleteOnDestroy.Value { - dResp, err := r.client.DeleteDeployment(ctx, state.ID.Value, state.TeamID.Value) + if state.DeleteOnDestroy.ValueBool() { + dResp, err := r.client.DeleteDeployment(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error deleting deployment", fmt.Sprintf( "Could not delete deployment %s, unexpected error: %s", - state.URL.Value, + state.URL.ValueString(), err, ), ) diff --git a/vercel/resource_deployment_model.go b/vercel/resource_deployment_model.go index e5805678..ee7e4efa 100644 --- a/vercel/resource_deployment_model.go +++ b/vercel/resource_deployment_model.go @@ -40,11 +40,11 @@ type Deployment struct { // setIfNotUnknown is a helper function to set a value in a map if it is not unknown. // Null values are set as nil, and actual values are set directly. func setIfNotUnknown(m map[string]interface{}, v types.String, name string) { - if v.Null { + if v.IsNull() { m[name] = nil } - if v.Value != "" { - m[name] = &v.Value + if v.ValueString() != "" { + m[name] = toPtr(v.ValueString()) } } @@ -70,7 +70,7 @@ func (p *ProjectSettings) toRequest() map[string]interface{} { setIfNotUnknown(res, p.InstallCommand, "installCommand") setIfNotUnknown(res, p.OutputDirectory, "outputDirectory") - if p.RootDirectory.Null { + if p.RootDirectory.IsNull() { res["rootDirectory"] = nil } @@ -80,10 +80,10 @@ func (p *ProjectSettings) toRequest() map[string]interface{} { // fillStringNull is used to populate unknown resource values within state. Unknown values // are coerced into null values. Explicitly set values are left unchanged. func fillStringNull(t types.String) types.String { - return types.String{ - Null: t.Null || t.Unknown, - Value: t.Value, + if t.IsNull() || t.IsUnknown() { + return types.StringNull() } + return types.StringValue(t.ValueString()) } // fillNulls takes a ProjectSettings and ensures that none of the values are unknown. @@ -116,13 +116,13 @@ func (p *ProjectSettings) fillNulls() *ProjectSettings { */ func normaliseFilename(filename string, pathPrefix types.String) string { filename = filepath.ToSlash(filename) - if pathPrefix.Unknown || pathPrefix.Null { + if pathPrefix.IsUnknown() || pathPrefix.IsNull() { for strings.HasPrefix(filename, "../") { return strings.TrimPrefix(filename, "../") } } - return strings.TrimPrefix(filename, filepath.ToSlash(pathPrefix.Value)) + return strings.TrimPrefix(filename, filepath.ToSlash(pathPrefix.ValueString())) } // getFiles is a helper for turning the terraform deployment state into a set of client.DeploymentFile @@ -167,7 +167,7 @@ func getFiles(unparsedFiles map[string]string, pathPrefix types.String) ([]clien // Where possible, values from the API response are used to populate state. If not possible, // values from the existing deployment state are used. func convertResponseToDeployment(response client.DeploymentResponse, plan Deployment) Deployment { - production := types.Bool{Value: false} + production := types.BoolValue(false) /* * TODO - the first deployment to a new project is currently _always_ a * production deployment, even if you ask it to be a preview deployment. @@ -179,40 +179,40 @@ func convertResponseToDeployment(response client.DeploymentResponse, plan Deploy * https://vercel.slack.com/archives/C01A2M9R8RZ/p1639594164360300 * for more context. */ - if response.Target != nil && *response.Target == "production" && (plan.Production.Value || plan.Production.Unknown) { - production.Value = true + if response.Target != nil && *response.Target == "production" && (plan.Production.ValueBool() || plan.Production.IsUnknown()) { + production = types.BoolValue(true) } var domains []attr.Value for _, a := range response.Aliases { - domains = append(domains, types.String{Value: a}) + domains = append(domains, types.StringValue(a)) } - if plan.Environment.Unknown || plan.Environment.Null { - plan.Environment.Unknown = false - plan.Environment.Null = true + if plan.Environment.IsUnknown() || plan.Environment.IsNull() { + plan.Environment = types.MapNull(types.StringType) } - if plan.Files.Unknown || plan.Files.Null { - plan.Files.Unknown = false - plan.Files.Null = true + if plan.Files.IsUnknown() || plan.Files.IsNull() { + plan.Files = types.MapNull(types.StringType) + } + + ref := types.StringNull() + if response.GitSource.Ref != "" { + ref = types.StringValue(response.GitSource.Ref) } return Deployment{ - Domains: types.List{ - ElemType: types.StringType, - Elems: domains, - }, + Domains: types.ListValueMust(types.StringType, domains), TeamID: toTeamID(response.TeamID), Environment: plan.Environment, - ProjectID: types.String{Value: response.ProjectID}, - ID: types.String{Value: response.ID}, - URL: types.String{Value: response.URL}, + ProjectID: types.StringValue(response.ProjectID), + ID: types.StringValue(response.ID), + URL: types.StringValue(response.URL), Production: production, Files: plan.Files, PathPrefix: fillStringNull(plan.PathPrefix), ProjectSettings: plan.ProjectSettings.fillNulls(), DeleteOnDestroy: plan.DeleteOnDestroy, - Ref: types.String{Value: response.GitSource.Ref, Unknown: false, Null: response.GitSource.Ref == ""}, + Ref: ref, } } diff --git a/vercel/resource_dns_record.go b/vercel/resource_dns_record.go index 1cde12e2..180eb74d 100644 --- a/vercel/resource_dns_record.go +++ b/vercel/resource_dns_record.go @@ -161,42 +161,42 @@ func (r *dnsRecordResource) ValidateConfig(ctx context.Context, req resource.Val return } - if config.Type.Value == "SRV" && config.SRV == nil { + if config.Type.ValueString() == "SRV" && config.SRV == nil { resp.Diagnostics.AddError( "DNS Record Invalid", "A DNS Record type of 'SRV' requires the `srv` attribute to be set", ) } - if config.Type.Value != "SRV" && config.Value.Null { + if config.Type.ValueString() != "SRV" && config.Value.IsNull() { resp.Diagnostics.AddError( "DNS Record Invalid", - fmt.Sprintf("The `value` attribute must be set on records of `type` '%s'", config.Type.Value), + fmt.Sprintf("The `value` attribute must be set on records of `type` '%s'", config.Type.ValueString()), ) } - if config.Type.Value == "SRV" && !config.Value.Null { + if config.Type.ValueString() == "SRV" && !config.Value.IsNull() { resp.Diagnostics.AddError( "DNS Record Invalid", "The `value` attribute should not be set on records of `type` 'SRV'", ) } - if config.Type.Value != "SRV" && config.SRV != nil { + if config.Type.ValueString() != "SRV" && config.SRV != nil { resp.Diagnostics.AddError( "DNS Record Invalid", "The `srv` attribute should only be set on records of `type` 'SRV'", ) } - if config.Type.Value != "MX" && !config.MXPriority.Null { + if config.Type.ValueString() != "MX" && !config.MXPriority.IsNull() { resp.Diagnostics.AddError( "DNS Record Invalid", "The `mx_priority` attribute should only be set on records of `type` 'MX'", ) } - if config.Type.Value == "MX" && config.MXPriority.Null { + if config.Type.ValueString() == "MX" && config.MXPriority.IsNull() { resp.Diagnostics.AddError( "DNS Record Invalid", "A DNS Record type of 'MX' requires the `mx_priority` attribute to be set", @@ -214,7 +214,7 @@ func (r *dnsRecordResource) Create(ctx context.Context, req resource.CreateReque return } - out, err := r.client.CreateDNSRecord(ctx, plan.TeamID.Value, plan.toCreateDNSRecordRequest()) + out, err := r.client.CreateDNSRecord(ctx, plan.TeamID.ValueString(), plan.toCreateDNSRecordRequest()) if err != nil { resp.Diagnostics.AddError( "Error creating DNS Record", @@ -254,7 +254,7 @@ func (r *dnsRecordResource) Read(ctx context.Context, req resource.ReadRequest, return } - out, err := r.client.GetDNSRecord(ctx, state.ID.Value, state.TeamID.Value) + out, err := r.client.GetDNSRecord(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -263,8 +263,8 @@ func (r *dnsRecordResource) Read(ctx context.Context, req resource.ReadRequest, resp.Diagnostics.AddError( "Error reading DNS Record", fmt.Sprintf("Could not read DNS Record %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -310,8 +310,8 @@ func (r *dnsRecordResource) Update(ctx context.Context, req resource.UpdateReque out, err := r.client.UpdateDNSRecord( ctx, - plan.TeamID.Value, - state.ID.Value, + plan.TeamID.ValueString(), + state.ID.ValueString(), plan.toUpdateRequest(), ) if err != nil { @@ -319,8 +319,8 @@ func (r *dnsRecordResource) Update(ctx context.Context, req resource.UpdateReque "Error updating DNS Record", fmt.Sprintf( "Could not update DNS Record %s for domain %s, unexpected error: %s", - state.ID.Value, - state.Domain.Value, + state.ID.ValueString(), + state.Domain.ValueString(), err, ), ) @@ -357,7 +357,7 @@ func (r *dnsRecordResource) Delete(ctx context.Context, req resource.DeleteReque return } - err := r.client.DeleteDNSRecord(ctx, state.Domain.Value, state.ID.Value, state.TeamID.Value) + err := r.client.DeleteDNSRecord(ctx, state.Domain.ValueString(), state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { // The DNS Record is already gone - do nothing. return @@ -367,8 +367,8 @@ func (r *dnsRecordResource) Delete(ctx context.Context, req resource.DeleteReque "Error deleting DNS Record", fmt.Sprintf( "Could not delete DNS Record %s for domain %s, unexpected error: %s", - state.ID.Value, - state.Domain.Value, + state.ID.ValueString(), + state.Domain.ValueString(), err, ), ) diff --git a/vercel/resource_dns_record_model.go b/vercel/resource_dns_record_model.go index b1816009..1f66707e 100644 --- a/vercel/resource_dns_record_model.go +++ b/vercel/resource_dns_record_model.go @@ -32,22 +32,22 @@ type DNSRecord struct { func (d DNSRecord) toCreateDNSRecordRequest() client.CreateDNSRecordRequest { var srv *client.SRV = nil - if d.Type.Value == "SRV" { + if d.Type.ValueString() == "SRV" { srv = &client.SRV{ - Port: d.SRV.Port.Value, - Priority: d.SRV.Priority.Value, - Target: d.SRV.Target.Value, - Weight: d.SRV.Weight.Value, + Port: d.SRV.Port.ValueInt64(), + Priority: d.SRV.Priority.ValueInt64(), + Target: d.SRV.Target.ValueString(), + Weight: d.SRV.Weight.ValueInt64(), } } return client.CreateDNSRecordRequest{ - Domain: d.Domain.Value, - MXPriority: d.MXPriority.Value, - Name: d.Name.Value, - TTL: d.TTL.Value, - Type: d.Type.Value, - Value: d.Value.Value, + Domain: d.Domain.ValueString(), + MXPriority: d.MXPriority.ValueInt64(), + Name: d.Name.ValueString(), + TTL: d.TTL.ValueInt64(), + Type: d.Type.ValueString(), + Value: d.Value.ValueString(), SRV: srv, } } @@ -56,15 +56,15 @@ func (d DNSRecord) toUpdateRequest() client.UpdateDNSRecordRequest { var srv *client.SRVUpdate = nil if d.SRV != nil { srv = &client.SRVUpdate{ - Port: &d.SRV.Port.Value, - Priority: &d.SRV.Priority.Value, - Target: &d.SRV.Target.Value, - Weight: &d.SRV.Weight.Value, + Port: toPtr(d.SRV.Port.ValueInt64()), + Priority: toPtr(d.SRV.Priority.ValueInt64()), + Target: toPtr(d.SRV.Target.ValueString()), + Weight: toPtr(d.SRV.Weight.ValueInt64()), } } return client.UpdateDNSRecordRequest{ MXPriority: toInt64Pointer(d.MXPriority), - Name: &d.Name.Value, + Name: toPtr(d.Name.ValueString()), SRV: srv, TTL: toInt64Pointer(d.TTL), Value: toStrPointer(d.Value), @@ -73,13 +73,13 @@ func (d DNSRecord) toUpdateRequest() client.UpdateDNSRecordRequest { func convertResponseToDNSRecord(r client.DNSRecord, value types.String, srv *SRV) (record DNSRecord, err error) { record = DNSRecord{ - Domain: types.String{Value: r.Domain}, - ID: types.String{Value: r.ID}, - MXPriority: types.Int64{Null: true}, - Name: types.String{Value: r.Name}, - TTL: types.Int64{Value: r.TTL}, + Domain: types.StringValue(r.Domain), + ID: types.StringValue(r.ID), + MXPriority: types.Int64Null(), + Name: types.StringValue(r.Name), + TTL: types.Int64Value(r.TTL), TeamID: toTeamID(r.TeamID), - Type: types.String{Value: r.RecordType}, + Type: types.StringValue(r.RecordType), } if r.RecordType == "SRV" { @@ -106,14 +106,14 @@ func convertResponseToDNSRecord(r client.DNSRecord, value types.String, srv *SRV target = split[3] } record.SRV = &SRV{ - Weight: types.Int64{Value: int64(weight)}, - Port: types.Int64{Value: int64(port)}, - Priority: types.Int64{Value: int64(priority)}, - Target: types.String{Value: target}, + Weight: types.Int64Value(int64(weight)), + Port: types.Int64Value(int64(port)), + Priority: types.Int64Value(int64(priority)), + Target: types.StringValue(target), } // SRV records have no value - record.Value = types.String{Null: true} - if srv != nil && fmt.Sprintf("%s.", srv.Target.Value) == record.SRV.Target.Value { + record.Value = types.StringNull() + if srv != nil && fmt.Sprintf("%s.", srv.Target.ValueString()) == record.SRV.Target.ValueString() { record.SRV.Target = srv.Target } return record, nil @@ -129,16 +129,16 @@ func convertResponseToDNSRecord(r client.DNSRecord, value types.String, srv *SRV return record, fmt.Errorf("expected MX priority to be an int, but got %s", split[0]) } - record.MXPriority = types.Int64{Value: int64(priority)} - record.Value = types.String{Value: split[1]} - if split[1] == fmt.Sprintf("%s.", value.Value) { + record.MXPriority = types.Int64Value(int64(priority)) + record.Value = types.StringValue(split[1]) + if split[1] == fmt.Sprintf("%s.", value.ValueString()) { record.Value = value } return record, nil } - record.Value = types.String{Value: r.Value} - if r.Value == fmt.Sprintf("%s.", value.Value) { + record.Value = types.StringValue(r.Value) + if r.Value == fmt.Sprintf("%s.", value.ValueString()) { record.Value = value } return record, nil diff --git a/vercel/resource_project.go b/vercel/resource_project.go index c5578396..1de63d6f 100644 --- a/vercel/resource_project.go +++ b/vercel/resource_project.go @@ -216,7 +216,7 @@ func (r *projectResource) Create(ctx context.Context, req resource.CreateRequest return } - out, err := r.client.CreateProject(ctx, plan.TeamID.Value, plan.toCreateProjectRequest(environment)) + out, err := r.client.CreateProject(ctx, plan.TeamID.ValueString(), plan.toCreateProjectRequest(environment)) if err != nil { resp.Diagnostics.AddError( "Error creating project", @@ -227,8 +227,8 @@ func (r *projectResource) Create(ctx context.Context, req resource.CreateRequest result := convertResponseToProject(out, plan.coercedFields(), plan.Environment) tflog.Trace(ctx, "created project", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -248,7 +248,7 @@ func (r *projectResource) Read(ctx context.Context, req resource.ReadRequest, re return } - out, err := r.client.GetProject(ctx, state.ID.Value, state.TeamID.Value, !state.Environment.Null) + out, err := r.client.GetProject(ctx, state.ID.ValueString(), state.TeamID.ValueString(), !state.Environment.IsNull()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -257,8 +257,8 @@ func (r *projectResource) Read(ctx context.Context, req resource.ReadRequest, re resp.Diagnostics.AddError( "Error reading project", fmt.Sprintf("Could not read project %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -267,8 +267,8 @@ func (r *projectResource) Read(ctx context.Context, req resource.ReadRequest, re result := convertResponseToProject(out, state.coercedFields(), state.Environment) tflog.Trace(ctx, "read project", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -358,56 +358,56 @@ func (r *projectResource) Update(ctx context.Context, req resource.UpdateRequest toCreate, toRemove := diffEnvVars(stateEnvs, planEnvs) for _, v := range toRemove { - err := r.client.DeleteEnvironmentVariable(ctx, state.ID.Value, state.TeamID.Value, v.ID.Value) + err := r.client.DeleteEnvironmentVariable(ctx, state.ID.ValueString(), state.TeamID.ValueString(), v.ID.ValueString()) if err != nil { resp.Diagnostics.AddError( "Error updating project", fmt.Sprintf( "Could not remove environment variable %s (%s), unexpected error: %s", - v.Key.Value, - v.ID.Value, + v.Key.ValueString(), + v.ID.ValueString(), err, ), ) return } tflog.Trace(ctx, "deleted environment variable", map[string]interface{}{ - "team_id": plan.TeamID.Value, - "project_id": plan.ID.Value, - "environment_id": v.ID.Value, + "team_id": plan.TeamID.ValueString(), + "project_id": plan.ID.ValueString(), + "environment_id": v.ID.ValueString(), }) } for _, v := range toCreate { result, err := r.client.CreateEnvironmentVariable( ctx, - v.toCreateEnvironmentVariableRequest(plan.ID.Value, plan.TeamID.Value), + v.toCreateEnvironmentVariableRequest(plan.ID.ValueString(), plan.TeamID.ValueString()), ) if err != nil { resp.Diagnostics.AddError( "Error updating project", fmt.Sprintf( "Could not upsert environment variable %s (%s), unexpected error: %s", - v.Key.Value, - v.ID.Value, + v.Key.ValueString(), + v.ID.ValueString(), err, ), ) } tflog.Trace(ctx, "upserted environment variable", map[string]interface{}{ - "team_id": plan.TeamID.Value, - "project_id": plan.ID.Value, + "team_id": plan.TeamID.ValueString(), + "project_id": plan.ID.ValueString(), "environment_id": result.ID, }) } - out, err := r.client.UpdateProject(ctx, state.ID.Value, state.TeamID.Value, plan.toUpdateProjectRequest(state.Name.Value), !plan.Environment.Null) + out, err := r.client.UpdateProject(ctx, state.ID.ValueString(), state.TeamID.ValueString(), plan.toUpdateProjectRequest(state.Name.ValueString()), !plan.Environment.IsNull()) if err != nil { resp.Diagnostics.AddError( "Error updating project", fmt.Sprintf( "Could not update project %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -416,8 +416,8 @@ func (r *projectResource) Update(ctx context.Context, req resource.UpdateRequest result := convertResponseToProject(out, plan.coercedFields(), plan.Environment) tflog.Trace(ctx, "updated project", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -437,7 +437,7 @@ func (r *projectResource) Delete(ctx context.Context, req resource.DeleteRequest return } - err := r.client.DeleteProject(ctx, state.ID.Value, state.TeamID.Value) + err := r.client.DeleteProject(ctx, state.ID.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { return } @@ -446,8 +446,8 @@ func (r *projectResource) Delete(ctx context.Context, req resource.DeleteRequest "Error deleting project", fmt.Sprintf( "Could not delete project %s %s, unexpected error: %s", - state.TeamID.Value, - state.ID.Value, + state.TeamID.ValueString(), + state.ID.ValueString(), err, ), ) @@ -455,8 +455,8 @@ func (r *projectResource) Delete(ctx context.Context, req resource.DeleteRequest } tflog.Trace(ctx, "deleted project", map[string]interface{}{ - "team_id": state.TeamID.Value, - "project_id": state.ID.Value, + "team_id": state.TeamID.ValueString(), + "project_id": state.ID.ValueString(), }) } @@ -499,15 +499,15 @@ func (r *projectResource) ImportState(ctx context.Context, req resource.ImportSt result := convertResponseToProject(out, projectCoercedFields{ /* As this is import, none of these fields are specified - so treat them all as Null */ - BuildCommand: types.String{Null: true}, - DevCommand: types.String{Null: true}, - InstallCommand: types.String{Null: true}, - OutputDirectory: types.String{Null: true}, - PublicSource: types.Bool{Null: true}, - }, types.Set{Null: true}) + BuildCommand: types.StringNull(), + DevCommand: types.StringNull(), + InstallCommand: types.StringNull(), + OutputDirectory: types.StringNull(), + PublicSource: types.BoolNull(), + }, types.SetNull(envVariableElemType)) tflog.Trace(ctx, "imported project", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ID.ValueString(), }) diags := resp.State.Set(ctx, result) diff --git a/vercel/resource_project_domain.go b/vercel/resource_project_domain.go index f5fc207e..8646bdad 100644 --- a/vercel/resource_project_domain.go +++ b/vercel/resource_project_domain.go @@ -109,7 +109,7 @@ func (r *projectDomainResource) Create(ctx context.Context, req resource.CreateR return } - _, err := r.client.GetProject(ctx, plan.ProjectID.Value, plan.TeamID.Value, false) + _, err := r.client.GetProject(ctx, plan.ProjectID.ValueString(), plan.TeamID.ValueString(), false) if client.NotFound(err) { resp.Diagnostics.AddError( "Error creating project domain", @@ -118,14 +118,14 @@ func (r *projectDomainResource) Create(ctx context.Context, req resource.CreateR return } - out, err := r.client.CreateProjectDomain(ctx, plan.ProjectID.Value, plan.TeamID.Value, plan.toCreateRequest()) + out, err := r.client.CreateProjectDomain(ctx, plan.ProjectID.ValueString(), plan.TeamID.ValueString(), plan.toCreateRequest()) if err != nil { resp.Diagnostics.AddError( "Error adding domain to project", fmt.Sprintf( "Could not add domain %s to project %s, unexpected error: %s", - plan.Domain.Value, - plan.ProjectID.Value, + plan.Domain.ValueString(), + plan.ProjectID.ValueString(), err, ), ) @@ -134,9 +134,9 @@ func (r *projectDomainResource) Create(ctx context.Context, req resource.CreateR result := convertResponseToProjectDomain(out) tflog.Trace(ctx, "added domain to project", map[string]interface{}{ - "project_id": result.ProjectID.Value, - "domain": result.Domain.Value, - "team_id": result.TeamID.Value, + "project_id": result.ProjectID.ValueString(), + "domain": result.Domain.ValueString(), + "team_id": result.TeamID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -156,7 +156,7 @@ func (r *projectDomainResource) Read(ctx context.Context, req resource.ReadReque return } - out, err := r.client.GetProjectDomain(ctx, state.ProjectID.Value, state.Domain.Value, state.TeamID.Value) + out, err := r.client.GetProjectDomain(ctx, state.ProjectID.ValueString(), state.Domain.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -165,8 +165,8 @@ func (r *projectDomainResource) Read(ctx context.Context, req resource.ReadReque resp.Diagnostics.AddError( "Error reading project domain", fmt.Sprintf("Could not get domain %s for project %s, unexpected error: %s", - state.Domain.Value, - state.ProjectID.Value, + state.Domain.ValueString(), + state.ProjectID.ValueString(), err, ), ) @@ -175,9 +175,9 @@ func (r *projectDomainResource) Read(ctx context.Context, req resource.ReadReque result := convertResponseToProjectDomain(out) tflog.Trace(ctx, "read project domain", map[string]interface{}{ - "project_id": result.ProjectID.Value, - "domain": result.Domain.Value, - "team_id": result.TeamID.Value, + "project_id": result.ProjectID.ValueString(), + "domain": result.Domain.ValueString(), + "team_id": result.TeamID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -198,17 +198,17 @@ func (r *projectDomainResource) Update(ctx context.Context, req resource.UpdateR out, err := r.client.UpdateProjectDomain( ctx, - plan.ProjectID.Value, - plan.Domain.Value, - plan.TeamID.Value, + plan.ProjectID.ValueString(), + plan.Domain.ValueString(), + plan.TeamID.ValueString(), plan.toUpdateRequest(), ) if err != nil { resp.Diagnostics.AddError( "Error updating project domain", fmt.Sprintf("Could not update domain %s for project %s, unexpected error: %s", - plan.Domain.Value, - plan.ProjectID.Value, + plan.Domain.ValueString(), + plan.ProjectID.ValueString(), err, ), ) @@ -217,9 +217,9 @@ func (r *projectDomainResource) Update(ctx context.Context, req resource.UpdateR result := convertResponseToProjectDomain(out) tflog.Trace(ctx, "update project domain", map[string]interface{}{ - "project_id": result.ProjectID.Value, - "domain": result.Domain.Value, - "team_id": result.TeamID.Value, + "project_id": result.ProjectID.ValueString(), + "domain": result.Domain.ValueString(), + "team_id": result.TeamID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -238,7 +238,7 @@ func (r *projectDomainResource) Delete(ctx context.Context, req resource.DeleteR return } - err := r.client.DeleteProjectDomain(ctx, state.ProjectID.Value, state.Domain.Value, state.TeamID.Value) + err := r.client.DeleteProjectDomain(ctx, state.ProjectID.ValueString(), state.Domain.ValueString(), state.TeamID.ValueString()) if client.NotFound(err) { // The domain is already gone - do nothing. resp.State.RemoveResource(ctx) @@ -249,8 +249,8 @@ func (r *projectDomainResource) Delete(ctx context.Context, req resource.DeleteR "Error deleting project", fmt.Sprintf( "Could not delete domain %s for project %s, unexpected error: %s", - state.Domain.Value, - state.ProjectID.Value, + state.Domain.ValueString(), + state.ProjectID.ValueString(), err, ), ) @@ -258,9 +258,9 @@ func (r *projectDomainResource) Delete(ctx context.Context, req resource.DeleteR } tflog.Trace(ctx, "delete project domain", map[string]interface{}{ - "project_id": state.ProjectID.Value, - "domain": state.Domain.Value, - "team_id": state.TeamID.Value, + "project_id": state.ProjectID.ValueString(), + "domain": state.Domain.ValueString(), + "team_id": state.TeamID.ValueString(), }) } @@ -305,9 +305,9 @@ func (r *projectDomainResource) ImportState(ctx context.Context, req resource.Im result := convertResponseToProjectDomain(out) tflog.Trace(ctx, "imported project domain", map[string]interface{}{ - "project_id": result.ProjectID.Value, - "domain": result.Domain.Value, - "team_id": result.TeamID.Value, + "project_id": result.ProjectID.ValueString(), + "domain": result.Domain.ValueString(), + "team_id": result.TeamID.ValueString(), }) diags := resp.State.Set(ctx, result) diff --git a/vercel/resource_project_domain_model.go b/vercel/resource_project_domain_model.go index cb6bccaa..7c7a8348 100644 --- a/vercel/resource_project_domain_model.go +++ b/vercel/resource_project_domain_model.go @@ -18,10 +18,10 @@ type ProjectDomain struct { func convertResponseToProjectDomain(response client.ProjectDomainResponse) ProjectDomain { return ProjectDomain{ - Domain: types.String{Value: response.Name}, + Domain: types.StringValue(response.Name), GitBranch: fromStringPointer(response.GitBranch), - ID: types.String{Value: response.Name}, - ProjectID: types.String{Value: response.ProjectID}, + ID: types.StringValue(response.Name), + ProjectID: types.StringValue(response.ProjectID), Redirect: fromStringPointer(response.Redirect), RedirectStatusCode: fromInt64Pointer(response.RedirectStatusCode), TeamID: toTeamID(response.TeamID), @@ -30,10 +30,10 @@ func convertResponseToProjectDomain(response client.ProjectDomainResponse) Proje func (p *ProjectDomain) toCreateRequest() client.CreateProjectDomainRequest { return client.CreateProjectDomainRequest{ - GitBranch: p.GitBranch.Value, - Name: p.Domain.Value, - Redirect: p.Redirect.Value, - RedirectStatusCode: p.RedirectStatusCode.Value, + GitBranch: p.GitBranch.ValueString(), + Name: p.Domain.ValueString(), + Redirect: p.Redirect.ValueString(), + RedirectStatusCode: p.RedirectStatusCode.ValueInt64(), } } diff --git a/vercel/resource_project_environment_variable.go b/vercel/resource_project_environment_variable.go index d5de756b..393a0f0b 100644 --- a/vercel/resource_project_environment_variable.go +++ b/vercel/resource_project_environment_variable.go @@ -114,7 +114,7 @@ func (r *projectEnvironmentVariableResource) Create(ctx context.Context, req res return } - _, err := r.client.GetProject(ctx, plan.ProjectID.Value, plan.TeamID.Value, false) + _, err := r.client.GetProject(ctx, plan.ProjectID.ValueString(), plan.TeamID.ValueString(), false) if client.NotFound(err) { resp.Diagnostics.AddError( "Error creating project environment variable", @@ -135,9 +135,9 @@ func (r *projectEnvironmentVariableResource) Create(ctx context.Context, req res result := convertResponseToProjectEnvironmentVariable(response, plan.ProjectID) tflog.Trace(ctx, "created project environment variable", map[string]interface{}{ - "id": result.ID.Value, - "team_id": result.TeamID.Value, - "project_id": result.ProjectID.Value, + "id": result.ID.ValueString(), + "team_id": result.TeamID.ValueString(), + "project_id": result.ProjectID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -157,7 +157,7 @@ func (r *projectEnvironmentVariableResource) Read(ctx context.Context, req resou return } - out, err := r.client.GetEnvironmentVariable(ctx, state.ProjectID.Value, state.TeamID.Value, state.ID.Value) + out, err := r.client.GetEnvironmentVariable(ctx, state.ProjectID.ValueString(), state.TeamID.ValueString(), state.ID.ValueString()) if client.NotFound(err) { resp.State.RemoveResource(ctx) return @@ -166,9 +166,9 @@ func (r *projectEnvironmentVariableResource) Read(ctx context.Context, req resou resp.Diagnostics.AddError( "Error reading project environment variable", fmt.Sprintf("Could not get project environment variable %s %s %s, unexpected error: %s", - state.ID.Value, - state.ProjectID.Value, - state.TeamID.Value, + state.ID.ValueString(), + state.ProjectID.ValueString(), + state.TeamID.ValueString(), err, ), ) @@ -177,9 +177,9 @@ func (r *projectEnvironmentVariableResource) Read(ctx context.Context, req resou result := convertResponseToProjectEnvironmentVariable(out, state.ProjectID) tflog.Trace(ctx, "read project environment variable", map[string]interface{}{ - "id": result.ID.Value, - "team_id": result.TeamID.Value, - "project_id": result.ProjectID.Value, + "id": result.ID.ValueString(), + "team_id": result.TeamID.ValueString(), + "project_id": result.ProjectID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -210,9 +210,9 @@ func (r *projectEnvironmentVariableResource) Update(ctx context.Context, req res result := convertResponseToProjectEnvironmentVariable(response, plan.ProjectID) tflog.Trace(ctx, "updated project environment variable", map[string]interface{}{ - "id": result.ID.Value, - "team_id": result.TeamID.Value, - "project_id": result.ProjectID.Value, + "id": result.ID.ValueString(), + "team_id": result.TeamID.ValueString(), + "project_id": result.ProjectID.ValueString(), }) diags = resp.State.Set(ctx, result) @@ -231,7 +231,7 @@ func (r *projectEnvironmentVariableResource) Delete(ctx context.Context, req res return } - err := r.client.DeleteEnvironmentVariable(ctx, state.ProjectID.Value, state.TeamID.Value, state.ID.Value) + err := r.client.DeleteEnvironmentVariable(ctx, state.ProjectID.ValueString(), state.TeamID.ValueString(), state.ID.ValueString()) if client.NotFound(err) { return } @@ -240,7 +240,7 @@ func (r *projectEnvironmentVariableResource) Delete(ctx context.Context, req res "Error deleting project environment variable", fmt.Sprintf( "Could not delete project environment variable %s, unexpected error: %s", - state.ID.Value, + state.ID.ValueString(), err, ), ) @@ -248,9 +248,9 @@ func (r *projectEnvironmentVariableResource) Delete(ctx context.Context, req res } tflog.Trace(ctx, "deleted project environment variable", map[string]interface{}{ - "id": state.ID.Value, - "team_id": state.TeamID.Value, - "project_id": state.ProjectID.Value, + "id": state.ID.ValueString(), + "team_id": state.TeamID.ValueString(), + "project_id": state.ProjectID.ValueString(), }) } @@ -293,11 +293,11 @@ func (r *projectEnvironmentVariableResource) ImportState(ctx context.Context, re return } - result := convertResponseToProjectEnvironmentVariable(out, types.String{Value: projectID}) + result := convertResponseToProjectEnvironmentVariable(out, types.StringValue(projectID)) tflog.Trace(ctx, "imported project environment variable", map[string]interface{}{ - "team_id": result.TeamID.Value, - "project_id": result.ProjectID.Value, - "env_id": result.ID.Value, + "team_id": result.TeamID.ValueString(), + "project_id": result.ProjectID.ValueString(), + "env_id": result.ID.ValueString(), }) diags := resp.State.Set(ctx, result) diff --git a/vercel/resource_project_environment_variable_model.go b/vercel/resource_project_environment_variable_model.go index a8538a84..8e4dbfdb 100644 --- a/vercel/resource_project_environment_variable_model.go +++ b/vercel/resource_project_environment_variable_model.go @@ -19,33 +19,33 @@ type ProjectEnvironmentVariable struct { func (e *ProjectEnvironmentVariable) toCreateEnvironmentVariableRequest() client.CreateEnvironmentVariableRequest { var target []string for _, t := range e.Target { - target = append(target, t.Value) + target = append(target, t.ValueString()) } return client.CreateEnvironmentVariableRequest{ - Key: e.Key.Value, - Value: e.Value.Value, + Key: e.Key.ValueString(), + Value: e.Value.ValueString(), Target: target, GitBranch: toStrPointer(e.GitBranch), Type: "encrypted", - ProjectID: e.ProjectID.Value, - TeamID: e.TeamID.Value, + ProjectID: e.ProjectID.ValueString(), + TeamID: e.TeamID.ValueString(), } } func (e *ProjectEnvironmentVariable) toUpdateEnvironmentVariableRequest() client.UpdateEnvironmentVariableRequest { var target []string for _, t := range e.Target { - target = append(target, t.Value) + target = append(target, t.ValueString()) } return client.UpdateEnvironmentVariableRequest{ - Key: e.Key.Value, - Value: e.Value.Value, + Key: e.Key.ValueString(), + Value: e.Value.ValueString(), Target: target, GitBranch: toStrPointer(e.GitBranch), Type: "encrypted", - ProjectID: e.ProjectID.Value, - TeamID: e.TeamID.Value, - EnvID: e.ID.Value, + ProjectID: e.ProjectID.ValueString(), + TeamID: e.TeamID.ValueString(), + EnvID: e.ID.ValueString(), } } @@ -55,16 +55,16 @@ func (e *ProjectEnvironmentVariable) toUpdateEnvironmentVariableRequest() client func convertResponseToProjectEnvironmentVariable(response client.EnvironmentVariable, projectID types.String) ProjectEnvironmentVariable { target := []types.String{} for _, t := range response.Target { - target = append(target, types.String{Value: t}) + target = append(target, types.StringValue(t)) } return ProjectEnvironmentVariable{ Target: target, GitBranch: fromStringPointer(response.GitBranch), - Key: types.String{Value: response.Key}, - Value: types.String{Value: response.Value}, + Key: types.StringValue(response.Key), + Value: types.StringValue(response.Value), TeamID: toTeamID(response.TeamID), ProjectID: projectID, - ID: types.String{Value: response.ID}, + ID: types.StringValue(response.ID), } } diff --git a/vercel/resource_project_model.go b/vercel/resource_project_model.go index b34c2407..22498599 100644 --- a/vercel/resource_project_model.go +++ b/vercel/resource_project_model.go @@ -28,7 +28,7 @@ type Project struct { } func (p *Project) environment(ctx context.Context) ([]EnvironmentItem, error) { - if p.Environment.Null { + if p.Environment.IsNull() { return nil, nil } @@ -45,16 +45,16 @@ func parseEnvironment(vars []EnvironmentItem) []client.EnvironmentVariable { for _, e := range vars { var target []string for _, t := range e.Target { - target = append(target, t.Value) + target = append(target, t.ValueString()) } out = append(out, client.EnvironmentVariable{ - Key: e.Key.Value, - Value: e.Value.Value, + Key: e.Key.ValueString(), + Value: e.Value.ValueString(), Target: target, GitBranch: toStrPointer(e.GitBranch), Type: "encrypted", - ID: e.ID.Value, + ID: e.ID.ValueString(), }) } return out @@ -69,7 +69,7 @@ func (p *Project) toCreateProjectRequest(envs []EnvironmentItem) client.CreatePr Framework: toStrPointer(p.Framework), GitRepository: p.GitRepository.toCreateProjectRequest(), InstallCommand: toStrPointer(p.InstallCommand), - Name: p.Name.Value, + Name: p.Name.ValueString(), OutputDirectory: toStrPointer(p.OutputDirectory), PublicSource: toBoolPointer(p.PublicSource), RootDirectory: toStrPointer(p.RootDirectory), @@ -79,8 +79,9 @@ func (p *Project) toCreateProjectRequest(envs []EnvironmentItem) client.CreatePr func (p *Project) toUpdateProjectRequest(oldName string) client.UpdateProjectRequest { var name *string = nil - if oldName != p.Name.Value { - name = &p.Name.Value + if oldName != p.Name.ValueString() { + n := p.Name.ValueString() + name = &n } return client.UpdateProjectRequest{ BuildCommand: toStrPointer(p.BuildCommand), @@ -108,11 +109,11 @@ type EnvironmentItem struct { func (e *EnvironmentItem) toCreateEnvironmentVariableRequest(projectID, teamID string) client.CreateEnvironmentVariableRequest { var target []string for _, t := range e.Target { - target = append(target, t.Value) + target = append(target, t.ValueString()) } return client.CreateEnvironmentVariableRequest{ - Key: e.Key.Value, - Value: e.Value.Value, + Key: e.Key.ValueString(), + Value: e.Value.ValueString(), Target: target, GitBranch: toStrPointer(e.GitBranch), Type: "encrypted", @@ -132,8 +133,8 @@ func (g *GitRepository) toCreateProjectRequest() *client.GitRepository { return nil } return &client.GitRepository{ - Type: g.Type.Value, - Repo: g.Repo.Value, + Type: g.Type.ValueString(), + Repo: g.Repo.ValueString(), } } @@ -171,24 +172,36 @@ func (p *Project) coercedFields() projectCoercedFields { } func uncoerceString(plan, res types.String) types.String { - if plan.Value == "" && !plan.Null && res.Null { + if plan.ValueString() == "" && !plan.IsNull() && res.IsNull() { return plan } return res } func uncoerceBool(plan, res types.Bool) types.Bool { - if !plan.Value && !plan.Null && res.Null { + if !plan.ValueBool() && !plan.IsNull() && res.IsNull() { return plan } return res } +var envVariableElemType = types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "key": types.StringType, + "value": types.StringType, + "target": types.SetType{ + ElemType: types.StringType, + }, + "git_branch": types.StringType, + "id": types.StringType, + }, +} + func convertResponseToProject(response client.ProjectResponse, fields projectCoercedFields, environment types.Set) Project { var gr *GitRepository if repo := response.Repository(); repo != nil { gr = &GitRepository{ - Type: types.String{Value: repo.Type}, - Repo: types.String{Value: repo.Repo}, + Type: types.StringValue(repo.Type), + Repo: types.StringValue(repo.Repo), } } @@ -196,20 +209,10 @@ func convertResponseToProject(response client.ProjectResponse, fields projectCoe for _, e := range response.EnvironmentVariables { target := []attr.Value{} for _, t := range e.Target { - target = append(target, types.String{Value: t}) + target = append(target, types.StringValue(t)) } - env = append(env, types.Object{ - Attrs: map[string]attr.Value{ - "key": types.String{Value: e.Key}, - "value": types.String{Value: e.Value}, - "target": types.Set{ - Elems: target, - ElemType: types.StringType, - }, - "git_branch": fromStringPointer(e.GitBranch), - "id": types.String{Value: e.ID}, - }, - AttrTypes: map[string]attr.Type{ + env = append(env, types.ObjectValueMust( + map[string]attr.Type{ "key": types.StringType, "value": types.StringType, "target": types.SetType{ @@ -218,33 +221,31 @@ func convertResponseToProject(response client.ProjectResponse, fields projectCoe "git_branch": types.StringType, "id": types.StringType, }, - }) + map[string]attr.Value{ + "key": types.StringValue(e.Key), + "value": types.StringValue(e.Value), + "target": types.SetValueMust(types.StringType, target), + "git_branch": fromStringPointer(e.GitBranch), + "id": types.StringValue(e.ID), + }, + )) + } + + environmentEntry := types.SetValueMust(envVariableElemType, env) + if len(response.EnvironmentVariables) == 0 && environment.IsNull() { + environmentEntry = types.SetNull(envVariableElemType) } return Project{ - BuildCommand: uncoerceString(fields.BuildCommand, fromStringPointer(response.BuildCommand)), - DevCommand: uncoerceString(fields.DevCommand, fromStringPointer(response.DevCommand)), - Environment: types.Set{ - Null: len(response.EnvironmentVariables) == 0 && environment.Null, - Elems: env, - ElemType: types.ObjectType{ - AttrTypes: map[string]attr.Type{ - "key": types.StringType, - "value": types.StringType, - "target": types.SetType{ - ElemType: types.StringType, - }, - "git_branch": types.StringType, - "id": types.StringType, - }, - }, - }, + BuildCommand: uncoerceString(fields.BuildCommand, fromStringPointer(response.BuildCommand)), + DevCommand: uncoerceString(fields.DevCommand, fromStringPointer(response.DevCommand)), + Environment: environmentEntry, Framework: fromStringPointer(response.Framework), GitRepository: gr, - ID: types.String{Value: response.ID}, + ID: types.StringValue(response.ID), IgnoreCommand: fromStringPointer(response.CommandForIgnoringBuildStep), InstallCommand: uncoerceString(fields.InstallCommand, fromStringPointer(response.InstallCommand)), - Name: types.String{Value: response.Name}, + Name: types.StringValue(response.Name), OutputDirectory: uncoerceString(fields.OutputDirectory, fromStringPointer(response.OutputDirectory)), PublicSource: uncoerceBool(fields.PublicSource, fromBoolPointer(response.PublicSource)), RootDirectory: fromStringPointer(response.RootDirectory), diff --git a/vercel/types_conversions.go b/vercel/types_conversions.go index 4c2c8003..514e3e39 100644 --- a/vercel/types_conversions.go +++ b/vercel/types_conversions.go @@ -2,48 +2,55 @@ package vercel import "github.com/hashicorp/terraform-plugin-framework/types" +func toPtr[T any](v T) *T { + return &v +} + func toStrPointer(v types.String) *string { - if v.Null || v.Unknown { + if v.IsNull() || v.IsUnknown() { return nil } - return &v.Value + return toPtr(v.ValueString()) } func toBoolPointer(v types.Bool) *bool { - if v.Null || v.Unknown { + if v.IsNull() || v.IsUnknown() { return nil } - return &v.Value + return toPtr(v.ValueBool()) } func toInt64Pointer(v types.Int64) *int64 { - if v.Null || v.Unknown { + if v.IsNull() || v.IsUnknown() { return nil } - return &v.Value + return toPtr(v.ValueInt64()) } func fromStringPointer(v *string) types.String { if v == nil { - return types.String{Null: true} + return types.StringNull() } - return types.String{Value: *v} + return types.StringValue(*v) } func fromBoolPointer(v *bool) types.Bool { if v == nil { - return types.Bool{Null: true} + return types.BoolNull() } - return types.Bool{Value: *v} + return types.BoolValue(*v) } func fromInt64Pointer(v *int64) types.Int64 { if v == nil { - return types.Int64{Null: true} + return types.Int64Null() } - return types.Int64{Value: *v} + return types.Int64Value(*v) } func toTeamID(v string) types.String { - return types.String{Value: v, Null: v == ""} + if v == "" { + return types.StringNull() + } + return types.StringValue(v) } diff --git a/vercel/validator_framework.go b/vercel/validator_framework.go index 7588d6f1..e3975aa2 100644 --- a/vercel/validator_framework.go +++ b/vercel/validator_framework.go @@ -88,15 +88,15 @@ func (v validatorFramework) Validate(ctx context.Context, req tfsdk.ValidateAttr if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if _, ok := v.frameworks[item.Value]; !ok { + if _, ok := v.frameworks[item.ValueString()]; !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid Framework", - fmt.Sprintf("The framework %s is not supported on Vercel. Must be one of %s.", item.Value, strings.Join(keys(v.frameworks), ", ")), + fmt.Sprintf("The framework %s is not supported on Vercel. Must be one of %s.", item.ValueString(), strings.Join(keys(v.frameworks), ", ")), ) return } diff --git a/vercel/validator_int64_greater_than.go b/vercel/validator_int64_greater_than.go index b5cbf7e6..adb18804 100644 --- a/vercel/validator_int64_greater_than.go +++ b/vercel/validator_int64_greater_than.go @@ -32,15 +32,15 @@ func (v validatorInt64GreaterThan) Validate(ctx context.Context, req tfsdk.Valid if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if item.Value < v.Min { + if item.ValueInt64() < v.Min { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid value provided", - fmt.Sprintf("Value must be greater than %d, got: %d.", v.Min, item.Value), + fmt.Sprintf("Value must be greater than %d, got: %d.", v.Min, item.ValueInt64()), ) return } diff --git a/vercel/validator_int64_less_than.go b/vercel/validator_int64_less_than.go index 31bfbcdd..8fa6da05 100644 --- a/vercel/validator_int64_less_than.go +++ b/vercel/validator_int64_less_than.go @@ -32,15 +32,15 @@ func (v validatorInt64LessThan) Validate(ctx context.Context, req tfsdk.Validate if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if item.Value > v.Max { + if item.ValueInt64() > v.Max { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid value provided", - fmt.Sprintf("Value must be less than %d, got: %d.", v.Max, item.Value), + fmt.Sprintf("Value must be less than %d, got: %d.", v.Max, item.ValueInt64()), ) return } diff --git a/vercel/validator_int64_one_of.go b/vercel/validator_int64_one_of.go index fab38390..70ef30e4 100644 --- a/vercel/validator_int64_one_of.go +++ b/vercel/validator_int64_one_of.go @@ -45,15 +45,15 @@ func (v validatorInt64OneOf) Validate(ctx context.Context, req tfsdk.ValidateAtt if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if _, ok := v.Items[item.Value]; !ok { + if _, ok := v.Items[item.ValueInt64()]; !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid value provided", - fmt.Sprintf("Item must be one of %s, got: %d.", strings.Join(v.keys(), " "), item.Value), + fmt.Sprintf("Item must be one of %s, got: %d.", strings.Join(v.keys(), " "), item.ValueInt64()), ) return } diff --git a/vercel/validator_map_items_min_count.go b/vercel/validator_map_items_min_count.go index d62361ca..b33e7691 100644 --- a/vercel/validator_map_items_min_count.go +++ b/vercel/validator_map_items_min_count.go @@ -33,10 +33,10 @@ func (v validatorMapItemsMinCount) Validate(ctx context.Context, req tfsdk.Valid if diags.HasError() { return } - if val.Unknown || val.Null { + if val.IsNull() || val.IsUnknown() { return } - count := len(val.Elems) + count := len(val.Elements()) if count < v.Min { resp.Diagnostics.AddAttributeError( req.AttributePath, diff --git a/vercel/validator_serverless_function_region.go b/vercel/validator_serverless_function_region.go index 8c89d3ee..689340b9 100644 --- a/vercel/validator_serverless_function_region.go +++ b/vercel/validator_serverless_function_region.go @@ -108,15 +108,15 @@ func (v validatorServerlessFunctionRegion) Validate(ctx context.Context, req tfs if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if _, ok := v.regions[item.Value]; !ok { + if _, ok := v.regions[item.ValueString()]; !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid Serverless Function Region", - fmt.Sprintf("The serverless function region %s is not supported on Vercel. Must be one of %s.", item.Value, strings.Join(keys(v.regions), ", ")), + fmt.Sprintf("The serverless function region %s is not supported on Vercel. Must be one of %s.", item.ValueString(), strings.Join(keys(v.regions), ", ")), ) return } diff --git a/vercel/validator_string_length_between.go b/vercel/validator_string_length_between.go index 743a2d14..a4417581 100644 --- a/vercel/validator_string_length_between.go +++ b/vercel/validator_string_length_between.go @@ -34,10 +34,10 @@ func (v validatorStringLengthBetween) Validate(ctx context.Context, req tfsdk.Va if diags.HasError() { return } - if str.Unknown || str.Null { + if str.IsUnknown() || str.IsNull() { return } - strLen := len(str.Value) + strLen := len(str.ValueString()) if strLen < v.Min || strLen > v.Max { resp.Diagnostics.AddAttributeError( req.AttributePath, diff --git a/vercel/validator_string_one_of.go b/vercel/validator_string_one_of.go index a7e723df..44974f0b 100644 --- a/vercel/validator_string_one_of.go +++ b/vercel/validator_string_one_of.go @@ -44,15 +44,15 @@ func (v validatorStringOneOf) Validate(ctx context.Context, req tfsdk.ValidateAt if diags.HasError() { return } - if item.Unknown || item.Null { + if item.IsUnknown() || item.IsNull() { return } - if _, ok := v.Items[item.Value]; !ok { + if _, ok := v.Items[item.ValueString()]; !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid value provided", - fmt.Sprintf("Item must be one of %s, got: %s.", strings.Join(v.keys(), ", "), item.Value), + fmt.Sprintf("Item must be one of %s, got: %s.", strings.Join(v.keys(), ", "), item.ValueString()), ) return } diff --git a/vercel/validator_string_regex.go b/vercel/validator_string_regex.go index 7338f8f1..ba261f01 100644 --- a/vercel/validator_string_regex.go +++ b/vercel/validator_string_regex.go @@ -34,10 +34,10 @@ func (v validatorStringRegex) Validate(ctx context.Context, req tfsdk.ValidateAt if diags.HasError() { return } - if str.Unknown || str.Null { + if str.IsUnknown() || str.IsNull() { return } - ok := v.Re.MatchString(str.Value) + ok := v.Re.MatchString(str.ValueString()) if !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, diff --git a/vercel/validator_string_set_items_in.go b/vercel/validator_string_set_items_in.go index 3e482384..525e0aee 100644 --- a/vercel/validator_string_set_items_in.go +++ b/vercel/validator_string_set_items_in.go @@ -44,25 +44,25 @@ func (v validatorStringSetItemsIn) Validate(ctx context.Context, req tfsdk.Valid if diags.HasError() { return } - if set.Unknown || set.Null { + if set.IsUnknown() || set.IsNull() { return } - for _, i := range set.Elems { + for _, i := range set.Elements() { var item types.String diags := tfsdk.ValueAs(ctx, i, &item) resp.Diagnostics.Append(diags...) if diags.HasError() { return } - if set.Unknown || set.Null { + if set.IsUnknown() || set.IsNull() { return } - if _, ok := v.Items[item.Value]; !ok { + if _, ok := v.Items[item.ValueString()]; !ok { resp.Diagnostics.AddAttributeError( req.AttributePath, "Invalid value provided", - fmt.Sprintf("%s, got %s", v.Description(ctx), item.Value), + fmt.Sprintf("%s, got %s", v.Description(ctx), item.ValueString()), ) return }