SwiftLint/tools/generate-release-notes.sh

109 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
version="$1"
# Release Notes Section
in_top_changelog_section=0
first_line=1
while IFS= read -r line; do
if [[ "$line" == "## "* ]]; then
if [ $in_top_changelog_section -eq 0 ]; then
in_top_changelog_section=1
else
in_top_changelog_section=0
break
fi
elif [ $in_top_changelog_section -eq 1 ]; then
if [ $first_line -eq 1 ]; then
first_line=0
else
echo "$line"
fi
fi
done < CHANGELOG.md
# Bazel Section
bazel_section=$(cat <<'EOF'
---
### Using Bazel
With bzlmod:
```
// Pending BCR update
bazel_dep(name = "swiftlint", version = "SWIFTLINT_VERSION", repo_name = "SwiftLint")
```
Without bzlmod, put this in your `WORKSPACE`:
<details>
<summary>WORKSPACE</summary>
```python
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "build_bazel_rules_apple",
sha256 = "9e26307516c4d5f2ad4aee90ac01eb8cd31f9b8d6ea93619fc64b3cbc81b0944",
url = "https://github.com/bazelbuild/rules_apple/releases/download/2.2.0/rules_apple.2.2.0.tar.gz",
)
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
http_archive(
name = "SwiftLint",
sha256 = "BAZEL_SHA",
url = "https://github.com/realm/SwiftLint/releases/download/SWIFTLINT_VERSION/bazel.tar.gz",
)
load("@SwiftLint//bazel:repos.bzl", "swiftlint_repos")
swiftlint_repos()
load("@SwiftLint//bazel:deps.bzl", "swiftlint_deps")
swiftlint_deps()
```
</details>
Then you can run SwiftLint in the current directory with this command:
```console
bazel run @SwiftLint//:swiftlint -- --help
```
EOF
)
bazel_sha="$(cut -d' ' -f1 bazel.tar.gz.sha256 | sed '0d')"
echo "$bazel_section" \
| sed "s/SWIFTLINT_VERSION/$version/g" \
| sed "s/BAZEL_SHA/$bazel_sha/"