Update dependencies
This commit is contained in:
263
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md
generated
vendored
Normal file
263
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,263 @@
|
||||
# v1.7.2 (2023-12-08)
|
||||
|
||||
* **Bug Fix**: Correct loading of [services *] sections into shared config.
|
||||
|
||||
# v1.7.1 (2023-11-16)
|
||||
|
||||
* **Bug Fix**: Fix recognition of trailing comments in shared config properties. # or ; separators that aren't preceded by whitespace at the end of a property value should be considered part of it.
|
||||
|
||||
# v1.7.0 (2023-11-13)
|
||||
|
||||
* **Feature**: Replace the legacy config parser with a modern, less-strict implementation. Parsing failures within a section will now simply ignore the invalid line rather than silently drop the entire section.
|
||||
|
||||
# v1.6.0 (2023-11-09.2)
|
||||
|
||||
* **Feature**: BREAKFIX: In order to support subproperty parsing, invalid property definitions must not be ignored
|
||||
|
||||
# v1.5.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.5.1 (2023-11-07)
|
||||
|
||||
* **Bug Fix**: Fix subproperty performance regression
|
||||
|
||||
# v1.5.0 (2023-11-01)
|
||||
|
||||
* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.4.0 (2023-10-31)
|
||||
|
||||
* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/).
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.45 (2023-10-12)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.44 (2023-10-06)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.43 (2023-09-22)
|
||||
|
||||
* **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0.
|
||||
* **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats.
|
||||
|
||||
# v1.3.42 (2023-08-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.41 (2023-08-18)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.40 (2023-08-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.39 (2023-08-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.38 (2023-07-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.37 (2023-07-28)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.36 (2023-07-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.35 (2023-06-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.34 (2023-04-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.33 (2023-04-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.32 (2023-03-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.31 (2023-03-10)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.30 (2023-02-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.29 (2023-02-03)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.28 (2022-12-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.27 (2022-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.26 (2022-10-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.25 (2022-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.24 (2022-09-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.23 (2022-09-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.22 (2022-09-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.21 (2022-08-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.20 (2022-08-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.19 (2022-08-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.18 (2022-08-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.17 (2022-08-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.16 (2022-08-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.15 (2022-07-05)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.14 (2022-06-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.13 (2022-06-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.12 (2022-05-17)
|
||||
|
||||
* **Bug Fix**: Removes the fuzz testing files from the module, as they are invalid and not used.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.11 (2022-04-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.10 (2022-03-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.9 (2022-03-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.8 (2022-03-23)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.7 (2022-03-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.6 (2022-02-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.5 (2022-01-28)
|
||||
|
||||
* **Bug Fix**: Fixes the SDK's handling of `duration_sections` in the shared credentials file or specified in multiple shared config and shared credentials files under the same profile. [#1568](https://github.com/aws/aws-sdk-go-v2/pull/1568). Thanks to [Amir Szekely](https://github.com/kichik) for help reproduce this bug.
|
||||
|
||||
# v1.3.4 (2022-01-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.3 (2022-01-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.2 (2021-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.1 (2021-11-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.0 (2021-11-06)
|
||||
|
||||
* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.5 (2021-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.4 (2021-10-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.3 (2021-09-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.2 (2021-08-27)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.1 (2021-08-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.0 (2021-08-04)
|
||||
|
||||
* **Feature**: adds error handling for defered close calls
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.1 (2021-07-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.0 (2021-07-01)
|
||||
|
||||
* **Feature**: Support for `:`, `=`, `[`, `]` being present in expression values.
|
||||
|
||||
# v1.0.1 (2021-06-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.0 (2021-05-20)
|
||||
|
||||
* **Release**: The `github.com/aws/aws-sdk-go-v2/internal/ini` package is now a Go Module.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
202
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txt
generated
vendored
Normal file
202
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
22
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.go
generated
vendored
Normal file
22
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.go
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
package ini
|
||||
|
||||
import "fmt"
|
||||
|
||||
// UnableToReadFile is an error indicating that a ini file could not be read
|
||||
type UnableToReadFile struct {
|
||||
Err error
|
||||
}
|
||||
|
||||
// Error returns an error message and the underlying error message if present
|
||||
func (e *UnableToReadFile) Error() string {
|
||||
base := "unable to read file"
|
||||
if e.Err == nil {
|
||||
return base
|
||||
}
|
||||
return fmt.Sprintf("%s: %v", base, e.Err)
|
||||
}
|
||||
|
||||
// Unwrap returns the underlying error
|
||||
func (e *UnableToReadFile) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
6
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go
generated
vendored
Normal file
6
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT.
|
||||
|
||||
package ini
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.7.2"
|
||||
56
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go
generated
vendored
Normal file
56
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
// Package ini implements parsing of the AWS shared config file.
|
||||
//
|
||||
// Example:
|
||||
// sections, err := ini.OpenFile("/path/to/file")
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
//
|
||||
// profile := "foo"
|
||||
// section, ok := sections.GetSection(profile)
|
||||
// if !ok {
|
||||
// fmt.Printf("section %q could not be found", profile)
|
||||
// }
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// OpenFile parses shared config from the given file path.
|
||||
func OpenFile(path string) (sections Sections, err error) {
|
||||
f, oerr := os.Open(path)
|
||||
if oerr != nil {
|
||||
return Sections{}, &UnableToReadFile{Err: oerr}
|
||||
}
|
||||
|
||||
defer func() {
|
||||
closeErr := f.Close()
|
||||
if err == nil {
|
||||
err = closeErr
|
||||
} else if closeErr != nil {
|
||||
err = fmt.Errorf("close error: %v, original error: %w", closeErr, err)
|
||||
}
|
||||
}()
|
||||
|
||||
return Parse(f, path)
|
||||
}
|
||||
|
||||
// Parse parses shared config from the given reader.
|
||||
func Parse(r io.Reader, path string) (Sections, error) {
|
||||
contents, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return Sections{}, fmt.Errorf("read all: %v", err)
|
||||
}
|
||||
|
||||
lines := strings.Split(string(contents), "\n")
|
||||
tokens, err := tokenize(lines)
|
||||
if err != nil {
|
||||
return Sections{}, fmt.Errorf("tokenize: %v", err)
|
||||
}
|
||||
|
||||
return parse(tokens, path), nil
|
||||
}
|
||||
109
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go
generated
vendored
Normal file
109
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func parse(tokens []lineToken, path string) Sections {
|
||||
parser := &parser{
|
||||
path: path,
|
||||
sections: NewSections(),
|
||||
}
|
||||
parser.parse(tokens)
|
||||
return parser.sections
|
||||
}
|
||||
|
||||
type parser struct {
|
||||
csection, ckey string // current state
|
||||
path string // source file path
|
||||
sections Sections // parse result
|
||||
}
|
||||
|
||||
func (p *parser) parse(tokens []lineToken) {
|
||||
for _, otok := range tokens {
|
||||
switch tok := otok.(type) {
|
||||
case *lineTokenProfile:
|
||||
p.handleProfile(tok)
|
||||
case *lineTokenProperty:
|
||||
p.handleProperty(tok)
|
||||
case *lineTokenSubProperty:
|
||||
p.handleSubProperty(tok)
|
||||
case *lineTokenContinuation:
|
||||
p.handleContinuation(tok)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *parser) handleProfile(tok *lineTokenProfile) {
|
||||
name := tok.Name
|
||||
if tok.Type != "" {
|
||||
name = fmt.Sprintf("%s %s", tok.Type, tok.Name)
|
||||
}
|
||||
p.ckey = ""
|
||||
p.csection = name
|
||||
if _, ok := p.sections.container[name]; !ok {
|
||||
p.sections.container[name] = NewSection(name)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *parser) handleProperty(tok *lineTokenProperty) {
|
||||
if p.csection == "" {
|
||||
return // LEGACY: don't error on "global" properties
|
||||
}
|
||||
|
||||
p.ckey = tok.Key
|
||||
if _, ok := p.sections.container[p.csection].values[tok.Key]; ok {
|
||||
section := p.sections.container[p.csection]
|
||||
section.Logs = append(p.sections.container[p.csection].Logs,
|
||||
fmt.Sprintf(
|
||||
"For profile: %v, overriding %v value, with a %v value found in a duplicate profile defined later in the same file %v. \n",
|
||||
p.csection, tok.Key, tok.Key, p.path,
|
||||
),
|
||||
)
|
||||
p.sections.container[p.csection] = section
|
||||
}
|
||||
|
||||
p.sections.container[p.csection].values[tok.Key] = Value{
|
||||
str: tok.Value,
|
||||
}
|
||||
p.sections.container[p.csection].SourceFile[tok.Key] = p.path
|
||||
}
|
||||
|
||||
func (p *parser) handleSubProperty(tok *lineTokenSubProperty) {
|
||||
if p.csection == "" {
|
||||
return // LEGACY: don't error on "global" properties
|
||||
}
|
||||
|
||||
if p.ckey == "" || p.sections.container[p.csection].values[p.ckey].str != "" {
|
||||
// This is an "orphaned" subproperty, either because it's at
|
||||
// the beginning of a section or because the last property's
|
||||
// value isn't empty. Either way we're lenient here and
|
||||
// "promote" this to a normal property.
|
||||
p.handleProperty(&lineTokenProperty{
|
||||
Key: tok.Key,
|
||||
Value: strings.TrimSpace(trimPropertyComment(tok.Value)),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if p.sections.container[p.csection].values[p.ckey].mp == nil {
|
||||
p.sections.container[p.csection].values[p.ckey] = Value{
|
||||
mp: map[string]string{},
|
||||
}
|
||||
}
|
||||
p.sections.container[p.csection].values[p.ckey].mp[tok.Key] = tok.Value
|
||||
}
|
||||
|
||||
func (p *parser) handleContinuation(tok *lineTokenContinuation) {
|
||||
if p.ckey == "" {
|
||||
return
|
||||
}
|
||||
|
||||
value, _ := p.sections.container[p.csection].values[p.ckey]
|
||||
if value.str != "" && value.mp == nil {
|
||||
value.str = fmt.Sprintf("%s\n%s", value.str, tok.Value)
|
||||
}
|
||||
|
||||
p.sections.container[p.csection].values[p.ckey] = value
|
||||
}
|
||||
157
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go
generated
vendored
Normal file
157
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go
generated
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
// Sections is a map of Section structures that represent
|
||||
// a configuration.
|
||||
type Sections struct {
|
||||
container map[string]Section
|
||||
}
|
||||
|
||||
// NewSections returns empty ini Sections
|
||||
func NewSections() Sections {
|
||||
return Sections{
|
||||
container: make(map[string]Section, 0),
|
||||
}
|
||||
}
|
||||
|
||||
// GetSection will return section p. If section p does not exist,
|
||||
// false will be returned in the second parameter.
|
||||
func (t Sections) GetSection(p string) (Section, bool) {
|
||||
v, ok := t.container[p]
|
||||
return v, ok
|
||||
}
|
||||
|
||||
// HasSection denotes if Sections consist of a section with
|
||||
// provided name.
|
||||
func (t Sections) HasSection(p string) bool {
|
||||
_, ok := t.container[p]
|
||||
return ok
|
||||
}
|
||||
|
||||
// SetSection sets a section value for provided section name.
|
||||
func (t Sections) SetSection(p string, v Section) Sections {
|
||||
t.container[p] = v
|
||||
return t
|
||||
}
|
||||
|
||||
// DeleteSection deletes a section entry/value for provided section name./
|
||||
func (t Sections) DeleteSection(p string) {
|
||||
delete(t.container, p)
|
||||
}
|
||||
|
||||
// values represents a map of union values.
|
||||
type values map[string]Value
|
||||
|
||||
// List will return a list of all sections that were successfully
|
||||
// parsed.
|
||||
func (t Sections) List() []string {
|
||||
keys := make([]string, len(t.container))
|
||||
i := 0
|
||||
for k := range t.container {
|
||||
keys[i] = k
|
||||
i++
|
||||
}
|
||||
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
// Section contains a name and values. This represent
|
||||
// a sectioned entry in a configuration file.
|
||||
type Section struct {
|
||||
// Name is the Section profile name
|
||||
Name string
|
||||
|
||||
// values are the values within parsed profile
|
||||
values values
|
||||
|
||||
// Errors is the list of errors
|
||||
Errors []error
|
||||
|
||||
// Logs is the list of logs
|
||||
Logs []string
|
||||
|
||||
// SourceFile is the INI Source file from where this section
|
||||
// was retrieved. They key is the property, value is the
|
||||
// source file the property was retrieved from.
|
||||
SourceFile map[string]string
|
||||
}
|
||||
|
||||
// NewSection returns an initialize section for the name
|
||||
func NewSection(name string) Section {
|
||||
return Section{
|
||||
Name: name,
|
||||
values: values{},
|
||||
SourceFile: map[string]string{},
|
||||
}
|
||||
}
|
||||
|
||||
// List will return a list of all
|
||||
// services in values
|
||||
func (t Section) List() []string {
|
||||
keys := make([]string, len(t.values))
|
||||
i := 0
|
||||
for k := range t.values {
|
||||
keys[i] = k
|
||||
i++
|
||||
}
|
||||
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
// UpdateSourceFile updates source file for a property to provided filepath.
|
||||
func (t Section) UpdateSourceFile(property string, filepath string) {
|
||||
t.SourceFile[property] = filepath
|
||||
}
|
||||
|
||||
// UpdateValue updates value for a provided key with provided value
|
||||
func (t Section) UpdateValue(k string, v Value) error {
|
||||
t.values[k] = v
|
||||
return nil
|
||||
}
|
||||
|
||||
// Has will return whether or not an entry exists in a given section
|
||||
func (t Section) Has(k string) bool {
|
||||
_, ok := t.values[k]
|
||||
return ok
|
||||
}
|
||||
|
||||
// ValueType will returned what type the union is set to. If
|
||||
// k was not found, the NoneType will be returned.
|
||||
func (t Section) ValueType(k string) (ValueType, bool) {
|
||||
v, ok := t.values[k]
|
||||
return v.Type, ok
|
||||
}
|
||||
|
||||
// Bool returns a bool value at k
|
||||
func (t Section) Bool(k string) (bool, bool) {
|
||||
return t.values[k].BoolValue()
|
||||
}
|
||||
|
||||
// Int returns an integer value at k
|
||||
func (t Section) Int(k string) (int64, bool) {
|
||||
return t.values[k].IntValue()
|
||||
}
|
||||
|
||||
// Map returns a map value at k
|
||||
func (t Section) Map(k string) map[string]string {
|
||||
return t.values[k].MapValue()
|
||||
}
|
||||
|
||||
// Float64 returns a float value at k
|
||||
func (t Section) Float64(k string) (float64, bool) {
|
||||
return t.values[k].FloatValue()
|
||||
}
|
||||
|
||||
// String returns the string value at k
|
||||
func (t Section) String(k string) string {
|
||||
_, ok := t.values[k]
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return t.values[k].StringValue()
|
||||
}
|
||||
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go
generated
vendored
Normal file
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func trimProfileComment(s string) string {
|
||||
r, _, _ := strings.Cut(s, "#")
|
||||
r, _, _ = strings.Cut(r, ";")
|
||||
return r
|
||||
}
|
||||
|
||||
func trimPropertyComment(s string) string {
|
||||
r, _, _ := strings.Cut(s, " #")
|
||||
r, _, _ = strings.Cut(r, " ;")
|
||||
r, _, _ = strings.Cut(r, "\t#")
|
||||
r, _, _ = strings.Cut(r, "\t;")
|
||||
return r
|
||||
}
|
||||
|
||||
// assumes no surrounding comment
|
||||
func splitProperty(s string) (string, string, bool) {
|
||||
equalsi := strings.Index(s, "=")
|
||||
coloni := strings.Index(s, ":") // LEGACY: also supported for property assignment
|
||||
sep := "="
|
||||
if equalsi == -1 || coloni != -1 && coloni < equalsi {
|
||||
sep = ":"
|
||||
}
|
||||
|
||||
k, v, ok := strings.Cut(s, sep)
|
||||
if !ok {
|
||||
return "", "", false
|
||||
}
|
||||
return strings.TrimSpace(k), strings.TrimSpace(v), true
|
||||
}
|
||||
|
||||
// assumes no surrounding comment, whitespace, or profile brackets
|
||||
func splitProfile(s string) (string, string) {
|
||||
var first int
|
||||
for i, r := range s {
|
||||
if isLineSpace(r) {
|
||||
if first == 0 {
|
||||
first = i
|
||||
}
|
||||
} else {
|
||||
if first != 0 {
|
||||
return s[:first], s[i:]
|
||||
}
|
||||
}
|
||||
}
|
||||
if first == 0 {
|
||||
return "", s // type component is effectively blank
|
||||
}
|
||||
return "", ""
|
||||
}
|
||||
|
||||
func isLineSpace(r rune) bool {
|
||||
return r == ' ' || r == '\t'
|
||||
}
|
||||
|
||||
func unquote(s string) string {
|
||||
if isSingleQuoted(s) || isDoubleQuoted(s) {
|
||||
return s[1 : len(s)-1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// applies various legacy conversions to property values:
|
||||
// - remote wrapping single/doublequotes
|
||||
// - expand escaped quote and newline sequences
|
||||
func legacyStrconv(s string) string {
|
||||
s = unquote(s)
|
||||
s = strings.ReplaceAll(s, `\"`, `"`)
|
||||
s = strings.ReplaceAll(s, `\'`, `'`)
|
||||
s = strings.ReplaceAll(s, `\n`, "\n")
|
||||
return s
|
||||
}
|
||||
|
||||
func isSingleQuoted(s string) bool {
|
||||
return hasAffixes(s, "'", "'")
|
||||
}
|
||||
|
||||
func isDoubleQuoted(s string) bool {
|
||||
return hasAffixes(s, `"`, `"`)
|
||||
}
|
||||
|
||||
func isBracketed(s string) bool {
|
||||
return hasAffixes(s, "[", "]")
|
||||
}
|
||||
|
||||
func hasAffixes(s, left, right string) bool {
|
||||
return strings.HasPrefix(s, left) && strings.HasSuffix(s, right)
|
||||
}
|
||||
32
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go
generated
vendored
Normal file
32
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
package ini
|
||||
|
||||
type lineToken interface {
|
||||
isLineToken()
|
||||
}
|
||||
|
||||
type lineTokenProfile struct {
|
||||
Type string
|
||||
Name string
|
||||
}
|
||||
|
||||
func (*lineTokenProfile) isLineToken() {}
|
||||
|
||||
type lineTokenProperty struct {
|
||||
Key string
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenProperty) isLineToken() {}
|
||||
|
||||
type lineTokenContinuation struct {
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenContinuation) isLineToken() {}
|
||||
|
||||
type lineTokenSubProperty struct {
|
||||
Key string
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenSubProperty) isLineToken() {}
|
||||
92
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go
generated
vendored
Normal file
92
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func tokenize(lines []string) ([]lineToken, error) {
|
||||
tokens := make([]lineToken, 0, len(lines))
|
||||
for _, line := range lines {
|
||||
if len(strings.TrimSpace(line)) == 0 || isLineComment(line) {
|
||||
continue
|
||||
}
|
||||
|
||||
if tok := asProfile(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asProperty(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asSubProperty(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asContinuation(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} // unrecognized tokens are effectively ignored
|
||||
}
|
||||
return tokens, nil
|
||||
}
|
||||
|
||||
func isLineComment(line string) bool {
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
return strings.HasPrefix(trimmed, "#") || strings.HasPrefix(trimmed, ";")
|
||||
}
|
||||
|
||||
func asProfile(line string) *lineTokenProfile { // " [ type name ] ; comment"
|
||||
trimmed := strings.TrimSpace(trimProfileComment(line)) // "[ type name ]"
|
||||
if !isBracketed(trimmed) {
|
||||
return nil
|
||||
}
|
||||
trimmed = trimmed[1 : len(trimmed)-1] // " type name " (or just " name ")
|
||||
trimmed = strings.TrimSpace(trimmed) // "type name" / "name"
|
||||
typ, name := splitProfile(trimmed)
|
||||
return &lineTokenProfile{
|
||||
Type: typ,
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func asProperty(line string) *lineTokenProperty {
|
||||
if isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
trimmed := trimPropertyComment(line)
|
||||
trimmed = strings.TrimRight(trimmed, " \t")
|
||||
k, v, ok := splitProperty(trimmed)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &lineTokenProperty{
|
||||
Key: strings.ToLower(k), // LEGACY: normalize key case
|
||||
Value: legacyStrconv(v), // LEGACY: see func docs
|
||||
}
|
||||
}
|
||||
|
||||
func asSubProperty(line string) *lineTokenSubProperty {
|
||||
if !isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// comments on sub-properties are included in the value
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
k, v, ok := splitProperty(trimmed)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &lineTokenSubProperty{ // same LEGACY constraints as in normal property
|
||||
Key: strings.ToLower(k),
|
||||
Value: legacyStrconv(v),
|
||||
}
|
||||
}
|
||||
|
||||
func asContinuation(line string) *lineTokenContinuation {
|
||||
if !isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// includes comments like sub-properties
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
return &lineTokenContinuation{
|
||||
Value: trimmed,
|
||||
}
|
||||
}
|
||||
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go
generated
vendored
Normal file
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ValueType is an enum that will signify what type
|
||||
// the Value is
|
||||
type ValueType int
|
||||
|
||||
func (v ValueType) String() string {
|
||||
switch v {
|
||||
case NoneType:
|
||||
return "NONE"
|
||||
case StringType:
|
||||
return "STRING"
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// ValueType enums
|
||||
const (
|
||||
NoneType = ValueType(iota)
|
||||
StringType
|
||||
QuotedStringType
|
||||
)
|
||||
|
||||
// Value is a union container
|
||||
type Value struct {
|
||||
Type ValueType
|
||||
|
||||
str string
|
||||
mp map[string]string
|
||||
}
|
||||
|
||||
// NewStringValue returns a Value type generated using a string input.
|
||||
func NewStringValue(str string) (Value, error) {
|
||||
return Value{str: str}, nil
|
||||
}
|
||||
|
||||
func (v Value) String() string {
|
||||
switch v.Type {
|
||||
case StringType:
|
||||
return fmt.Sprintf("string: %s", string(v.str))
|
||||
case QuotedStringType:
|
||||
return fmt.Sprintf("quoted string: %s", string(v.str))
|
||||
default:
|
||||
return "union not set"
|
||||
}
|
||||
}
|
||||
|
||||
// MapValue returns a map value for sub properties
|
||||
func (v Value) MapValue() map[string]string {
|
||||
return v.mp
|
||||
}
|
||||
|
||||
// IntValue returns an integer value
|
||||
func (v Value) IntValue() (int64, bool) {
|
||||
i, err := strconv.ParseInt(string(v.str), 0, 64)
|
||||
if err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return i, true
|
||||
}
|
||||
|
||||
// FloatValue returns a float value
|
||||
func (v Value) FloatValue() (float64, bool) {
|
||||
f, err := strconv.ParseFloat(string(v.str), 64)
|
||||
if err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return f, true
|
||||
}
|
||||
|
||||
// BoolValue returns a bool value
|
||||
func (v Value) BoolValue() (bool, bool) {
|
||||
// we don't use ParseBool as it recognizes more than what we've
|
||||
// historically supported
|
||||
if strings.EqualFold(v.str, "true") {
|
||||
return true, true
|
||||
} else if strings.EqualFold(v.str, "false") {
|
||||
return false, true
|
||||
}
|
||||
return false, false
|
||||
}
|
||||
|
||||
// StringValue returns the string value
|
||||
func (v Value) StringValue() string {
|
||||
return v.str
|
||||
}
|
||||
Reference in New Issue
Block a user