diff options
Diffstat (limited to 'build-repo.sh')
| -rwxr-xr-x | build-repo.sh | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/build-repo.sh b/build-repo.sh deleted file mode 100755 index 3a17d2e..0000000 --- a/build-repo.sh +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env bash - -# Script to build and maintain a Mesk repository -# Automatically discovers, validates, and indexes .mesk packages - -set -e # Exit on any error - -# Configuration -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_DIR="${1:-$SCRIPT_DIR/repo}" # Use first argument or default to 'repo' -SOURCE_DIR="${2:-$SCRIPT_DIR/packages}" # Directory to scan for .mesk files -MESK_BIN="${MESK_BIN:-$SCRIPT_DIR/target/release/mesk}" - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Logging functions -log_info() { - echo -e "${BLUE}[INFO]${NC} $1" -} - -log_success() { - echo -e "${GREEN}[SUCCESS]${NC} $1" -} - -log_warning() { - echo -e "${YELLOW}[WARNING]${NC} $1" -} - -log_error() { - echo -e "${RED}[ERROR]${NC} $1" -} - -# Check if mesk binary exists -if [ ! -f "$MESK_BIN" ]; then - log_error "Mesk binary not found at: $MESK_BIN" - log_info "Looking for mesk in PATH..." - MESK_BIN=$(which mesk 2>/dev/null || echo "") - if [ -z "$MESK_BIN" ]; then - log_error "Mesk binary not found in PATH either." - log_info "Please build mesk first with: cargo build --release" - exit 1 - else - log_info "Found mesk at: $MESK_BIN" - fi -else - log_info "Using mesk binary: $MESK_BIN" -fi - -# Create directories if they don't exist -mkdir -p "$REPO_DIR" -mkdir -p "$SOURCE_DIR" - -# Function to validate a .mesk package -validate_package() { - local package="$1" - log_info "Validating package: $(basename "$package")" - - if "$MESK_BIN" validate "$package" >/dev/null 2>&1; then - log_success "Package $(basename "$package") is valid" - return 0 - else - log_error "Package $(basename "$package") is invalid" - return 1 - fi -} - -# Main function to build repository -build_repository() { - log_info "Starting repository build process..." - log_info "Repository directory: $REPO_DIR" - log_info "Source directory: $SOURCE_DIR" - - # Find all .mesk files in source directory (recursively) - local package_files=() - while IFS= read -r -d '' file; do - package_files+=("$file") - done < <(find "$SOURCE_DIR" -name "*.mesk" -type f -print0) - - if [ ${#package_files[@]} -eq 0 ]; then - log_warning "No .mesk packages found in $SOURCE_DIR" - log_info "Place your .mesk files in the source directory and run again" - - # Still generate index even if no packages - log_info "Generating empty repository index..." - if "$MESK_BIN" gen-index "$REPO_DIR"; then - log_success "Empty repository index generated" - else - log_error "Failed to generate empty repository index" - exit 1 - fi - - return 0 - fi - - log_info "Found ${#package_files[@]} .mesk package(s) to process" - - # Validate packages first - local valid_packages=() - local invalid_count=0 - - for package in "${package_files[@]}"; do - if validate_package "$package"; then - valid_packages+=("$package") - else - ((invalid_count++)) - fi - done - - if [ $invalid_count -ne 0 ]; then - log_warning "$invalid_count package(s) failed validation" - log_info "Only processing valid packages" - fi - - if [ ${#valid_packages[@]} -eq 0 ]; then - log_error "No valid packages to process" - log_info "Repository build failed" - exit 1 - fi - - # Copy valid packages to repository directory - log_info "Copying valid packages to repository..." - for package in "${valid_packages[@]}"; do - local package_name=$(basename "$package") - local dest_path="$REPO_DIR/$package_name" - - # Compare timestamps to avoid unnecessary copies - if [ ! -f "$dest_path" ] || [ "$package" -nt "$dest_path" ]; then - cp "$package" "$REPO_DIR/" - log_info "Copied $(basename "$package") to repository" - else - log_info "Package $(basename "$package") already exists and is up to date" - fi - done - - # Generate repository index - log_info "Generating repository index..." - if "$MESK_BIN" gen-index "$REPO_DIR"; then - log_success "Repository index generated successfully" - else - log_error "Failed to generate repository index" - exit 1 - fi - - # Create/update repository info file - local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ") - cat > "$REPO_DIR/REPO_INFO" << EOF -# Repository Information -Generated At: $timestamp -Total Packages: ${#valid_packages[@]} -Invalid Packages: $invalid_count -Source Directory: $SOURCE_DIR -Repository Directory: $REPO_DIR - -Valid Packages: -EOF - - for package in "${valid_packages[@]}"; do - echo "- $(basename "$package")" >> "$REPO_DIR/REPO_INFO" - done - - log_success "Repository build completed successfully!" - log_info "Repository location: $REPO_DIR" - log_info "Packages processed: ${#valid_packages[@]}" - if [ $invalid_count -ne 0 ]; then - log_info "Invalid packages: $invalid_count" - fi -} - -# Function to show help -show_help() { - echo "Usage: $0 [REPO_DIR] [SOURCE_DIR]" - echo "" - echo "Automatically builds a Mesk repository from .mesk packages." - echo "" - echo "Arguments:" - echo " REPO_DIR Directory to create/build repository (default: ./repo)" - echo " SOURCE_DIR Directory containing .mesk files to add (default: ./packages)" - echo "" - echo "Environment:" - echo " MESK_BIN Path to mesk binary (default: ./target/release/mesk or in PATH)" - echo "" - echo "Example:" - echo " $0 /path/to/repo /path/to/packages" - echo " $0" # will use defaults -} - -# Parse command line options -case "${1:-}" in - -h|--help) - show_help - exit 0 - ;; - *) - build_repository - ;; -esac
\ No newline at end of file |
