refactor: rename tools/ to tool/ to follow dart conventions
continuous-integration/drone/pr Build is failing
continuous-integration/drone/pr Build is failing
This commit was merged in pull request #228.
This commit is contained in:
Executable
+105
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (C) 2023 WYATT GROUP
|
||||
# Please see the AUTHORS file for details.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# This script scrapes the latest version of the ruleset from the
|
||||
# official Dart repository and tests it against the latest version of
|
||||
# the Wyatt Analysis ruleset.
|
||||
|
||||
basename=$(basename "$0")
|
||||
basepath=$(dirname "$0")
|
||||
official_ruleset_url="https://raw.githubusercontent.com/dart-lang/sdk/main/pkg/linter/example/all.yaml"
|
||||
|
||||
red=$(tput setaf 1)
|
||||
blue=$(tput setaf 4)
|
||||
yellow=$(tput setaf 3)
|
||||
reset=$(tput sgr0)
|
||||
|
||||
# Check for dependencies.
|
||||
if ! command -v yq &>/dev/null; then
|
||||
echo "yq could not be found. Please install it and try again."
|
||||
echo "https://github.com/mikefarah/yq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for arguments, if no arguments read latest version from pubspec.yaml.
|
||||
if [ $# -eq 0 ]; then
|
||||
wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml")
|
||||
else
|
||||
wyatt_analysis_version=$1
|
||||
fi
|
||||
|
||||
# Read latest version
|
||||
wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml")
|
||||
|
||||
# Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists.
|
||||
if [ ! -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" ]; then
|
||||
echo "Wyatt Analysis version $wyatt_analysis_version could not be found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found Wyatt Analysis version $wyatt_analysis_version"
|
||||
|
||||
# Generate temporary directory.
|
||||
tmp_dir=$(mktemp -d)
|
||||
|
||||
# Download the official ruleset.
|
||||
curl -s "$official_ruleset_url" >"$tmp_dir/official.yaml"
|
||||
|
||||
# List yaml elements in the official ruleset, "linter.rules" and save it in an array.
|
||||
official_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/official.yaml"))
|
||||
echo "Finding differences between the official ruleset and the Wyatt Analysis ruleset..."
|
||||
echo "This may take a while..."
|
||||
|
||||
# Merges the wyatt dart analysis ruleset with the wyatt flutter analysis ruleset.
|
||||
yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml" >"$tmp_dir/wyatt.yaml"
|
||||
|
||||
# List yaml elements in the Wyatt Analysis ruleset, "linter.rules" and save it in an array.
|
||||
wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/wyatt.yaml"))
|
||||
|
||||
# Read merged files, and list all ignored rules (starting with a # -).
|
||||
ignored_rules=($(grep -oP '(?<=# - ).*' "$tmp_dir/wyatt.yaml"))
|
||||
|
||||
echo "Found $(echo "${official_rules[@]}" | wc -w) rules in the official ruleset."
|
||||
echo "Found $(echo "${wyatt_rules[@]}" | wc -w) rules in the Wyatt Analysis ruleset."
|
||||
echo "Found $(echo "${ignored_rules[@]}" | wc -w) ignored rules in the Wyatt Analysis ruleset."
|
||||
|
||||
# Iterate over the official ruleset.
|
||||
for rule in "${official_rules[@]}"; do
|
||||
# Check if the rule is in the Wyatt Analysis ruleset.
|
||||
if ! grep -q "$rule" "$tmp_dir/wyatt.yaml"; then
|
||||
echo "${red}+ $rule${reset} (https://dart.dev/tools/linter-rules/$rule)"
|
||||
fi
|
||||
done
|
||||
|
||||
# Iterate over the Wyatt Analysis ruleset and print the rules that are not in the official ruleset.
|
||||
for rule in "${wyatt_rules[@]}"; do
|
||||
# Check if the rule is in the official ruleset.
|
||||
if ! grep -q "$rule" "$tmp_dir/official.yaml"; then
|
||||
echo "${blue}- $rule${reset} (https://dart.dev/tools/linter-rules/$rule)"
|
||||
fi
|
||||
done
|
||||
|
||||
# Iterate over the ignored rules and print them.
|
||||
for rule in "${ignored_rules[@]}"; do
|
||||
echo "${yellow}~ $rule${reset} (https://dart.dev/tools/linter-rules/$rule)"
|
||||
done
|
||||
|
||||
# Remove temporary directory.
|
||||
rm -rf "$tmp_dir"
|
||||
|
||||
exit 0
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (C) 2023 WYATT GROUP
|
||||
# Please see the AUTHORS file for details.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
basename=$(basename "$0")
|
||||
basepath=$(dirname "$0")
|
||||
|
||||
# Check for dependencies.
|
||||
if ! command -v yq &>/dev/null; then
|
||||
echo "yq could not be found. Please install it and try again."
|
||||
echo "https://github.com/mikefarah/yq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for arguments,
|
||||
# it should be the version of the old ruleset that you want to compare with the new ruleset.
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Please provide the version of the old ruleset that you want to compare with the new ruleset."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Read the version of the old ruleset from the arguments.
|
||||
old_wyatt_analysis_version=$1
|
||||
|
||||
# Read the version of the new ruleset from pubspec.yaml.
|
||||
new_wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml")
|
||||
|
||||
# Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists.
|
||||
if [ ! -f "$basepath/../lib/analysis_options.$old_wyatt_analysis_version.yaml" ]; then
|
||||
echo "Wyatt Analysis version $old_wyatt_analysis_version could not be found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$basepath/../lib/analysis_options.$new_wyatt_analysis_version.yaml" ]; then
|
||||
echo "Wyatt Analysis version $new_wyatt_analysis_version could not be found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found Wyatt Analysis version $old_wyatt_analysis_version and $new_wyatt_analysis_version"
|
||||
|
||||
# Generate temporary directory.
|
||||
tmp_dir=$(mktemp -d)
|
||||
|
||||
# Merges the wyatt dart analysis ruleset with the wyatt flutter analysis ruleset.
|
||||
yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$old_wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$old_wyatt_analysis_version.yaml" >"$tmp_dir/old_wyatt.yaml"
|
||||
|
||||
yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$new_wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$new_wyatt_analysis_version.yaml" >"$tmp_dir/new_wyatt.yaml"
|
||||
|
||||
# List yaml elements in the old ruleset, "linter.rules" and save it in an array.
|
||||
old_wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/old_wyatt.yaml"))
|
||||
|
||||
# List yaml elements in the new ruleset, "linter.rules" and save it in an array.
|
||||
new_wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/new_wyatt.yaml"))
|
||||
|
||||
# List all the rules that are in the old ruleset but not in the new ruleset.
|
||||
removed_rules=($(comm -23 <(printf '%s\n' "${old_wyatt_rules[@]}" | sort) <(printf '%s\n' "${new_wyatt_rules[@]}" | sort)))
|
||||
|
||||
# List all the rules that are in the new ruleset but not in the old ruleset.
|
||||
added_rules=($(comm -13 <(printf '%s\n' "${old_wyatt_rules[@]}" | sort) <(printf '%s\n' "${new_wyatt_rules[@]}" | sort)))
|
||||
|
||||
# Generate markdown file.
|
||||
|
||||
echo "## ${new_wyatt_analysis_version}" >"$tmp_dir/CHANGELOG.md"
|
||||
echo "" >>"$tmp_dir/CHANGELOG.md"
|
||||
|
||||
# Iterate over the added rules and print them in the markdown file.
|
||||
for rule in "${added_rules[@]}"; do
|
||||
echo " - **ADDED** $rule (https://dart.dev/tools/linter-rules/$rule)" >>"$tmp_dir/CHANGELOG.md"
|
||||
done
|
||||
|
||||
# Iterate over the removed rules and print them in the markdown file.
|
||||
for rule in "${removed_rules[@]}"; do
|
||||
echo " - **REMOVED** $rule (https://dart.dev/tools/linter-rules/$rule)" >>"$tmp_dir/CHANGELOG.md"
|
||||
done
|
||||
|
||||
echo "" >>"$tmp_dir/CHANGELOG.md"
|
||||
|
||||
# Print the contents of the markdown file.
|
||||
cat "$tmp_dir/CHANGELOG.md"
|
||||
|
||||
# Ask the user if they want to add the changes to the CHANGELOG.md file.
|
||||
read -p "Do you want to add the changes to the CHANGELOG.md file? (y/n) " -n 1 -r
|
||||
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
# Add the changes to the top of the CHANGELOG.md file.
|
||||
cat "$tmp_dir/CHANGELOG.md" "$basepath/../CHANGELOG.md" >"$tmp_dir/CHANGELOG.md.tmp"
|
||||
cp -f "$tmp_dir/CHANGELOG.md.tmp" "$basepath/../CHANGELOG.md"
|
||||
rm -f "$tmp_dir/CHANGELOG.md.tmp"
|
||||
fi
|
||||
|
||||
# Remove temporary directory.
|
||||
rm -rf "$tmp_dir"
|
||||
|
||||
exit 0
|
||||
Executable
+98
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (C) 2023 WYATT GROUP
|
||||
# Please see the AUTHORS file for details.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
basename=$(basename "$0")
|
||||
basepath=$(dirname "$0")
|
||||
|
||||
# Check for arguments, first argument should be wyatt_analysis_version.
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $basename <wyatt_analysis_version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
wyatt_analysis_version=$1
|
||||
|
||||
# Check for dependencies.
|
||||
if ! command -v yq &>/dev/null; then
|
||||
echo "yq could not be found. Please install it and try again."
|
||||
echo "https://github.com/mikefarah/yq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Read latest version
|
||||
latest_version=$(yq eval '.version' "${basepath}/../pubspec.yaml")
|
||||
echo "> latest package version is: $latest_version"
|
||||
echo "> new package version is: $wyatt_analysis_version"
|
||||
|
||||
# Create array with all files that need to exist
|
||||
files=(
|
||||
"${basepath}/../pubspec.yaml"
|
||||
"${basepath}/../README.md"
|
||||
"${basepath}/../lib/wyatt_analysis.dart"
|
||||
"${basepath}/../lib/analysis_options.yaml"
|
||||
"${basepath}/../lib/analysis_options.flutter.yaml"
|
||||
"${basepath}/../lib/analysis_options.${latest_version}.yaml"
|
||||
"${basepath}/../lib/analysis_options.flutter.${latest_version}.yaml"
|
||||
)
|
||||
|
||||
# Check if all files exist
|
||||
for file in "${files[@]}"; do
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "File ${file} doesn't exists"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Create new analysis_options files
|
||||
echo "Creating new analysis_options files"
|
||||
cp "${basepath}/../lib/analysis_options.${latest_version}.yaml" "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml"
|
||||
cp "${basepath}/../lib/analysis_options.flutter.${latest_version}.yaml" "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml"
|
||||
|
||||
# Update version in new analysis_options files
|
||||
echo "Updating version in new analysis_options files"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml"
|
||||
rm "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml.bu"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml"
|
||||
rm "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml.bu"
|
||||
|
||||
# Update version in pubspec.yaml
|
||||
echo "Updating version in pubspec.yaml"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../pubspec.yaml"
|
||||
rm "${basepath}/../pubspec.yaml.bu"
|
||||
|
||||
# Update version in README.md
|
||||
echo "Updating version in README.md"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../README.md"
|
||||
rm "${basepath}/../README.md.bu"
|
||||
|
||||
# Update version in wyatt_analysis.dart
|
||||
echo "Updating version in wyatt_analysis.dart"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/wyatt_analysis.dart"
|
||||
rm "${basepath}/../lib/wyatt_analysis.dart.bu"
|
||||
|
||||
# Update version in analysis_options.yaml
|
||||
echo "Updating version in analysis_options.yaml"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.yaml"
|
||||
rm "${basepath}/../lib/analysis_options.yaml.bu"
|
||||
|
||||
# Update version in analysis_options.flutter.yaml
|
||||
echo "Updating version in analysis_options.flutter.yaml"
|
||||
sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.flutter.yaml"
|
||||
rm "${basepath}/../lib/analysis_options.flutter.yaml.bu"
|
||||
|
||||
exit 0
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (C) 2023 WYATT GROUP
|
||||
# Please see the AUTHORS file for details.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
basename=$(basename "$0")
|
||||
basepath=$(dirname "$0")
|
||||
|
||||
# Check for dependencies.
|
||||
if ! command -v yq &>/dev/null; then
|
||||
echo "yq could not be found. Please install it and try again."
|
||||
echo "https://github.com/mikefarah/yq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for arguments, if no arguments read latest version from pubspec.yaml.
|
||||
if [ $# -eq 0 ]; then
|
||||
wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml")
|
||||
else
|
||||
wyatt_analysis_version=$1
|
||||
fi
|
||||
|
||||
# Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists.
|
||||
if [ ! -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" ]; then
|
||||
echo "Wyatt Analysis version $wyatt_analysis_version could not be found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found Wyatt Analysis version $wyatt_analysis_version"
|
||||
echo "Sorting rules..."
|
||||
|
||||
# Sort the rules in "lint.rules" alphabetically.
|
||||
yq eval '.linter.rules |= sort_by(.)' "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" >"$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp"
|
||||
|
||||
cp -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp" "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml"
|
||||
|
||||
rm -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp"
|
||||
|
||||
# Sort the rules in "lint.rules" alphabetically.
|
||||
yq eval '.linter.rules |= sort_by(.)' "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml" >"$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp"
|
||||
|
||||
cp -f "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp" "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml"
|
||||
|
||||
rm -f "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user