feat: implement markitect installer with version/release commands (issue #80)
- Add comprehensive version information system with git integration - Add `markitect version` and `markitect release` commands with multiple output formats - Add global `--version` flag for quick version checking - Create Python installer script with advanced options (install.py) - Create shell installer wrapper for easy installation (install.sh) - Add comprehensive installation documentation (INSTALL.md) - Support user and system-wide installations with virtual environments - Include development mode installation with test dependencies - Add installation status checking and uninstall functionality Commands added: - `markitect --version` - Quick version display - `markitect version [--short]` - Detailed version information - `markitect release [--format text|json|yaml]` - Release information Installer features: - Automatic virtual environment creation - Symbolic link management for global access - Custom installation paths and prefixes - Development mode with test dependencies - Installation validation and troubleshooting Resolves #80 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
160
install.sh
Executable file
160
install.sh
Executable file
@@ -0,0 +1,160 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# MarkiTect Quick Installer
|
||||
#
|
||||
# This script provides a simple way to install MarkiTect.
|
||||
# It's a wrapper around the Python installer script.
|
||||
#
|
||||
# Usage:
|
||||
# ./install.sh [options]
|
||||
# curl -sSL https://raw.githubusercontent.com/example/markitect/main/install.sh | bash
|
||||
#
|
||||
# Options:
|
||||
# --system Install system-wide (requires sudo)
|
||||
# --dev Install in development mode
|
||||
# --check Check installation status
|
||||
# --uninstall Uninstall MarkiTect
|
||||
# --help Show help
|
||||
|
||||
set -e
|
||||
|
||||
# Default options
|
||||
SYSTEM=""
|
||||
DEV=""
|
||||
CHECK=""
|
||||
UNINSTALL=""
|
||||
HELP=""
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored output
|
||||
print_info() {
|
||||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--system)
|
||||
SYSTEM="--system"
|
||||
shift
|
||||
;;
|
||||
--dev)
|
||||
DEV="--dev"
|
||||
shift
|
||||
;;
|
||||
--check)
|
||||
CHECK="--check"
|
||||
shift
|
||||
;;
|
||||
--uninstall)
|
||||
UNINSTALL="--uninstall"
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
HELP="--help"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
print_error "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show help if requested
|
||||
if [[ -n "$HELP" ]]; then
|
||||
cat << EOF
|
||||
MarkiTect Quick Installer
|
||||
|
||||
Usage: $0 [options]
|
||||
|
||||
Options:
|
||||
--system Install system-wide (requires sudo)
|
||||
--dev Install in development mode with test dependencies
|
||||
--check Check current installation status
|
||||
--uninstall Uninstall MarkiTect
|
||||
--help Show this help message
|
||||
|
||||
Examples:
|
||||
$0 # Install for current user
|
||||
$0 --system # Install system-wide
|
||||
$0 --dev # Install in development mode
|
||||
$0 --check # Check installation status
|
||||
$0 --uninstall # Uninstall MarkiTect
|
||||
|
||||
For more advanced options, use the Python installer directly:
|
||||
python install.py --help
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check if Python is available
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
print_error "Python 3 is required but not found"
|
||||
print_info "Please install Python 3.8 or higher and try again"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check Python version
|
||||
python_version=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
|
||||
required_version="3.8"
|
||||
|
||||
if ! python3 -c "import sys; sys.exit(0 if sys.version_info >= (3, 8) else 1)"; then
|
||||
print_error "Python $required_version or higher is required (found: $python_version)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "Python $python_version found"
|
||||
|
||||
# Determine script directory
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
INSTALLER_SCRIPT="$SCRIPT_DIR/install.py"
|
||||
|
||||
# Check if installer script exists
|
||||
if [[ ! -f "$INSTALLER_SCRIPT" ]]; then
|
||||
print_error "Installer script not found: $INSTALLER_SCRIPT"
|
||||
print_info "Make sure you're running this from the MarkiTect project directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build command
|
||||
cmd="python3 $INSTALLER_SCRIPT"
|
||||
|
||||
if [[ -n "$SYSTEM" ]]; then
|
||||
cmd="$cmd $SYSTEM"
|
||||
print_warning "System installation requires sudo privileges"
|
||||
fi
|
||||
|
||||
if [[ -n "$DEV" ]]; then
|
||||
cmd="$cmd $DEV"
|
||||
fi
|
||||
|
||||
if [[ -n "$CHECK" ]]; then
|
||||
cmd="$cmd $CHECK"
|
||||
fi
|
||||
|
||||
if [[ -n "$UNINSTALL" ]]; then
|
||||
cmd="$cmd $UNINSTALL"
|
||||
fi
|
||||
|
||||
# Run the installer
|
||||
print_info "Running: $cmd"
|
||||
exec $cmd
|
||||
Reference in New Issue
Block a user