Fix all shellcheck errors in gp script
All checks were successful
Build-Test-Publish / build (linux/amd64) (push) Successful in 23s
Build-Test-Publish / build (linux/arm64) (push) Successful in 26s
Build-Test-Publish / test-install-from-scratch (linux/amd64) (push) Successful in 8s
Build-Test-Publish / test-install-from-scratch (linux/arm64) (push) Successful in 8s

This commit is contained in:
Your Name 2025-06-22 16:51:28 +12:00
parent 511979315d
commit cadfd6c3e3

47
gp/gp
View File

@ -49,8 +49,10 @@ EOF
# Function to generate commit message based on changes # Function to generate commit message based on changes
generate_commit_message() { generate_commit_message() {
local files_changed=$(git diff --cached --name-only) local files_changed
local files_count=$(echo "$files_changed" | wc -l) files_changed=$(git diff --cached --name-only)
local files_count
files_count=$(echo "$files_changed" | wc -l)
if [ -z "$files_changed" ]; then if [ -z "$files_changed" ]; then
files_changed=$(git diff --name-only) files_changed=$(git diff --name-only)
@ -88,7 +90,7 @@ generate_commit_message() {
*.md|*.txt|*.rst|docs/*|README*) *.md|*.txt|*.rst|docs/*|README*)
has_docs=true has_docs=true
;; ;;
*test*|*spec*|test/*|tests/*) test/*|tests/*|*test*|*spec*)
has_tests=true has_tests=true
;; ;;
esac esac
@ -96,8 +98,10 @@ generate_commit_message() {
# Create descriptive commit message # Create descriptive commit message
if [ "$files_count" -eq 1 ]; then if [ "$files_count" -eq 1 ]; then
local single_file=$(echo "$files_changed" | head -1) local single_file
local change_type=$(git diff --cached --name-status "$single_file" 2>/dev/null || git diff --name-status "$single_file") single_file=$(echo "$files_changed" | head -1)
local change_type
change_type=$(git diff --cached --name-status "$single_file" 2>/dev/null || git diff --name-status "$single_file")
case "${change_type:0:1}" in case "${change_type:0:1}" in
A) message="Add $single_file" ;; A) message="Add $single_file" ;;
M) message="Update $single_file" ;; M) message="Update $single_file" ;;
@ -133,12 +137,16 @@ check_git_repo() {
# Function to check for uncommitted changes and unpushed commits # Function to check for uncommitted changes and unpushed commits
check_for_changes() { check_for_changes() {
local has_staged=$(! git diff --cached --quiet && echo "true" || echo "false") local has_staged
local has_modified=$(! git diff --quiet && echo "true" || echo "false") has_staged=$(! git diff --cached --quiet && echo "true" || echo "false")
local has_untracked=$([ -n "$(git ls-files --others --exclude-standard)" ] && echo "true" || echo "false") local has_modified
has_modified=$(! git diff --quiet && echo "true" || echo "false")
local has_untracked
has_untracked=$([ -n "$(git ls-files --others --exclude-standard)" ] && echo "true" || echo "false")
# Check for unpushed commits # Check for unpushed commits
local current_branch=$(git branch --show-current) local current_branch
current_branch=$(git branch --show-current)
local unpushed_commits="" local unpushed_commits=""
if git rev-parse --verify "origin/$current_branch" >/dev/null 2>&1; then if git rev-parse --verify "origin/$current_branch" >/dev/null 2>&1; then
unpushed_commits=$(git rev-list "origin/$current_branch..HEAD" 2>/dev/null || true) unpushed_commits=$(git rev-list "origin/$current_branch..HEAD" 2>/dev/null || true)
@ -149,7 +157,8 @@ check_for_changes() {
if [ "$has_staged" = false ] && [ "$has_modified" = false ] && [ "$has_untracked" = false ]; then if [ "$has_staged" = false ] && [ "$has_modified" = false ] && [ "$has_untracked" = false ]; then
# No working tree changes, but check for unpushed commits # No working tree changes, but check for unpushed commits
if [ -n "$unpushed_commits" ]; then if [ -n "$unpushed_commits" ]; then
local commit_count=$(echo "$unpushed_commits" | wc -l) local commit_count
commit_count=$(echo "$unpushed_commits" | wc -l)
print_info "No working tree changes, but found $commit_count unpushed commit(s)" print_info "No working tree changes, but found $commit_count unpushed commit(s)"
print_info "Latest unpushed commit: $(git log --oneline -1)" print_info "Latest unpushed commit: $(git log --oneline -1)"
@ -166,7 +175,8 @@ check_for_changes() {
if [ "$has_staged" = false ]; then if [ "$has_staged" = false ]; then
# No staged changes, but check for unpushed commits # No staged changes, but check for unpushed commits
if [ -n "$unpushed_commits" ]; then if [ -n "$unpushed_commits" ]; then
local commit_count=$(echo "$unpushed_commits" | wc -l) local commit_count
commit_count=$(echo "$unpushed_commits" | wc -l)
print_info "No staged changes, but found $commit_count unpushed commit(s)" print_info "No staged changes, but found $commit_count unpushed commit(s)"
print_info "Latest unpushed commit: $(git log --oneline -1)" print_info "Latest unpushed commit: $(git log --oneline -1)"
@ -204,7 +214,7 @@ show_status_and_confirm() {
# Show staged changes # Show staged changes
if ! git diff --cached --quiet; then if ! git diff --cached --quiet; then
print_info "Staged changes:" print_info "Staged changes:"
git diff --cached --name-only | sed 's/^/ /' git diff --cached --name-only | while IFS= read -r line; do echo " $line"; done
has_staged_changes=true has_staged_changes=true
fi fi
@ -215,16 +225,20 @@ show_status_and_confirm() {
else else
print_info "Modified files (unstaged, will NOT be included):" print_info "Modified files (unstaged, will NOT be included):"
fi fi
git diff --name-only | sed 's/^/ /' git diff --name-only | while IFS= read -r line; do echo " $line"; done
has_unstaged_changes=true has_unstaged_changes=true
fi fi
# Show untracked files # Show untracked files
if [ "$ADD_ALL" = true ]; then if [ "$ADD_ALL" = true ]; then
local untracked=$(git ls-files --others --exclude-standard) local untracked
untracked=$(git ls-files --others --exclude-standard)
if [ -n "$untracked" ]; then if [ -n "$untracked" ]; then
print_info "Untracked files (will be added):" print_info "Untracked files (will be added):"
echo "$untracked" | sed 's/^/ /' # Use while loop to add indent without sed
while IFS= read -r line; do
echo " $line"
done <<< "$untracked"
has_untracked_files=true has_untracked_files=true
fi fi
fi fi
@ -411,8 +425,7 @@ main() {
print_info "Using custom commit message: '$commit_message'" print_info "Using custom commit message: '$commit_message'"
else else
print_info "Generating commit message..." print_info "Generating commit message..."
commit_message=$(generate_commit_message) if ! commit_message=$(generate_commit_message); then
if [ $? -ne 0 ]; then
print_error "Failed to generate commit message" print_error "Failed to generate commit message"
exit 1 exit 1
fi fi