Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: remove comments from whole file instead of line by line for performance #1198

Merged
merged 1 commit into from Apr 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .tool-versions
@@ -1,3 +1,3 @@
bats v1.3.0
bats 1.3.0
shellcheck 0.7.2
shfmt 3.3.0
18 changes: 8 additions & 10 deletions lib/utils.bash
Expand Up @@ -637,16 +637,14 @@ shim_plugins() {

strip_tool_version_comments() {
local tool_version_path="$1"

while IFS= read -r tool_line || [ -n "$tool_line" ]; do
# Remove whitespace before pound sign, the pound sign, and everything after it
new_line="$(cut -f1 -d"#" <<<"$tool_line" | sed -e 's/[[:space:]]*$//')"

# Only print the line if it is not empty
if [[ -n "$new_line" ]]; then
printf "%s\\n" "$new_line"
fi
done <"$tool_version_path"
# Use sed to strip comments from the tool version file
# Breakdown of sed command:
# This command represents 3 steps, seperated by a semi-colon (;), that run on each line.
# 1. Delete line if it starts with any blankspace and a #.
# 2. Find a # and delete it and everything after the #.
# 3. Remove any whitespace from the end of the line.
# Finally, the command will print the lines that are not empty.
sed '/^[[:blank:]]*#/d;s/#.*//;s/[[:blank:]]*$//' "$tool_version_path"
}

asdf_run_hook() {
Expand Down