Update zrep script:
- Changed comment to define default path for .zreprc - Updated comment to define list of colors available for themes - Removed clearing of previous theme settings - Added function to check if a string exists in ~/.zshrc - Added function to check for required dependencies - Updated zrep_init function to include checking for dependencies - Updated zrep_init function to create default file and directory structure - Updated zrep_init function to check for existing zini path in .zshrc - Updated zrep_init function to check for existing source command for .zrep_addons in .zshrc - Updated zrep_init function to create or update .zrep_addons file - Updated zrep_check_for_updates function to display message if no updates found - Removed redundant message in zrep_update_package function - Updated zrep_download_package function to display download attempt message - Updated zrep_download_package function to display download successful message - Updated zrep_install_package function to include fetching package information - Removed commented out line in zrep_install_package function - Removed commented out line in zrep_parse_package_name function
This commit is contained in:
parent
a492260ec9
commit
40adc05b9b
87
zrep
87
zrep
@ -4,7 +4,7 @@ setopt extendedglob
|
|||||||
|
|
||||||
VERSION="0.0.2" # Sat-2024-03-13
|
VERSION="0.0.2" # Sat-2024-03-13
|
||||||
ZREP="Zsh Repository Tool"
|
ZREP="Zsh Repository Tool"
|
||||||
# Define the path to .zreprc
|
# Define the default path to .zreprc
|
||||||
ZREP_CONFIG="${HOME}/.zreprc"
|
ZREP_CONFIG="${HOME}/.zreprc"
|
||||||
|
|
||||||
function zrep_fpath() {
|
function zrep_fpath() {
|
||||||
@ -27,7 +27,7 @@ function zrep_fpath() {
|
|||||||
zrep_fpath ${HOME}/.zrep/functions
|
zrep_fpath ${HOME}/.zrep/functions
|
||||||
autoload -Uz zini
|
autoload -Uz zini
|
||||||
|
|
||||||
# List of colors available
|
# Define a list of colors available to use in themes
|
||||||
typeset -A base_colors=(
|
typeset -A base_colors=(
|
||||||
[green]="\033[0;32m"
|
[green]="\033[0;32m"
|
||||||
[yellow]="\033[1;33m"
|
[yellow]="\033[1;33m"
|
||||||
@ -71,10 +71,6 @@ zrep_load_theme() {
|
|||||||
theme_file="${config[main_zrep_install_dir]}/themes/classic"
|
theme_file="${config[main_zrep_install_dir]}/themes/classic"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clear previous theme settings
|
|
||||||
#unset current_theme
|
|
||||||
#declare -gA current_theme
|
|
||||||
|
|
||||||
# Source the theme file, which should define 'theme_colors'
|
# Source the theme file, which should define 'theme_colors'
|
||||||
source "$theme_file"
|
source "$theme_file"
|
||||||
|
|
||||||
@ -82,7 +78,6 @@ zrep_load_theme() {
|
|||||||
for key value in ${(kv)theme_colors}; do
|
for key value in ${(kv)theme_colors}; do
|
||||||
current_theme[$key]="$value"
|
current_theme[$key]="$value"
|
||||||
done
|
done
|
||||||
# print -l ${(kv)current_theme}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function zrep_main_version_string() {
|
function zrep_main_version_string() {
|
||||||
@ -97,10 +92,12 @@ function zrep_version() {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This function is used to display messages and use colors
|
||||||
|
# from the loaded theme.
|
||||||
function zrep_msg() {
|
function zrep_msg() {
|
||||||
local msg_type="$1"
|
local msg_type="$1"
|
||||||
local message="$2"
|
local message="$2"
|
||||||
local color="${base_colors[end]}" # Default color
|
local color="${base_colors[end]}" # Default color is NONE
|
||||||
|
|
||||||
# Retrieve the color key from the current theme
|
# Retrieve the color key from the current theme
|
||||||
local theme_color_key="${current_theme[$msg_type]}"
|
local theme_color_key="${current_theme[$msg_type]}"
|
||||||
@ -116,11 +113,44 @@ function zrep_msg() {
|
|||||||
printf "%b\n" "${color}${message}${base_colors[end]}"
|
printf "%b\n" "${color}${message}${base_colors[end]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to check if a given string exists in ~/.zshrc
|
||||||
|
function zrep_find_string() {
|
||||||
|
local searchString="$1"
|
||||||
|
local found=0
|
||||||
|
|
||||||
|
while IFS= read -r line || [[ -n $line ]]; do
|
||||||
|
if [[ "$line" == *"$searchString"* ]]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < "${HOME}/.zshrc"
|
||||||
|
|
||||||
|
echo $found
|
||||||
|
}
|
||||||
|
|
||||||
|
function zrep_check_for_deps() {
|
||||||
|
# Array of required external programs
|
||||||
|
local required_programs=('jq')
|
||||||
|
|
||||||
|
# Iterate over the array
|
||||||
|
for program in "${required_programs[@]}"; do
|
||||||
|
# Check if the program is available in the system's PATH
|
||||||
|
if ! command -v "$program" &> /dev/null; then
|
||||||
|
# Program not found, display a message
|
||||||
|
echo "Required program not found: $program"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# The first step after downloading zrep.
|
||||||
|
# Here we create the default file and directory structure
|
||||||
function zrep_init() {
|
function zrep_init() {
|
||||||
local zshrc_file="${HOME}/.zshrc"
|
local zshrc_file="${HOME}/.zshrc"
|
||||||
local addons_file="${HOME}/.zrep_addons"
|
local zrep_addons="${HOME}/.zrep_addons"
|
||||||
local install_dir
|
local install_dir
|
||||||
|
|
||||||
|
zrep_check_for_deps
|
||||||
|
|
||||||
# Check if .zreprc exists
|
# Check if .zreprc exists
|
||||||
if [[ ! -f ${ZREP_CONFIG} ]]; then
|
if [[ ! -f ${ZREP_CONFIG} ]]; then
|
||||||
echo "${ZREP_CONFIG} not found. Creating it..."
|
echo "${ZREP_CONFIG} not found. Creating it..."
|
||||||
@ -130,11 +160,12 @@ function zrep_init() {
|
|||||||
|
|
||||||
# Write to .zreprc
|
# Write to .zreprc
|
||||||
cat > "${ZREP_CONFIG}" <<EOF
|
cat > "${ZREP_CONFIG}" <<EOF
|
||||||
[main]
|
[main]
|
||||||
zrep_install_dir = ${install_dir}
|
zrep_install_dir = ${install_dir}
|
||||||
|
|
||||||
[global]
|
[global]
|
||||||
repo_url = https://kekepower.com/zrep
|
repo_url = https://kekepower.com/zrep
|
||||||
|
theme = classic
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
echo "Loading configuration from ${ZREP_CONFIG}"
|
echo "Loading configuration from ${ZREP_CONFIG}"
|
||||||
@ -142,23 +173,23 @@ EOF
|
|||||||
install_dir=${config[main_zrep_install_dir]}
|
install_dir=${config[main_zrep_install_dir]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "${install_dir}/functions/zini"
|
if [[ $(zrep_find_string zini) -eq 0 ]]; then
|
||||||
curl -s https://raw.githubusercontent.com/kekePower/zini/main/zini -o "${install_dir}/functions/zini/zini"
|
mkdir -p "${install_dir}/functions/zini"
|
||||||
if ! grep -q "zini" "${zshrc_file}"; then
|
curl -s https://raw.githubusercontent.com/kekePower/zini/main/zini -o "${install_dir}/functions/zini/zini"
|
||||||
echo "Adding 'zini' path to fpath in ${zshrc_file}"
|
echo "Adding 'zini' path to fpath in ${zshrc_file}"
|
||||||
echo "fpath=(${install_dir}/functions/zini \$fpath)" >> ${zshrc_file}
|
echo "fpath=(${install_dir}/functions/zini \$fpath)" >> ${zshrc_file}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if .zshrc already sources .zrep_addons, if not, add it
|
# Check if .zshrc already sources .zrep_addons, if not, add it
|
||||||
if ! grep -q "source ${addons_file}" "${zshrc_file}"; then
|
if [[ $(zrep_find_string "source ${zrep_addons}") -eq 0 ]]; then
|
||||||
echo "Adding source command for .zrep_addons to .zshrc..."
|
echo "Adding source command for .zrep_addons to .zshrc..."
|
||||||
echo "source ${addons_file}" >> "${zshrc_file}"
|
echo "source ${zrep_addons}" >> "${zshrc_file}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create or update the .zrep_addons file
|
# Create or update the .zrep_addons file
|
||||||
if [[ ! -f ${addons_file} ]]; then
|
if [[ ! -f ${zrep_addons} ]]; then
|
||||||
echo "Creating file ${addons_file}..."
|
echo "Creating file ${zrep_addons}..."
|
||||||
cat > "${addons_file}" <<EOF
|
cat > "${zrep_addons}" <<EOF
|
||||||
# Source the .addons file from the zrep installation directory
|
# Source the .addons file from the zrep installation directory
|
||||||
source "${install_dir}/.addons"
|
source "${install_dir}/.addons"
|
||||||
|
|
||||||
@ -421,6 +452,10 @@ function zrep_check_for_updates() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ ${updates} == "false" ]]; then
|
||||||
|
zrep_msg info "\nNo updates found."
|
||||||
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function zrep_update_package() {
|
function zrep_update_package() {
|
||||||
@ -455,8 +490,6 @@ function zrep_update_package() {
|
|||||||
local install_pkg="${author}/${script}"
|
local install_pkg="${author}/${script}"
|
||||||
zrep_install_package u ${install_pkg}
|
zrep_install_package u ${install_pkg}
|
||||||
done
|
done
|
||||||
else
|
|
||||||
zrep_msg info "\nNo updates found."
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -469,13 +502,13 @@ function zrep_download_package() {
|
|||||||
local attempt=1
|
local attempt=1
|
||||||
|
|
||||||
while (( attempt <= retries )); do
|
while (( attempt <= retries )); do
|
||||||
zrep_msg info "Attempt $attempt of $retries: Downloading..."
|
zrep_msg sub "Attempt $attempt of $retries: Downloading..."
|
||||||
# Use curl to download the file, capturing HTTP status code
|
# Use curl to download the file, capturing HTTP status code
|
||||||
http_status=$(curl -s -w "%{http_code}" -o "${zipFile}" "${dlurl}" -o /dev/null)
|
http_status=$(curl -s -w "%{http_code}" -o "${zipFile}" "${dlurl}" -o /dev/null)
|
||||||
|
|
||||||
# Check if curl command was successful and HTTP status is 200 (OK)
|
# Check if curl command was successful and HTTP status is 200 (OK)
|
||||||
if [[ $? -eq 0 && ${http_status} -eq 200 ]]; then
|
if [[ $? -eq 0 && ${http_status} -eq 200 ]]; then
|
||||||
zrep_msg info "Download successful."
|
zrep_msg sub "Download successful."
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
zrep_msg debug "Error: Failed to download the package. HTTP status: ${http_status}."
|
zrep_msg debug "Error: Failed to download the package. HTTP status: ${http_status}."
|
||||||
@ -509,9 +542,7 @@ function zrep_install_package() {
|
|||||||
|
|
||||||
# If not installed, proceed with fetching the package information
|
# If not installed, proceed with fetching the package information
|
||||||
zrep_parse_remote "${config[global_repo_url]}/packages.json" "${package}"
|
zrep_parse_remote "${config[global_repo_url]}/packages.json" "${package}"
|
||||||
# echo "zrep_install_package: $dlurl"
|
|
||||||
|
|
||||||
#local baseDir="${config[main_zrep_install_dir]}"
|
|
||||||
local tmpDir="${config[main_zrep_install_dir]}/tmp"
|
local tmpDir="${config[main_zrep_install_dir]}/tmp"
|
||||||
|
|
||||||
mkdir -p "${tmpDir}"
|
mkdir -p "${tmpDir}"
|
||||||
@ -540,7 +571,6 @@ function zrep_parse_installed_json() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function zrep_parse_package_name() {
|
function zrep_parse_package_name() {
|
||||||
# echo "Looking for package ${1}"
|
|
||||||
package_name="${1}"
|
package_name="${1}"
|
||||||
zrep_installed_json
|
zrep_installed_json
|
||||||
author="${package_name%/*}"
|
author="${package_name%/*}"
|
||||||
@ -699,7 +729,6 @@ function main() {
|
|||||||
case "${1}" in
|
case "${1}" in
|
||||||
init)
|
init)
|
||||||
zrep_init
|
zrep_init
|
||||||
# zrep_fpath ${config[main_zrep_install_dir]}
|
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
check)
|
check)
|
||||||
|
Loading…
Reference in New Issue
Block a user