mirror of
https://github.com/awalsh128/cache-apt-pkgs-action.git
synced 2025-12-26 05:11:24 +00:00
165 lines
4 KiB
Bash
Executable file
165 lines
4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
#==============================================================================
|
|
# setup_dev.sh
|
|
#==============================================================================
|
|
#
|
|
# DESCRIPTION:
|
|
# Sets up the development environment for the cache-apt-pkgs-action project.
|
|
# Installs all necessary tools, configures Go environment, and sets up
|
|
# pre-commit hooks.
|
|
#
|
|
# USAGE:
|
|
# setup_dev.sh [options]
|
|
#
|
|
# OPTIONS:
|
|
# -v, --verbose Enable verbose output
|
|
# -h, --help Show this help message
|
|
#==============================================================================
|
|
|
|
source "$(git rev-parse --show-toplevel)/scripts/lib.sh"
|
|
|
|
parse_common_args "$@"
|
|
|
|
#==============================================================================
|
|
# Setup Functions
|
|
#==============================================================================
|
|
|
|
check_prerequisites() {
|
|
print_status "Checking prerequisites"
|
|
|
|
require_command go "Please install Go first (https://golang.org/dl/)"
|
|
require_command npm "Please install Node.js and npm first (https://nodejs.org/)"
|
|
require_command git "Please install git first"
|
|
require_command curl "Please install curl first"
|
|
|
|
log_success "All prerequisites are available"
|
|
}
|
|
|
|
setup_go_environment() {
|
|
validate_go_project
|
|
|
|
print_status "Configuring Go environment"
|
|
go env -w GO111MODULE=auto
|
|
|
|
update_go_modules
|
|
}
|
|
|
|
install_development_tools() {
|
|
print_status "Installing development tools"
|
|
|
|
install_trunk
|
|
install_doctoc
|
|
install_go_tools
|
|
|
|
log_success "All development tools installed"
|
|
}
|
|
|
|
setup_git_hooks() {
|
|
validate_git_repo
|
|
|
|
print_status "Setting up Git hooks"
|
|
|
|
# Initialize trunk if not already done
|
|
if [[ ! -f .trunk/trunk.yaml ]]; then
|
|
log_info "Initializing trunk configuration"
|
|
trunk init
|
|
fi
|
|
|
|
# Configure git hooks
|
|
git config core.hooksPath .git/hooks/
|
|
|
|
log_success "Git hooks configured"
|
|
}
|
|
|
|
update_project_documentation() {
|
|
print_status "Updating project documentation"
|
|
|
|
local update_script="${SCRIPT_DIR}/update_md_tocs.sh"
|
|
if [[ -x ${update_script} ]]; then
|
|
"${update_script}"
|
|
else
|
|
log_warn "Markdown TOC update script not found or not executable"
|
|
fi
|
|
}
|
|
|
|
run_initial_checks() {
|
|
print_status "Running initial project validation"
|
|
|
|
# Run trunk check
|
|
if command_exists trunk; then
|
|
run_with_status "Running initial linting" "trunk check --no-fix"
|
|
fi
|
|
|
|
# Run tests
|
|
run_tests
|
|
|
|
log_success "Initial validation completed"
|
|
}
|
|
|
|
display_completion_message() {
|
|
print_header "Development Environment Setup Complete!"
|
|
|
|
echo "Available commands:"
|
|
echo " • Run tests: go test ./..."
|
|
echo " • Run linting: trunk check"
|
|
echo " • Update documentation: ./scripts/update_md_tocs.sh"
|
|
echo " • Interactive menu: ./scripts/menu.sh"
|
|
echo
|
|
log_success "Ready for development!"
|
|
}
|
|
|
|
#==============================================================================
|
|
# Main Setup Process
|
|
#==============================================================================
|
|
|
|
main() {
|
|
# Parse command line arguments first
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-v | --verbose)
|
|
export VERBOSE=true
|
|
;;
|
|
-h | --help)
|
|
cat <<'EOF'
|
|
USAGE:
|
|
setup_dev.sh [OPTIONS]
|
|
|
|
DESCRIPTION:
|
|
Sets up the development environment for the cache-apt-pkgs-action project.
|
|
Installs all necessary tools, configures Go environment, and sets up
|
|
pre-commit hooks.
|
|
|
|
OPTIONS:
|
|
-v, --verbose Enable verbose output
|
|
-h, --help Show this help message
|
|
EOF
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
echo "Use --help for usage information." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
print_header "Setting up Development Environment"
|
|
|
|
# Run setup steps
|
|
check_prerequisites
|
|
setup_go_environment
|
|
install_development_tools
|
|
setup_git_hooks
|
|
update_project_documentation
|
|
run_initial_checks
|
|
display_completion_message
|
|
}
|
|
|
|
#==============================================================================
|
|
# Entry Point
|
|
#==============================================================================
|
|
|
|
main "$@"
|