Browse Source

Update install.sh (#30)

fix: resolve installation failures on Windows through Git Bash
Marc Peters 4 months ago
parent
commit
e428f4ecfd
1 changed files with 34 additions and 26 deletions
  1. 34 26
      install.sh

+ 34 - 26
install.sh

@@ -65,6 +65,14 @@ CUSTOM_INSTALL_DIR=""  # Set via --install-dir argument
 # Utility Functions
 # Utility Functions
 #############################################################################
 #############################################################################
 
 
+jq_exec() {
+    local output
+    output=$(jq -r "$@")
+    local ret=$?
+    printf "%s\n" "$output" | tr -d '\r'
+    return $ret
+}
+
 print_header() {
 print_header() {
     echo -e "${CYAN}${BOLD}"
     echo -e "${CYAN}${BOLD}"
     echo "╔════════════════════════════════════════════════════════════════╗"
     echo "╔════════════════════════════════════════════════════════════════╗"
@@ -258,14 +266,14 @@ fetch_registry() {
 
 
 get_profile_components() {
 get_profile_components() {
     local profile=$1
     local profile=$1
-    jq -r ".profiles.${profile}.components[]" "$TEMP_DIR/registry.json"
+    jq_exec ".profiles.${profile}.components[]" "$TEMP_DIR/registry.json"
 }
 }
 
 
 get_component_info() {
 get_component_info() {
     local component_id=$1
     local component_id=$1
     local component_type=$2
     local component_type=$2
     
     
-    jq -r ".components.${component_type}[] | select(.id == \"${component_id}\")" "$TEMP_DIR/registry.json"
+    jq_exec ".components.${component_type}[] | select(.id == \"${component_id}\")" "$TEMP_DIR/registry.json"
 }
 }
 
 
 # Helper function to get the correct registry key for a component type
 # Helper function to get the correct registry key for a component type
@@ -298,7 +306,7 @@ resolve_dependencies() {
     local registry_key=$(get_registry_key "$type")
     local registry_key=$(get_registry_key "$type")
     
     
     # Get dependencies for this component
     # Get dependencies for this component
-    local deps=$(jq -r ".components.${registry_key}[] | select(.id == \"${id}\") | .dependencies[]?" "$TEMP_DIR/registry.json" 2>/dev/null || echo "")
+    local deps=$(jq_exec ".components.${registry_key}[] | select(.id == \"${id}\") | .dependencies[]?" "$TEMP_DIR/registry.json" 2>/dev/null || echo "")
     
     
     if [ -n "$deps" ]; then
     if [ -n "$deps" ]; then
         for dep in $deps; do
         for dep in $deps; do
@@ -462,17 +470,17 @@ show_profile_menu() {
     echo -e "${BOLD}Available Installation Profiles:${NC}\n"
     echo -e "${BOLD}Available Installation Profiles:${NC}\n"
     
     
     # Essential profile
     # Essential profile
-    local essential_name=$(jq -r '.profiles.essential.name' "$TEMP_DIR/registry.json")
-    local essential_desc=$(jq -r '.profiles.essential.description' "$TEMP_DIR/registry.json")
-    local essential_count=$(jq -r '.profiles.essential.components | length' "$TEMP_DIR/registry.json")
+    local essential_name=$(jq_exec '.profiles.essential.name' "$TEMP_DIR/registry.json")
+    local essential_desc=$(jq_exec '.profiles.essential.description' "$TEMP_DIR/registry.json")
+    local essential_count=$(jq_exec '.profiles.essential.components | length' "$TEMP_DIR/registry.json")
     echo -e "  ${GREEN}1) ${essential_name}${NC}"
     echo -e "  ${GREEN}1) ${essential_name}${NC}"
     echo -e "     ${essential_desc}"
     echo -e "     ${essential_desc}"
     echo -e "     Components: ${essential_count}\n"
     echo -e "     Components: ${essential_count}\n"
     
     
     # Developer profile
     # Developer profile
-    local dev_desc=$(jq -r '.profiles.developer.description' "$TEMP_DIR/registry.json")
-    local dev_count=$(jq -r '.profiles.developer.components | length' "$TEMP_DIR/registry.json")
-    local dev_badge=$(jq -r '.profiles.developer.badge // ""' "$TEMP_DIR/registry.json")
+    local dev_desc=$(jq_exec '.profiles.developer.description' "$TEMP_DIR/registry.json")
+    local dev_count=$(jq_exec '.profiles.developer.components | length' "$TEMP_DIR/registry.json")
+    local dev_badge=$(jq_exec '.profiles.developer.badge // ""' "$TEMP_DIR/registry.json")
     if [ -n "$dev_badge" ]; then
     if [ -n "$dev_badge" ]; then
         echo -e "  ${BLUE}2) Developer ${GREEN}[${dev_badge}]${NC}"
         echo -e "  ${BLUE}2) Developer ${GREEN}[${dev_badge}]${NC}"
     else
     else
@@ -482,25 +490,25 @@ show_profile_menu() {
     echo -e "     Components: ${dev_count}\n"
     echo -e "     Components: ${dev_count}\n"
     
     
     # Business profile
     # Business profile
-    local business_name=$(jq -r '.profiles.business.name' "$TEMP_DIR/registry.json")
-    local business_desc=$(jq -r '.profiles.business.description' "$TEMP_DIR/registry.json")
-    local business_count=$(jq -r '.profiles.business.components | length' "$TEMP_DIR/registry.json")
+    local business_name=$(jq_exec '.profiles.business.name' "$TEMP_DIR/registry.json")
+    local business_desc=$(jq_exec '.profiles.business.description' "$TEMP_DIR/registry.json")
+    local business_count=$(jq_exec '.profiles.business.components | length' "$TEMP_DIR/registry.json")
     echo -e "  ${CYAN}3) ${business_name}${NC}"
     echo -e "  ${CYAN}3) ${business_name}${NC}"
     echo -e "     ${business_desc}"
     echo -e "     ${business_desc}"
     echo -e "     Components: ${business_count}\n"
     echo -e "     Components: ${business_count}\n"
     
     
     # Full profile
     # Full profile
-    local full_name=$(jq -r '.profiles.full.name' "$TEMP_DIR/registry.json")
-    local full_desc=$(jq -r '.profiles.full.description' "$TEMP_DIR/registry.json")
-    local full_count=$(jq -r '.profiles.full.components | length' "$TEMP_DIR/registry.json")
+    local full_name=$(jq_exec '.profiles.full.name' "$TEMP_DIR/registry.json")
+    local full_desc=$(jq_exec '.profiles.full.description' "$TEMP_DIR/registry.json")
+    local full_count=$(jq_exec '.profiles.full.components | length' "$TEMP_DIR/registry.json")
     echo -e "  ${MAGENTA}4) ${full_name}${NC}"
     echo -e "  ${MAGENTA}4) ${full_name}${NC}"
     echo -e "     ${full_desc}"
     echo -e "     ${full_desc}"
     echo -e "     Components: ${full_count}\n"
     echo -e "     Components: ${full_count}\n"
     
     
     # Advanced profile
     # Advanced profile
-    local adv_name=$(jq -r '.profiles.advanced.name' "$TEMP_DIR/registry.json")
-    local adv_desc=$(jq -r '.profiles.advanced.description' "$TEMP_DIR/registry.json")
-    local adv_count=$(jq -r '.profiles.advanced.components | length' "$TEMP_DIR/registry.json")
+    local adv_name=$(jq_exec '.profiles.advanced.name' "$TEMP_DIR/registry.json")
+    local adv_desc=$(jq_exec '.profiles.advanced.description' "$TEMP_DIR/registry.json")
+    local adv_count=$(jq_exec '.profiles.advanced.components | length' "$TEMP_DIR/registry.json")
     echo -e "  ${YELLOW}5) ${adv_name}${NC}"
     echo -e "  ${YELLOW}5) ${adv_name}${NC}"
     echo -e "     ${adv_desc}"
     echo -e "     ${adv_desc}"
     echo -e "     Components: ${adv_count}\n"
     echo -e "     Components: ${adv_count}\n"
@@ -549,7 +557,7 @@ show_custom_menu() {
     echo "Available categories:"
     echo "Available categories:"
     for i in "${!categories[@]}"; do
     for i in "${!categories[@]}"; do
         local cat="${categories[$i]}"
         local cat="${categories[$i]}"
-        local count=$(jq -r ".components.${cat} | length" "$TEMP_DIR/registry.json")
+        local count=$(jq_exec ".components.${cat} | length" "$TEMP_DIR/registry.json")
         local cat_display=$(echo "$cat" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         local cat_display=$(echo "$cat" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         echo "  $((i+1))) ${cat_display} (${count} available)"
         echo "  $((i+1))) ${cat_display} (${count} available)"
     done
     done
@@ -598,12 +606,12 @@ show_component_selection() {
         local cat_display=$(echo "$category" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         local cat_display=$(echo "$category" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         echo -e "${CYAN}${BOLD}${cat_display}:${NC}"
         echo -e "${CYAN}${BOLD}${cat_display}:${NC}"
         
         
-        local components=$(jq -r ".components.${category}[] | .id" "$TEMP_DIR/registry.json")
+        local components=$(jq_exec ".components.${category}[] | .id" "$TEMP_DIR/registry.json")
         
         
         local idx=1
         local idx=1
         while IFS= read -r comp_id; do
         while IFS= read -r comp_id; do
-            local comp_name=$(jq -r ".components.${category}[] | select(.id == \"${comp_id}\") | .name" "$TEMP_DIR/registry.json")
-            local comp_desc=$(jq -r ".components.${category}[] | select(.id == \"${comp_id}\") | .description" "$TEMP_DIR/registry.json")
+            local comp_name=$(jq_exec ".components.${category}[] | select(.id == \"${comp_id}\") | .name" "$TEMP_DIR/registry.json")
+            local comp_desc=$(jq_exec ".components.${category}[] | select(.id == \"${comp_id}\") | .description" "$TEMP_DIR/registry.json")
             
             
             echo "  ${idx}) ${comp_name}"
             echo "  ${idx}) ${comp_name}"
             echo "     ${comp_desc}"
             echo "     ${comp_desc}"
@@ -821,7 +829,7 @@ perform_installation() {
         local type="${comp%%:*}"
         local type="${comp%%:*}"
         local id="${comp##*:}"
         local id="${comp##*:}"
         local registry_key=$(get_registry_key "$type")
         local registry_key=$(get_registry_key "$type")
-        local path=$(jq -r ".components.${registry_key}[] | select(.id == \"${id}\") | .path" "$TEMP_DIR/registry.json")
+        local path=$(jq_exec ".components.${registry_key}[] | select(.id == \"${id}\") | .path" "$TEMP_DIR/registry.json")
         
         
         if [ -n "$path" ] && [ "$path" != "null" ]; then
         if [ -n "$path" ] && [ "$path" != "null" ]; then
             local install_path=$(get_install_path "$path")
             local install_path=$(get_install_path "$path")
@@ -887,7 +895,7 @@ perform_installation() {
         local registry_key=$(get_registry_key "$type")
         local registry_key=$(get_registry_key "$type")
         
         
         # Get component path
         # Get component path
-        local path=$(jq -r ".components.${registry_key}[] | select(.id == \"${id}\") | .path" "$TEMP_DIR/registry.json")
+        local path=$(jq_exec ".components.${registry_key}[] | select(.id == \"${id}\") | .path" "$TEMP_DIR/registry.json")
         
         
         if [ -z "$path" ] || [ "$path" = "null" ]; then
         if [ -z "$path" ] || [ "$path" = "null" ]; then
             print_warning "Could not find path for ${comp}"
             print_warning "Could not find path for ${comp}"
@@ -944,7 +952,7 @@ perform_installation() {
     
     
     # Handle additional paths for advanced profile
     # Handle additional paths for advanced profile
     if [ "$PROFILE" = "advanced" ]; then
     if [ "$PROFILE" = "advanced" ]; then
-        local additional_paths=$(jq -r '.profiles.advanced.additionalPaths[]?' "$TEMP_DIR/registry.json")
+        local additional_paths=$(jq_exec '.profiles.advanced.additionalPaths[]?' "$TEMP_DIR/registry.json")
         if [ -n "$additional_paths" ]; then
         if [ -n "$additional_paths" ]; then
             print_step "Installing additional paths..."
             print_step "Installing additional paths..."
             while IFS= read -r path; do
             while IFS= read -r path; do
@@ -1014,7 +1022,7 @@ list_components() {
         local cat_display=$(echo "$category" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         local cat_display=$(echo "$category" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
         echo -e "${CYAN}${BOLD}${cat_display}:${NC}"
         echo -e "${CYAN}${BOLD}${cat_display}:${NC}"
         
         
-        local components=$(jq -r ".components.${category}[] | \"\(.id)|\(.name)|\(.description)\"" "$TEMP_DIR/registry.json")
+        local components=$(jq_exec ".components.${category}[] | \"\(.id)|\(.name)|\(.description)\"" "$TEMP_DIR/registry.json")
         
         
         while IFS='|' read -r id name desc; do
         while IFS='|' read -r id name desc; do
             echo -e "  ${GREEN}${name}${NC} (${id})"
             echo -e "  ${GREEN}${name}${NC} (${id})"