Resources/tools.lock.psd1

# Avm.Authoring managed-tool lock file.
#
# Schema (validated by Test-AvmToolsLock):
#
# @{
# schemaVersion = 1
# tools = @(
# @{
# name = '<lowercase-kebab>' # required
# version = '<semver-no-v>' # required, e.g. '1.9.5'
# urlTemplate = 'https://...{version}_{os}_{arch}...'
# archive = 'zip' | 'tar.gz' | 'raw'
# entrypoint = '<binary-basename>' # lowercase, no .exe
# sha256 = @{
# 'windows-amd64' = '<64-hex>'
# 'windows-arm64' = '<64-hex>'
# 'linux-amd64' = '<64-hex>'
# 'linux-arm64' = '<64-hex>'
# 'darwin-amd64' = '<64-hex>'
# 'darwin-arm64' = '<64-hex>'
# }
# # OPTIONAL: per-platform asset-name overrides for projects
# # whose release assets don't follow {os}_{arch} naming
# # (e.g. bicep). When present, urlTemplate may reference
# # the {platform} placeholder, which is replaced with the
# # alias for the resolved platform key.
# platformAliases = @{
# 'windows-amd64' = 'win-x64.exe'
# 'windows-arm64' = 'win-arm64.exe'
# 'linux-amd64' = 'linux-x64'
# 'linux-arm64' = 'linux-arm64'
# 'darwin-amd64' = 'osx-x64'
# 'darwin-arm64' = 'osx-arm64'
# }
# # OPTIONAL: list of platforms the upstream project does
# # NOT ship binaries for (e.g. tflint omits windows-arm64).
# # Those platforms must be ABSENT from sha256; runtime
# # resolve/install throws AvmToolException AVM1012 if the
# # current host platform matches.
# unsupportedPlatforms = @('windows-arm64')
# # OPTIONAL: per-platform archive override. Use when one
# # tool ships different archive formats per OS (e.g.
# # terraform-docs uses .tar.gz on darwin/linux but .zip
# # on windows). When present, every supported platform
# # must be listed and 'archive' acts as the documented
# # default. urlTemplate may reference '{ext}' which
# # resolves to '.zip' / '.tar.gz' / '' per archive type.
# archives = @{
# 'windows-amd64' = 'zip'
# 'windows-arm64' = 'zip'
# 'linux-amd64' = 'tar.gz'
# 'linux-arm64' = 'tar.gz'
# 'darwin-amd64' = 'tar.gz'
# 'darwin-arm64' = 'tar.gz'
# }
# }
# )
# }
#
# Rules:
# - All urlTemplate values MUST start with 'https://'. Mirrors are applied at
# download time via $env:AVM_MIRROR; the lock itself stays canonical.
# The mirror's scheme, authority, and path prefix are preserved, e.g.
# AVM_MIRROR='https://m.example.com/proxy' rewrites
# https://releases.hashicorp.com/terraform/1.9.5/foo.zip
# to
# https://m.example.com/proxy/terraform/1.9.5/foo.zip
# The mirror MUST itself be https://; http:// mirrors are rejected.
# - {os} resolves to windows|linux|darwin. {arch} resolves to amd64|arm64.
# - {platform} requires a platformAliases map and resolves per-platform.
# - {ext} resolves to '.zip' / '.tar.gz' / '' from the per-platform archive
# (the 'archives' map when present, else the top-level 'archive' field).
# - sha256 entries are 64-char lowercase hex (SHA256 of the downloaded archive).
# - sha256 MUST cover every platform except those listed in unsupportedPlatforms.
# - The 'tools' list MAY be empty (e.g. for fixture / test lockfiles).
#
# Populate canonical entries via:
# ./scripts/Update-AvmToolsLock.ps1 -Bicep <ver> -Conftest <ver> -Terraform <ver> -TerraformDocs <ver> -Tflint <ver>
@{
    schemaVersion = 1
    tools         = @(
        @{
            name            = 'bicep'
            version         = '0.30.3'
            urlTemplate     = 'https://github.com/Azure/bicep/releases/download/v{version}/bicep-{platform}'
            archive         = 'raw'
            entrypoint      = 'bicep'
            platformAliases = @{
                'windows-amd64' = 'win-x64.exe'
                'windows-arm64' = 'win-arm64.exe'
                'linux-amd64'   = 'linux-x64'
                'linux-arm64'   = 'linux-arm64'
                'darwin-amd64'  = 'osx-x64'
                'darwin-arm64'  = 'osx-arm64'
            }
            sha256          = @{
                'windows-amd64' = '8483fa5dca04fbe435b1e13c6d41faf7f29649d3e6941cde99142823e0eb4105'
                'windows-arm64' = '1ef5ebc66cbe501f817e6abe1bf6d4c4ca29d55d7b199a099c0c622a051633c0'
                'linux-amd64'   = '417b27fcf9dbfc9abc7db3303b3ba56781fee43c2f7ce8f759db9b43d3712d98'
                'linux-arm64'   = '410d6a08a8d82ff43f01879cf93a98e122c3b5b69e733b6921a22f6a80e47f76'
                'darwin-amd64'  = 'ce164b9099a4eee648edf0e9e788dbb2e5e958f2f2f0f76ba8bd655e7fd80735'
                'darwin-arm64'  = 'e299492cf1493f6a3d6dfce2b15801342ba043d62a9383da1bcc6d80263d45b5'
            }
        }
        @{
            name            = 'conftest'
            version         = '0.68.2'
            urlTemplate     = 'https://github.com/open-policy-agent/conftest/releases/download/v{version}/conftest_{version}_{platform}{ext}'
            archive         = 'tar.gz'
            entrypoint      = 'conftest'
            platformAliases = @{
                'windows-amd64' = 'Windows_x86_64'
                'windows-arm64' = 'Windows_arm64'
                'linux-amd64'   = 'Linux_x86_64'
                'linux-arm64'   = 'Linux_arm64'
                'darwin-amd64'  = 'Darwin_x86_64'
                'darwin-arm64'  = 'Darwin_arm64'
            }
            archives        = @{
                'windows-amd64' = 'zip'
                'windows-arm64' = 'zip'
                'linux-amd64'   = 'tar.gz'
                'linux-arm64'   = 'tar.gz'
                'darwin-amd64'  = 'tar.gz'
                'darwin-arm64'  = 'tar.gz'
            }
            sha256          = @{
                'windows-amd64' = '66a88d02e6c03a714e9f0751c3d86ee9c5591739c367ca1b79c4f9f2f90ac4cb'
                'windows-arm64' = 'd727e11a9b6fe05ae87c0261aeee7e59ca8be718d80cb7bf6c57206d1523823d'
                'linux-amd64'   = 'e8144c6d6d2ae0260b869caa60c7c262a1f95ac63ec1e5d2fb19be452d606347'
                'linux-arm64'   = '4005441089655ded475384cb87d57762ae08ebef78305bada49c70530d2f4184'
                'darwin-amd64'  = '7682c54243d2c16579589f55aac47c51389d26f103f828902880288ba7f0605e'
                'darwin-arm64'  = 'cdb5445179e0cc42906e2b0233694900f272a501878d416a9c875b1f7bdfd34c'
            }
        }
        @{
            name        = 'mapotf'
            version     = '0.1.4'
            urlTemplate = 'https://github.com/Azure/mapotf/releases/download/v{version}/mapotf_{version}_{os}_{arch}{ext}'
            archive     = 'tar.gz'
            entrypoint  = 'mapotf'
            archives    = @{
                'windows-amd64' = 'zip'
                'windows-arm64' = 'zip'
                'linux-amd64'   = 'tar.gz'
                'linux-arm64'   = 'tar.gz'
                'darwin-amd64'  = 'tar.gz'
                'darwin-arm64'  = 'tar.gz'
            }
            sha256      = @{
                'windows-amd64' = '9bf52956808a221423384e4a31eb665ddce24e6e6c06ffcf4d5a518f083491e4'
                'windows-arm64' = '40c810461af889ca5919b72d7c7ba5cb77887548cb9b95b7940bf3b24b5c4a79'
                'linux-amd64'   = '3e7bc818c8b08e55f571f5b3561e40fa42807498f4f657fe38a5a4ceeda242cf'
                'linux-arm64'   = 'a87462a7f9261bd9d10906bff543560ad58eff379f392958a0aa931933e4beca'
                'darwin-amd64'  = '43b580b480e6e86e54b0811f08c06a02fbcd0053c522b20548b352f82050df6d'
                'darwin-arm64'  = '4b639d07d5d7cea5934104f2f7c1885d1f32011f5530b2e184b3ac91002e22a5'
            }
        }
        @{
            name        = 'terraform'
            version     = '1.15.3'
            urlTemplate = 'https://releases.hashicorp.com/terraform/{version}/terraform_{version}_{os}_{arch}.zip'
            archive     = 'zip'
            entrypoint  = 'terraform'
            sha256      = @{
                'windows-amd64' = 'b9da8df3d92402551c86b8956be30fb87f600245321d2b31751afcf37218018c'
                'windows-arm64' = 'e4deb6e0aa7739ed8e45032a450731cc4dd7fc09bcdf61f977c881919f7cb3c3'
                'linux-amd64'   = 'c3d4b579064745a5f7e918125db23b12ba52a8a7287adb9f32c49d637e02e3bf'
                'linux-arm64'   = '9824eb010b835b2c872440a337a69acfa1782d36c24d3c09fe5defe75defc511'
                'darwin-amd64'  = '448e89a455e854941bd7e1396ba6ca46e92dd7e0ed1cc11d4da4cab637606d8a'
                'darwin-arm64'  = 'b97101c62c11eebd176e83cd42a313336200d54fdd18ce7770f65a5bfb0ab098'
            }
        }
        @{
            name        = 'terraform-docs'
            version     = '0.20.0'
            urlTemplate = 'https://github.com/terraform-docs/terraform-docs/releases/download/v{version}/terraform-docs-v{version}-{os}-{arch}{ext}'
            archive     = 'tar.gz'
            entrypoint  = 'terraform-docs'
            archives    = @{
                'windows-amd64' = 'zip'
                'windows-arm64' = 'zip'
                'linux-amd64'   = 'tar.gz'
                'linux-arm64'   = 'tar.gz'
                'darwin-amd64'  = 'tar.gz'
                'darwin-arm64'  = 'tar.gz'
            }
            sha256      = @{
                'windows-amd64' = 'fb372a26f934dc0e163ca914a5aa99fe13d094b1f64f937efe9dc79bdddf05a0'
                'windows-arm64' = '1e505ef48aab1ce00f0f13eff247afecaec57f79a0d7353af101de114de2aae3'
                'linux-amd64'   = '34ae01772412bb11474e6718ea62113e38ff5964ee570a98c69fafe3a6dff286'
                'linux-arm64'   = '371b4ed983781d1efdd8f7de06264baac41b1d80927f7fd718c405a303d863a0'
                'darwin-amd64'  = '8c7ea42429d7f5e3dae3de32f3873fde0419332932549147f40916d3f613b8f7'
                'darwin-arm64'  = '8723013cfe0369c389f4e6cb6e3cfca1aebaefd67871e349e7547f2201564dad'
            }
        }
        @{
            name                 = 'tflint'
            version              = '0.55.1'
            urlTemplate          = 'https://github.com/terraform-linters/tflint/releases/download/v{version}/tflint_{os}_{arch}.zip'
            archive              = 'zip'
            entrypoint           = 'tflint'
            unsupportedPlatforms = @(
                'windows-arm64'
            )
            sha256               = @{
                'windows-amd64' = '667e8333eed843298ba1fd1120776784c0dacc17de25e253bc8a67b03adbe87d'
                'linux-amd64'   = '53379f38bc1e86c18885bfc85dc5fe2cd1f59729ae9a2afa16905189c1d67aa9'
                'linux-arm64'   = '3d5d6e1e749ae1d46c153dd6fac358cdfa76df475de8f2660a91ff531021f93b'
                'darwin-amd64'  = '98b1c04030f24b98398413a3a82a9646cd607a958d07576f0151773a6ded30fc'
                'darwin-arm64'  = 'e1f9f843a7bc4cf9631b30e7d65beda6fd5e8013daa91d3a35e23c606a360e50'
            }
        }
    )
}