major performance changes + timing functions
This commit is contained in:
parent
51a24c653f
commit
794213ecd5
15
config.sh
15
config.sh
@ -1,10 +1,11 @@
|
|||||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||||
# The script is being executed directly
|
# The script is being executed directly
|
||||||
for function in \
|
# for function in \
|
||||||
_configure;
|
# _configure;
|
||||||
do
|
# do
|
||||||
unset $function || echo "failed to unset function: $function"
|
# unset $function || echo "failed to unset function: $function"
|
||||||
done
|
# done
|
||||||
|
unset _configure || echo "failed to unset function: _configure"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -22,9 +23,9 @@ function _configure() {
|
|||||||
ETOOLS_FIND_CMD=${ETOOLS_FIND_CMD:-"fd"}
|
ETOOLS_FIND_CMD=${ETOOLS_FIND_CMD:-"fd"}
|
||||||
# The Argyments passed to the find command
|
# The Argyments passed to the find command
|
||||||
ETOOLS_FIND_ARGS=${ETOOLS_FIND_ARGS:-'''
|
ETOOLS_FIND_ARGS=${ETOOLS_FIND_ARGS:-'''
|
||||||
--exclude profile --exclude scripts --exclude eclass --exclude metadata
|
--exclude profiles --exclude scripts --exclude eclass --exclude metadata
|
||||||
--exclude app-emacs --exclude dev-ruby --exclude acct-user --exclude acct-group
|
--exclude app-emacs --exclude dev-ruby --exclude acct-user --exclude acct-group
|
||||||
--type directory --format '"\"{}\""''''}
|
--type directory --format '"\"{}\""' --max-depth 3'''}
|
||||||
|
|
||||||
# [ -z "${ETOOLS_FIND_CMD}" ] && ETOOLS_FIND_CMD="find"
|
# [ -z "${ETOOLS_FIND_CMD}" ] && ETOOLS_FIND_CMD="find"
|
||||||
# [ -z "${ETOOLS_FIND_ARGS}" ] && \
|
# [ -z "${ETOOLS_FIND_ARGS}" ] && \
|
||||||
|
|||||||
31
helper.sh
31
helper.sh
@ -6,6 +6,7 @@ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|||||||
_formatted_find \
|
_formatted_find \
|
||||||
_set_weights \
|
_set_weights \
|
||||||
_get_heighest \
|
_get_heighest \
|
||||||
|
_default_sort \
|
||||||
_etools_print_assoc_array \
|
_etools_print_assoc_array \
|
||||||
_filter;
|
_filter;
|
||||||
do
|
do
|
||||||
@ -33,8 +34,8 @@ function _formatted_find() {
|
|||||||
function _set_weights() {
|
function _set_weights() {
|
||||||
for package in "${!_etools_packages[@]}"; do
|
for package in "${!_etools_packages[@]}"; do
|
||||||
for regex in ${!package_weights[@]}; do
|
for regex in ${!package_weights[@]}; do
|
||||||
if [[ ${package//\"/} =~ ^*${regex}*$ ]]; then
|
if [[ $package =~ ^*${regex}*$ ]]; then
|
||||||
_etools_packages[${package//\"/}]=${package_weights[$regex]}
|
_etools_packages[$package]=${package_weights[$regex]}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@ -54,19 +55,40 @@ function _get_heighest() {
|
|||||||
echo "$max_key"
|
echo "$max_key"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _default_sort() {
|
||||||
|
for package in "${!_etools_packages[@]}"; do
|
||||||
|
case $package in
|
||||||
|
*selinux*)
|
||||||
|
_etools_packages["$package"]=$((_etools_packages["$package"] - 30))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
function _etools_print_assoc_array {
|
function _etools_print_assoc_array {
|
||||||
for key in "${!_etools_packages[@]}"; do
|
for key in "${!_etools_packages[@]}"; do
|
||||||
echo "$key: ${_etools_packages[$key]}"
|
echo "$key: ${_etools_packages[$key]}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _debug_time() {
|
||||||
|
local end_time=$(date +%s%3N)
|
||||||
|
echo $((end_time - start_time))
|
||||||
|
}
|
||||||
|
|
||||||
function _filter() {
|
function _filter() {
|
||||||
|
# local start_time=$(date +%s%3N) && echo 0
|
||||||
|
# _debug_time "$start_time"
|
||||||
(( $# <= 1 )) && ewarn "No packages found, review config options" && return 1;
|
(( $# <= 1 )) && ewarn "No packages found, review config options" && return 1;
|
||||||
declare -Ag _etools_packages
|
declare -Ag _etools_packages
|
||||||
for package in "$@"; do
|
for package in "$@"; do
|
||||||
# allow indirect reference
|
# allow indirect reference
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
_etools_packages[$(echo "$package" | tr -d '"' | awk -F'/' '{print $(NF-1)"/"$NF}')]=0
|
package=${package//\"/}
|
||||||
|
base_name="${package##*/}" # Get the last part
|
||||||
|
parent_name="${package%/*}" # Remove the last part
|
||||||
|
parent_name="${parent_name##*/}" # Get the second-to-last part
|
||||||
|
_etools_packages["$parent_name/$base_name"]=0
|
||||||
done
|
done
|
||||||
local functions=
|
local functions=
|
||||||
functions="$(declare -F | "${ETOOLS_GREP_CMD}" 'etools_find_sort_' | awk '{print $3}')"
|
functions="$(declare -F | "${ETOOLS_GREP_CMD}" 'etools_find_sort_' | awk '{print $3}')"
|
||||||
@ -74,10 +96,11 @@ function _filter() {
|
|||||||
# leave warning untils this is stable/fixed
|
# leave warning untils this is stable/fixed
|
||||||
for function in \
|
for function in \
|
||||||
_set_weights \
|
_set_weights \
|
||||||
|
_default_sort \
|
||||||
${functions[@]};
|
${functions[@]};
|
||||||
do
|
do
|
||||||
$function
|
$function
|
||||||
done
|
done
|
||||||
_etools_print_assoc_array
|
# _etools_print_assoc_array
|
||||||
_get_heighest
|
_get_heighest
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user