diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..a055d25 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: nao1215 + diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..53a6304 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,21 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG Report] XXX" +labels: bug +assignees: '' + +--- + +## About the problem +A clear description of the bug encountered. + +## Expected behavior +Expected behavior. + +## Steps to reproduce +Steps to reproduce the bug. + +## Environment +- OS: [e.g. Windows 10] +- Command Name & Version: [e.g. s3hub 0.1.0] \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6865923 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: "/" + schedule: + interval: daily + time: "20:00" + groups: + aws-sdk: + patterns: + - github.com/aws/aws-sdk-go-v2 + - github.com/aws/aws-sdk-go-v2/* + open-pull-requests-limit: 10 + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c95504e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,21 @@ +name: Build + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version-file: "go.mod" + + - name: Build + run: make build diff --git a/.github/workflows/gitleak.yml b/.github/workflows/gitleak.yml new file mode 100644 index 0000000..6f99525 --- /dev/null +++ b/.github/workflows/gitleak.yml @@ -0,0 +1,13 @@ +name: gitleaks +on: [pull_request] +jobs: + scan: + name: gitleaks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: gitleaks/gitleaks-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/linux_test.yml b/.github/workflows/linux_test.yml new file mode 100644 index 0000000..2c7fa30 --- /dev/null +++ b/.github/workflows/linux_test.yml @@ -0,0 +1,34 @@ +name: LinuxUnitTest + +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + unit_test: + name: Unit test (linux) + + strategy: + matrix: + platform: [ubuntu-latest] + + runs-on: ${{ matrix.platform }} + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v4 + with: + go-version: "1" + check-latest: true + + - name: Download dependencies + run: go mod download + + - uses: nao1215/actions-hottest@v1 + with: + args: '-cover -coverpkg=./... -coverprofile=coverage.out ./...' + - uses: k1LoW/octocov-action@v0 diff --git a/.github/workflows/mac_test.yml b/.github/workflows/mac_test.yml new file mode 100644 index 0000000..baec95a --- /dev/null +++ b/.github/workflows/mac_test.yml @@ -0,0 +1,31 @@ +name: MacUnitTest + +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + unit_test: + name: Unit test (mac) + + strategy: + matrix: + platform: [macos-latest] + + runs-on: ${{ matrix.platform }} + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v4 + with: + go-version: "1" + check-latest: true + + - name: Run unit test + run: | + go mod download + go test -race -v ./... diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..829913e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,27 @@ +name: Release + +on: + push: + tags: + - "v*" + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version-file: "go.mod" + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v5 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml new file mode 100644 index 0000000..ebaac1e --- /dev/null +++ b/.github/workflows/reviewdog.yml @@ -0,0 +1,41 @@ +name: reviewdog +on: [pull_request] + +jobs: + golangci-lint: + name: golangci-lint + runs-on: ubuntu-latest + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: golangci-lint + uses: reviewdog/action-golangci-lint@v2 + with: + reporter: github-pr-review + level: warning + + misspell: + name: misspell + runs-on: ubuntu-latest + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: misspell + uses: reviewdog/action-misspell@v1 + with: + reporter: github-pr-review + level: warning + locale: "US" + + actionlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: reviewdog/action-actionlint@v1 + with: + reporter: github-pr-review + level: warning diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml new file mode 100644 index 0000000..acd04c6 --- /dev/null +++ b/.github/workflows/security.yml @@ -0,0 +1,19 @@ +name: Gosec +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + branches: [main] +jobs: + tests: + runs-on: ubuntu-latest + env: + GO111MODULE: on + steps: + - name: Checkout Source + uses: actions/checkout@v4 + - name: Run Gosec Security Scanner + uses: securego/gosec@master + with: + args: ./... diff --git a/.github/workflows/windows_test.yml b/.github/workflows/windows_test.yml new file mode 100644 index 0000000..6a17f99 --- /dev/null +++ b/.github/workflows/windows_test.yml @@ -0,0 +1,31 @@ +name: WindowsUnitTest + +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + unit_test: + name: Unit test (windows) + + strategy: + matrix: + platform: [windows-latest] + + runs-on: ${{ matrix.platform }} + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v4 + with: + go-version: "1" + check-latest: true + + - name: Run unit test + run: | + go mod download + go test -race -v ./... diff --git a/.gitignore b/.gitignore index 3b735ec..6b0df5d 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ # Go workspace file go.work +cover.* +data diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..4d8b8c5 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,56 @@ +run: + go: "1.20" + +issues: + exclude-use-default: false + +linters: + disable-all: true + enable: + - deadcode + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - structcheck + - typecheck + - unused + - varcheck + - asciicheck + - bodyclose + - dogsled + - dupl + - durationcheck + - errorlint + - exhaustive + - exportloopref + - forcetypeassert + - gochecknoglobals + - gochecknoinits + - goconst + - gocritic + - goimports + - gomnd + - gosec + - ifshort + - misspell + - nakedret + - noctx + - paralleltest + - prealloc + - rowserrcheck + - sqlclosecheck + - stylecheck + - tagliatelle + - thelper + - unconvert + - unparam + - wastedassign + - whitespace +linters-settings: + tagliatelle: + case: + use-field-name: true + rules: + json: snake \ No newline at end of file diff --git a/.octocov.yml b/.octocov.yml new file mode 100644 index 0000000..417e909 --- /dev/null +++ b/.octocov.yml @@ -0,0 +1,27 @@ +# generated by octocov init +coverage: + if: true + acceptable: 60% + badge: + path: docs/coverage.svg +testExecutionTime: + if: true + acceptable: + - 1:1.1 + - current <= 1min && diff <= 2sec + badge: + path: docs/time.svg +diff: + datastores: + - artifact://${GITHUB_REPOSITORY} +comment: + if: is_pull_request +summary: + if: true +report: + if: is_default_branch + datastores: + - artifact://${GITHUB_REPOSITORY} +codeToTestRatio: + badge: + path: docs/ratio.svg diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..37832f0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +## [](/compare/77bdf974281a...) (2023-12-23) + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..a7b6cfc --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1 @@ +Please approach others with respect. That is everything. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b0b1080 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,20 @@ +## Introduction +Thank you for considering contributing to the rainbow project. User feedback is a source of encouragement for me. This document outlines a few rules to ensure that users do not feel overwhelmed when contributing to the rainbow project. + +If you have any questions, feel free to communicate. + +## Typo Fixes +If you find a typo, please report it via an Issue or create a Pull Request. If the tests pass, it will be merged promptly. + +## Bug Reporting/Fixing +If you encounter behavior that seems like a bug, please report it via an Issue. When creating a Pull Request, be sure to include unit tests that reproduce the bug. + +## New Feature Proposals +We are always eager to hear fantastic ideas! Start by sharing your proposal in an Issue. + +## GitHub Star +This is the easiest way to contribute! I enjoy seeing the GitHub Stars increase. + +## GitHub Sponsors +If you wish to provide financial support, please do so through [GitHub Sponsors](https://github.com/sponsors/nao1215). +This project incurs costs on AWS, so even small contributions help cover expenses. Financial support is appreciated. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9cf4f05 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +.PHONY: build test clean changelog tools help + +APP = dummy +VERSION = $(shell git describe --tags --abbrev=0) +GO = go +GO_BUILD = $(GO) build +GO_FORMAT = $(GO) fmt +GOFMT = gofmt +GO_LIST = $(GO) list +GO_INSTALL = $(GO) install +GO_TEST = $(GO) test -v +GO_TOOL = $(GO) tool +GO_VET = $(GO) vet +GO_DEP = $(GO) mod +GOOS = "" +GOARCH = "" +GO_PKGROOT = ./... +GO_PACKAGES = $(shell $(GO_LIST) $(GO_PKGROOT)) +GO_LDFLAGS = -ldflags '-X github.com/nao1215/rainbow/version.Version=${VERSION}' + +build: ## Build binary + # env GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO_BUILD) $(GO_LDFLAGS) -o $(APP) main.go + echo "build" + +clean: ## Clean project + -rm -rf $(APP) cover.out cover.html + +test: ## Start test + env GOOS=$(GOOS) $(GO_TEST) -cover $(GO_PKGROOT) -coverprofile=cover.out + $(GO_TOOL) cover -html=cover.out -o cover.html + +changelog: ## Generate changelog + ghch --format markdown > CHANGELOG.md + +tools: ## Install dependency tools + $(GO_INSTALL) github.com/Songmu/ghch/cmd/ghch@latest + +.DEFAULT_GOAL := help +help: + @grep -E '^[0-9a-zA-Z_-]+[[:blank:]]*:.*?## .*$$' $(MAKEFILE_LIST) | sort \ + | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[1;32m%-15s\033[0m %s\n", $$1, $$2}' \ No newline at end of file diff --git a/README.md b/README.md index 3bfd4e7..9063bc5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,28 @@ -# rainbow [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) -rainbow - toolset for AWS +## rainbow +> [!IMPORTANT] +> This project is under development. Do not use it in production environments. -## Contributors ✨ +The rainbow project is a toolset for managing AWS resources. This project consists of multiple CLI and CloudFormation templates. + +## CLI List +[WIP] + +## Template List +[WIP] + +## LICENSE +This project is licensed under the terms of the MIT license. See the [LICENSE](./LICENSE) file. +## Contributing +Contributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md), [Code of Conduct](./CODE_OF_CONDUCT.md) for more information. This project incurs costs on AWS, and financial support from you would make it easier to maintain the project. If you wish to provide financial support, please do so through [GitHub Sponsors](https://github.com/sponsors/nao1215) + +## GitHub Star History +[WIP] + +## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): diff --git a/app/.gitkeep b/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cloudformation/.gitkeep b/cloudformation/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cmd/.gitkeep b/cmd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..0393cd8 --- /dev/null +++ b/compose.yml @@ -0,0 +1,18 @@ +services: + localstack: + container_name: "rainbow-localstack" + image: localstack/localstack:latest + ports: + - "127.0.0.1:4566:4566" # LocalStack Gateway + - "127.0.0.1:4510-4559:4510-4559" # external services port range + environment: + - DEBUG=${DEBUG-} + - DOCKER_HOST=unix:///var/run/docker.sock + volumes: + - "${LOCALSTACK_VOLUME_DIR:-./localstack}:/var/lib/localstack" + - "/var/run/docker.sock:/var/run/docker.sock" + - "localstack:/etc/localstack/init/ready.d" + - "data:/home/localstack/data" +volumes: + localstack: + data: diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..ecd8e23 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/nao1215/rainbow + +go 1.19 + +require github.com/google/go-cmp v0.6.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..5a8d551 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/localstack/.gitkeep b/localstack/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/localstack/cache/machine.json b/localstack/cache/machine.json new file mode 100644 index 0000000..bb067af --- /dev/null +++ b/localstack/cache/machine.json @@ -0,0 +1 @@ +{"machine_id": "8f181a43"} \ No newline at end of file diff --git a/localstack/cache/server.test.pem b/localstack/cache/server.test.pem new file mode 100644 index 0000000..24823b3 --- /dev/null +++ b/localstack/cache/server.test.pem @@ -0,0 +1,150 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCYldIu/1FUwMEY +5O+7BJH5V0IvbeTUypeMr5ZqQCaMQOTCXyHy4zverms4TmQWYwCaQd6Fb1c8wRoH +9gp5cIoitIDaJSXvQwHSJETTxlGZ1sKmBbvshUQaddXwBWupDWnHeWVQqsp/IgJG +M0/4QLSZ0MuTHLR+IkVv5wpdfAp30nHnUGI+0UcORxS6aJ3d+F7WiHFjDv3RVjiF +FKlhluWlnGiC7RJ2n2MKtEakS25245UnR02TBDGzyOTlKw1qdg0/RRqk9UmR+hi8 +y//M3t7c6Mk8MfdoyCpS1D0j/FX9xFnebiZ3CfGAEE3mwLXs/H8FAn/ft4ypG5lV +xUho25GnAgMBAAECggEALsy9E8chpfIdB8qoMN9c+nImDbASIKYmx3LPmrUkXZ5F +y8wr+Hhz04AByNpaXndtJuMPIjQdOLgtiMWRPuAirjRY1Q/Ry8nslAylw6KvQpUZ +TJyzn/7b/ZWo0Z6H/+jqSdFVHuHTjBzdP7TbUVRfUFI3Ll7+iTVvwLvHdRbniwpa +Xp63jGjeCdCV4iBCvlCsZDCYKfzukWBz0gDNC8zYugPBLQPDo/PtFrWJPUWN68uX +k1sZOBCCqYWYH6abodtF7ZfDw4da4Z6YUlANx5C0TxhZWvYV4IeL6gfy22J52yVA +1ZQvo2BjTM4sJ7tJCC+JMXrgU97XdLuDvXz1vxuOuQKBgQDWGjP6TyTItsvEf1l4 +i5N5oUHP+c8Ug5IXFO3IfRxm8zobWgj3N6wVOteDq40yXKnHHQQYlq+SVMePrSTb +mTcUVCSXWCizzB27GluZ7Rz9OHnVI4q4y4gpyGwk/XSeGKuOuKQaNVeA7FMzjVss +AogFOb2rnVbXzLbxM2EUIYIs4wKBgQC2cdIKSgP03TLM3aQd472+Q53Qg1TD66z2 +Pt6dlugkd1xWs6JlCkFzGA2Qvpt6BNYHXTOSrhYBMYkZjI3qSbBFkEMFpV/Ubssp +HR378Ye7XIT0fLZDE59wDAT5U26TNU4Haj5IoRzJbnfSQPOE55uRybBSHdZAsQDK +Tdy0zm7HbQKBgFJu+k5IxJ/nCaOZaMhp7Rkqhl1eEGYUll3+t+K2kQXuZhP74XHV +5JKz+iB/H7khRlkcieQxuF29+KwP/R3z6uoPz5rZ3aoET/onFte4HK4+XWI78gBe +lQmJWmIPmCP62ar02nIg0ZUY6JvztAPI4bgpWCbISJSEBHfv0VPf5vADAoGAAqiX +8fRwKFJM2jVkndbivfIIS7COPKijhZcW8V7wlQ90NgM6G5TRrVatY+2TIG0PnV3b +UYjd4ziQkeG9c6uNOQZII73sLpFKvpehBznWy4EmotVqZoHTsfNK40M2+kgtkegX +bkGCxOCqOFMf+VDSsIYq3pd2tsydgVUvISdc7+UCgYBfnlEiNXCyXK30/VE34eUF +pJ/6szw2JiaPsmDjP7HN9mNgc3v5DCPbOLwRGe8xPt4hVwTuWC1nhU8WStuwtslT +MnHT4gM8CB87Oqmf/erLb4Rp1+5yH3WKw57BaFhM0NOB3ZIF8u0v2NA8e2Opvpwq +e33LIiuTigyeaUOKTPOlzg== +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIILCzCCCfOgAwIBAgISBGh4L/vjvV+RLUccWbjcJT3FMA0GCSqGSIb3DQEBCwUA +MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD +EwJSMzAeFw0yMzEyMTkxMzAzMDlaFw0yNDAzMTgxMzAzMDhaMCUxIzAhBgNVBAMT +GmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAmJXSLv9RVMDBGOTvuwSR+VdCL23k1MqXjK+WakAmjEDkwl8h +8uM73q5rOE5kFmMAmkHehW9XPMEaB/YKeXCKIrSA2iUl70MB0iRE08ZRmdbCpgW7 +7IVEGnXV8AVrqQ1px3llUKrKfyICRjNP+EC0mdDLkxy0fiJFb+cKXXwKd9Jx51Bi +PtFHDkcUumid3fhe1ohxYw790VY4hRSpYZblpZxogu0Sdp9jCrRGpEtuduOVJ0dN +kwQxs8jk5SsNanYNP0UapPVJkfoYvMv/zN7e3OjJPDH3aMgqUtQ9I/xV/cRZ3m4m +dwnxgBBN5sC17Px/BQJ/37eMqRuZVcVIaNuRpwIDAQABo4IIJjCCCCIwDgYDVR0P +AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBT5ScaX/rJchX2t/5fa7RKtua9XzzAfBgNVHSMEGDAW +gBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUH +MAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3Iz +LmkubGVuY3Iub3JnLzCCBi4GA1UdEQSCBiUwggYhgicqLmFtcGxpZnlhcHAubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouY2xvdWRmcm9udC5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIIxKi5ka3IuZWNyLmV1LWNlbnRyYWwtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLmV1LXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIgKi5lbGIubG9jYWxob3N0LmxvY2Fsc3RhY2su +Y2xvdWSCNCouZXUtY2VudHJhbC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSouZXUtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCKCouZXhlY3V0ZS1hcGkubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCNCoubGFtYmRhLXVybC5ldS1jZW50cmFsLTEubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC5ldS13ZXN0LTEubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTEubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTIubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0LTEu +bG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0 +LTIubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCHCoubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCJyoub3BlbnNlYXJjaC5sb2NhbGhvc3QubG9jYWxzdGFjay5j +bG91ZIInKi5zMy13ZWJzaXRlLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgh8q +LnMzLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgiAqLnNjbS5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIImKi5zbm93Zmxha2UubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCMSoudXMtZWFzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSoudXMtZWFzdC0yLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0yLm9wZW5zZWFyY2gubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vk +gitzcXMuZXUtY2VudHJhbC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgihz +cXMuZXUtd2VzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMt +ZWFzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtZWFzdC0y +LmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0xLmxvY2Fs +aG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0yLmxvY2FsaG9zdC5s +b2NhbHN0YWNrLmNsb3VkMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIBAwYKKwYBBAHW +eQIEAgSB9ASB8QDvAHUASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA +AAGMgmM56AAABAMARjBEAiBdjtLOKy6EGkaSke/1sHqkQvjikg0EldDvLlv7Q957 +ywIgA5A7R2fWRU2drghCgIUJXZ5ht2jOO4ZKtJelOK6KzcIAdgCi4r/WHt4vLweg +1k5tN6fcZUOwxrUuotq3iviabfUX2AAAAYyCYzpAAAAEAwBHMEUCIHKFYGyxXey+ +KJEmiROqLzewJ34eJzCCKGyyK4anRCKuAiEA4x1X0IC0orOHIKljM6aQwCQVNJqH +gpw+Zr/xfcwy26cwDQYJKoZIhvcNAQELBQADggEBACJpXbqareWNaDDLDH/Io//u +oSbTvyprKKpf1mjPn2julC/Mw74FCua6wRsm83hJOwULebH4WhWA9iyssNkGeRpf +tl0bnrg5if/nrIsup+SPs7VGPr/5P2xiHXq3haqmCAjaSxrlJHwsSfBXT2eBxrWT +gg/iQSpZc7bRzvBxN6iNXVwnnA+WE1ACtQU6pYn8sJd8YrhKb/SNpiHbro7Vl6qA +m25bTXspVkojnvIIhNyGceotJG49iJo1swmlYM5fqNVvcqeEEMqX0yAUXbkF2yWS +bxnDjAmc3qJGZNXdSvjKVIJw/7uygPqITV7HXg6TPYTO9F9sEL1MIo3UbmIEDZk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw +WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg +RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP +R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx +sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm +NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg +Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG +/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB +Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA +FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw +AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw +Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB +gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W +PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl +ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz +CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm +lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 +avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 +yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O +yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids +hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ +HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv +MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX +nLRbwHOoq7hHwg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC +ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL +wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D +LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK +4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5 +bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y +sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ +Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4 +FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc +SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql +PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND +TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1 +c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx ++tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB +ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu +b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E +U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu +MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC +5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW +9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG +WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O +he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC +Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5 +-----END CERTIFICATE----- diff --git a/localstack/cache/server.test.pem.crt b/localstack/cache/server.test.pem.crt new file mode 100644 index 0000000..956128b --- /dev/null +++ b/localstack/cache/server.test.pem.crt @@ -0,0 +1,122 @@ +-----BEGIN CERTIFICATE----- +MIILCzCCCfOgAwIBAgISBGh4L/vjvV+RLUccWbjcJT3FMA0GCSqGSIb3DQEBCwUA +MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD +EwJSMzAeFw0yMzEyMTkxMzAzMDlaFw0yNDAzMTgxMzAzMDhaMCUxIzAhBgNVBAMT +GmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAmJXSLv9RVMDBGOTvuwSR+VdCL23k1MqXjK+WakAmjEDkwl8h +8uM73q5rOE5kFmMAmkHehW9XPMEaB/YKeXCKIrSA2iUl70MB0iRE08ZRmdbCpgW7 +7IVEGnXV8AVrqQ1px3llUKrKfyICRjNP+EC0mdDLkxy0fiJFb+cKXXwKd9Jx51Bi +PtFHDkcUumid3fhe1ohxYw790VY4hRSpYZblpZxogu0Sdp9jCrRGpEtuduOVJ0dN +kwQxs8jk5SsNanYNP0UapPVJkfoYvMv/zN7e3OjJPDH3aMgqUtQ9I/xV/cRZ3m4m +dwnxgBBN5sC17Px/BQJ/37eMqRuZVcVIaNuRpwIDAQABo4IIJjCCCCIwDgYDVR0P +AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBT5ScaX/rJchX2t/5fa7RKtua9XzzAfBgNVHSMEGDAW +gBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUH +MAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3Iz +LmkubGVuY3Iub3JnLzCCBi4GA1UdEQSCBiUwggYhgicqLmFtcGxpZnlhcHAubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouY2xvdWRmcm9udC5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIIxKi5ka3IuZWNyLmV1LWNlbnRyYWwtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLmV1LXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIgKi5lbGIubG9jYWxob3N0LmxvY2Fsc3RhY2su +Y2xvdWSCNCouZXUtY2VudHJhbC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSouZXUtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCKCouZXhlY3V0ZS1hcGkubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCNCoubGFtYmRhLXVybC5ldS1jZW50cmFsLTEubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC5ldS13ZXN0LTEubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTEubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTIubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0LTEu +bG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0 +LTIubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCHCoubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCJyoub3BlbnNlYXJjaC5sb2NhbGhvc3QubG9jYWxzdGFjay5j +bG91ZIInKi5zMy13ZWJzaXRlLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgh8q +LnMzLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgiAqLnNjbS5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIImKi5zbm93Zmxha2UubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCMSoudXMtZWFzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSoudXMtZWFzdC0yLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0yLm9wZW5zZWFyY2gubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vk +gitzcXMuZXUtY2VudHJhbC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgihz +cXMuZXUtd2VzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMt +ZWFzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtZWFzdC0y +LmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0xLmxvY2Fs +aG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0yLmxvY2FsaG9zdC5s +b2NhbHN0YWNrLmNsb3VkMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIBAwYKKwYBBAHW +eQIEAgSB9ASB8QDvAHUASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA +AAGMgmM56AAABAMARjBEAiBdjtLOKy6EGkaSke/1sHqkQvjikg0EldDvLlv7Q957 +ywIgA5A7R2fWRU2drghCgIUJXZ5ht2jOO4ZKtJelOK6KzcIAdgCi4r/WHt4vLweg +1k5tN6fcZUOwxrUuotq3iviabfUX2AAAAYyCYzpAAAAEAwBHMEUCIHKFYGyxXey+ +KJEmiROqLzewJ34eJzCCKGyyK4anRCKuAiEA4x1X0IC0orOHIKljM6aQwCQVNJqH +gpw+Zr/xfcwy26cwDQYJKoZIhvcNAQELBQADggEBACJpXbqareWNaDDLDH/Io//u +oSbTvyprKKpf1mjPn2julC/Mw74FCua6wRsm83hJOwULebH4WhWA9iyssNkGeRpf +tl0bnrg5if/nrIsup+SPs7VGPr/5P2xiHXq3haqmCAjaSxrlJHwsSfBXT2eBxrWT +gg/iQSpZc7bRzvBxN6iNXVwnnA+WE1ACtQU6pYn8sJd8YrhKb/SNpiHbro7Vl6qA +m25bTXspVkojnvIIhNyGceotJG49iJo1swmlYM5fqNVvcqeEEMqX0yAUXbkF2yWS +bxnDjAmc3qJGZNXdSvjKVIJw/7uygPqITV7HXg6TPYTO9F9sEL1MIo3UbmIEDZk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw +WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg +RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP +R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx +sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm +NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg +Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG +/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB +Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA +FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw +AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw +Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB +gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W +PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl +ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz +CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm +lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 +avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 +yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O +yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids +hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ +HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv +MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX +nLRbwHOoq7hHwg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC +ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL +wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D +LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK +4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5 +bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y +sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ +Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4 +FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc +SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql +PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND +TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1 +c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx ++tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB +ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu +b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E +U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu +MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC +5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW +9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG +WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O +he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC +Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5 +-----END CERTIFICATE----- \ No newline at end of file diff --git a/localstack/cache/server.test.pem.key b/localstack/cache/server.test.pem.key new file mode 100644 index 0000000..7a87675 --- /dev/null +++ b/localstack/cache/server.test.pem.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCYldIu/1FUwMEY +5O+7BJH5V0IvbeTUypeMr5ZqQCaMQOTCXyHy4zverms4TmQWYwCaQd6Fb1c8wRoH +9gp5cIoitIDaJSXvQwHSJETTxlGZ1sKmBbvshUQaddXwBWupDWnHeWVQqsp/IgJG +M0/4QLSZ0MuTHLR+IkVv5wpdfAp30nHnUGI+0UcORxS6aJ3d+F7WiHFjDv3RVjiF +FKlhluWlnGiC7RJ2n2MKtEakS25245UnR02TBDGzyOTlKw1qdg0/RRqk9UmR+hi8 +y//M3t7c6Mk8MfdoyCpS1D0j/FX9xFnebiZ3CfGAEE3mwLXs/H8FAn/ft4ypG5lV +xUho25GnAgMBAAECggEALsy9E8chpfIdB8qoMN9c+nImDbASIKYmx3LPmrUkXZ5F +y8wr+Hhz04AByNpaXndtJuMPIjQdOLgtiMWRPuAirjRY1Q/Ry8nslAylw6KvQpUZ +TJyzn/7b/ZWo0Z6H/+jqSdFVHuHTjBzdP7TbUVRfUFI3Ll7+iTVvwLvHdRbniwpa +Xp63jGjeCdCV4iBCvlCsZDCYKfzukWBz0gDNC8zYugPBLQPDo/PtFrWJPUWN68uX +k1sZOBCCqYWYH6abodtF7ZfDw4da4Z6YUlANx5C0TxhZWvYV4IeL6gfy22J52yVA +1ZQvo2BjTM4sJ7tJCC+JMXrgU97XdLuDvXz1vxuOuQKBgQDWGjP6TyTItsvEf1l4 +i5N5oUHP+c8Ug5IXFO3IfRxm8zobWgj3N6wVOteDq40yXKnHHQQYlq+SVMePrSTb +mTcUVCSXWCizzB27GluZ7Rz9OHnVI4q4y4gpyGwk/XSeGKuOuKQaNVeA7FMzjVss +AogFOb2rnVbXzLbxM2EUIYIs4wKBgQC2cdIKSgP03TLM3aQd472+Q53Qg1TD66z2 +Pt6dlugkd1xWs6JlCkFzGA2Qvpt6BNYHXTOSrhYBMYkZjI3qSbBFkEMFpV/Ubssp +HR378Ye7XIT0fLZDE59wDAT5U26TNU4Haj5IoRzJbnfSQPOE55uRybBSHdZAsQDK +Tdy0zm7HbQKBgFJu+k5IxJ/nCaOZaMhp7Rkqhl1eEGYUll3+t+K2kQXuZhP74XHV +5JKz+iB/H7khRlkcieQxuF29+KwP/R3z6uoPz5rZ3aoET/onFte4HK4+XWI78gBe +lQmJWmIPmCP62ar02nIg0ZUY6JvztAPI4bgpWCbISJSEBHfv0VPf5vADAoGAAqiX +8fRwKFJM2jVkndbivfIIS7COPKijhZcW8V7wlQ90NgM6G5TRrVatY+2TIG0PnV3b +UYjd4ziQkeG9c6uNOQZII73sLpFKvpehBznWy4EmotVqZoHTsfNK40M2+kgtkegX +bkGCxOCqOFMf+VDSsIYq3pd2tsydgVUvISdc7+UCgYBfnlEiNXCyXK30/VE34eUF +pJ/6szw2JiaPsmDjP7HN9mNgc3v5DCPbOLwRGe8xPt4hVwTuWC1nhU8WStuwtslT +MnHT4gM8CB87Oqmf/erLb4Rp1+5yH3WKw57BaFhM0NOB3ZIF8u0v2NA8e2Opvpwq +e33LIiuTigyeaUOKTPOlzg== +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/localstack/cache/service-catalog-2_1_1_dev-1_29_165.pickle b/localstack/cache/service-catalog-2_1_1_dev-1_29_165.pickle new file mode 100644 index 0000000..bf7a06a Binary files /dev/null and b/localstack/cache/service-catalog-2_1_1_dev-1_29_165.pickle differ diff --git a/script/.gitkeep b/script/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/version/version.go b/version/version.go new file mode 100644 index 0000000..062f7f2 --- /dev/null +++ b/version/version.go @@ -0,0 +1,20 @@ +package version + +import ( + "runtime/debug" +) + +// Version value is set by ldflags +var Version string + +// GetVersion return command version. +// Version global variable is set by ldflags. +func GetVersion() string { + version := "unknown" + if Version != "" { + version = Version + } else if buildInfo, ok := debug.ReadBuildInfo(); ok { + version = buildInfo.Main.Version + } + return version +} diff --git a/version/version_test.go b/version/version_test.go new file mode 100644 index 0000000..a737fb5 --- /dev/null +++ b/version/version_test.go @@ -0,0 +1,26 @@ +package version + +import ( + "testing" + + "github.com/google/go-cmp/cmp" +) + +func TestGetVersion(t *testing.T) { + t.Run("If global variable 'Version' is empty, return '' from build information", func(t *testing.T) { + got := GetVersion() + want := "" + if diff := cmp.Diff(got, want); diff != "" { + t.Errorf("GetVersion() mismatch (-want +got):\n%s", diff) + } + }) + + t.Run("If global variable 'Version' is not empty, return 'Version' from build information", func(t *testing.T) { + Version = "test" + got := GetVersion() + want := "test" + if diff := cmp.Diff(got, want); diff != "" { + t.Errorf("GetVersion() mismatch (-want +got):\n%s", diff) + } + }) +}