Skip to content

Commit 50dbe23

Browse files
committed
Improvements
1 parent 8c4cf18 commit 50dbe23

File tree

10 files changed

+164
-53
lines changed

10 files changed

+164
-53
lines changed

.ci/bundle.bash

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ ENDBANNER
5252
echo -e "\n\n####### END Script: $1#######\n" >> "$OUTFILE"
5353
}
5454

55-
ui::step "Clean $(ui::q $OUT)" \
55+
ui::step "Clean $(ui::em $OUT)" \
5656
rm -rf "$OUT" '&&' mkdir -p "$OUT"
5757

58-
ui::step "Bundle library files to $(ui::q $OUT/lib.bundle.bash)" \
58+
ui::step "Bundle library files to $(ui::em $OUT/lib.bundle.bash)" \
5959
bundle-library
6060

6161
find . -maxdepth 1 -type f -iname '*.bash' | while read SCRIPT ; do
62-
ui::step "Bundle $(ui::q $SCRIPT) with lib" \
62+
ui::step "Bundle $(ui::em $SCRIPT) with lib" \
6363
bundle-script "$SCRIPT" "$OUT/$SCRIPT"
6464
done
6565

lib/_lib.bash

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,61 @@
22

33
set -euo pipefail
44

5-
if [ -z "${MAGEOPS_BASH_LIB_DIR:-}" ] ; then
6-
if [ -f "$(dirname "${BASH_SOURCE[0]}")/lib/_lib.bash" ] ; then
7-
export MAGEOPS_BASH_LIB_DIR="$(dirname "${BASH_SOURCE[0]}")/lib"
8-
elif [ -f "$(pwd)/lib/_lib.bash" ] ; then
9-
export MAGEOPS_BASH_LIB_DIR="$(pwd)/lib"
10-
else
11-
export MAGEOPS_BASH_LIB_DIR=false
12-
fi
13-
fi
14-
155
export MAGEOPS_LEAVING=""
166
export MAGEOPS_DEBUG="${MAGEOPS_DEBUG:-false}"
177
export MAGEOPS_CLEANUP_HOOKS=()
188

19-
trap 'EXIT_CODE=$?; lib::trap $EXIT_CODE; exit $EXIT_CODE' EXIT HUP QUIT INT
9+
trap 'EXIT_CODE=$? ; lib::trap $EXIT_CODE || true ; exit $EXIT_CODE' EXIT HUP QUIT INT
10+
11+
lib::join() {
12+
local SEP="${1:-:}"; shift
13+
printf "%s:" "$@" | sed -E 's~^['"$SEP"' ]*|['"$SEP"' ] *$~~g'
14+
}
15+
16+
lib::split() {
17+
local SEP="${1:-:}"; shift
18+
while IFS="$SEP" read -ra ITEMS; do
19+
for ITEM in "${ITEMS[@]}"; do
20+
echo "$ITEM"
21+
done
22+
done <<< "$*"
23+
}
24+
25+
lib::path::get() {
26+
local PWD="$(pwd)"
27+
local SWD="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
28+
local MAGEOPS_BASH_LIB_SEARCH_PATHS=("${MAGEOPS_BASH_LIB_DIR:-}")
29+
local MAGEOPS_BASH_LIB_SEARCH_PATHS+=("$@")
30+
local MAGEOPS_BASH_LIB_SEARCH_PATHS+=(
31+
"$PWD"
32+
"$PWD/lib"
33+
"$SWD"
34+
"$SWD/lib"
35+
"$HOME/.local/share/mageops/bash/lib"
36+
"$HOME/.mageops/bash/lib"
37+
"/usr/local/share/mageops/bash/lib"
38+
"/opt/mageops/bash/lib"
39+
)
40+
41+
lib::join ":" "${MAGEOPS_BASH_LIB_SEARCH_PATHS[@]}"
42+
}
43+
44+
lib::path::locate() {
45+
local FILE_NAME="${1:-_lib.bash}"
46+
local SEARCH_PATH="${2:-${MAGEOPS_BASH_LIB_SEARCH_PATH:-}}"
47+
48+
while read -ra TRY_PATH ; do
49+
if [ -z "$TRY_PATH" ] ; then
50+
continue
51+
elif [ -f "$TRY_PATH/$FILE_NAME" ] ; then
52+
echo "$TRY_PATH"
53+
return
54+
fi
55+
done <<< "$(lib::split ':' "$SEARCH_PATH")"
56+
}
57+
58+
export MAGEOPS_BASH_LIB_SEARCH_PATH="${MAGEOPS_BASH_LIB_SEARCH_PATH:-$(lib::path::get)}"
59+
export MAGEOPS_BASH_LIB_DIR="${MAGEOPS_BASH_LIB_DIR:-$(lib::path::locate)}"
2060

2161
lib::leave() {
2262
local LEAVE_CODE="${1:-}"; shift
@@ -66,7 +106,7 @@ lib::import() {
66106
if declare -F "$MODULE::__module__" ; then
67107
"$MODULE::__module__"
68108
else
69-
if [ "${MAGEOPS_BASH_LIB_DIR:-}" == "false" ]; then
109+
if [ -z "${MAGEOPS_BASH_LIB_DIR:-}" ]; then
70110
echo "Cannot locate module $MODULE: environment variable MAGEOPS_BASH_LIB_DIR is not set" >&2
71111
exit 99
72112
fi

lib/fs.bash

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fs::__module__() {
1616
# Warning! This argument order is for GNU tar 1.26 (CentOS 7)
1717
# - different order of exclude arguments might be needed with
1818
# later versions!
19-
ui::step "<Filesystem> Archive $(ui::q $FS_ROOT_DIR/$FS_SRC_DIR) -> $(ui::q $FS_ARCHIVE_PATH)" \
19+
ui::step "<Filesystem> Archive $(ui::em $FS_ROOT_DIR/$FS_SRC_DIR) -> $(ui::em $FS_ARCHIVE_PATH)" \
2020
`remote::cmd \
2121
tar \
2222
-cz \
@@ -25,24 +25,24 @@ fs::__module__() {
2525
"$FS_SRC_DIR"` \
2626
'>' "$FS_ARCHIVE_PATH"
2727

28-
ui::done "<Filesystem> Archive $(ui::q $FS_ROOT_DIR/$FS_SRC_DIR) -> written $(ui::q $(ui::fsize "$FS_ARCHIVE_PATH")) file"
28+
ui::done "<Filesystem> Archive $(ui::em $FS_ROOT_DIR/$FS_SRC_DIR) -> written $(ui::em $(ui::fsize "$FS_ARCHIVE_PATH")) file"
2929
}
3030

3131
fs::unarchive() {
3232
local FS_ROOT_DIR="$1"; shift
3333
local FS_ARCHIVE_PATH="$1"; shift
3434

35-
ui::step "<Filesystem> Ensure root $(ui::q $FS_ROOT_DIR) dir exists" \
35+
ui::step "<Filesystem> Ensure root $(ui::em $FS_ROOT_DIR) dir exists" \
3636
`remote::cmd \
3737
mkdir -p "$FS_ROOT_DIR"`
3838

39-
ui::step "<Filesystem> Unarchive $(ui::q $FS_ARCHIVE_PATH) -> $(ui::q $FS_ROOT_DIR)" \
39+
ui::step "<Filesystem> Unarchive $(ui::em $FS_ARCHIVE_PATH) -> $(ui::em $FS_ROOT_DIR)" \
4040
gzcat "$FS_ARCHIVE_PATH" \
4141
'|' `remote::cmd \
4242
tar \
4343
-x \
4444
-C "$FS_ROOT_DIR"`
4545

46-
ui::done "<Filesystem> Archive $(ui::q $FS_ARCHIVE_PATH) -> extracted $(ui::q $(ui::fsize "$FS_ARCHIVE_PATH")) file"
46+
ui::done "<Filesystem> Archive $(ui::em $FS_ARCHIVE_PATH) -> extracted $(ui::em $(ui::fsize "$FS_ARCHIVE_PATH")) file"
4747
}
4848
}

lib/mysql.bash

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ mysql::__module__() {
4242
local MYSQL_DB="$1"; shift
4343
local MYSQL_QUERY="$1"; shift
4444

45-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) query execute <- $(ui::q $MYSQL_QUERY)" \
45+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) query execute <- $(ui::em $MYSQL_QUERY)" \
4646
`remote::cmd \
4747
mysql \
4848
$(mysql::args) \
@@ -54,7 +54,7 @@ mysql::__module__() {
5454
local MYSQL_DB="$1"; shift
5555
local MYSQL_TABLE_PATTERN="$1"; shift
5656

57-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) <- list tables like $(ui::q $MYSQL_TABLE_PATTERN)" \
57+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) <- list tables like $(ui::em $MYSQL_TABLE_PATTERN)" \
5858
`remote::cmd \
5959
mysql \
6060
$(mysql::args) \
@@ -66,7 +66,7 @@ mysql::__module__() {
6666
local MYSQL_DB="$1"; shift
6767
local MYSQL_DB_DUMP_FILE="$1"; shift
6868

69-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) dump -> $(ui::q $MYSQL_DB_DUMP_FILE)" \
69+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) dump -> $(ui::em $MYSQL_DB_DUMP_FILE)" \
7070
`remote::cmd \
7171
mysqldump \
7272
$(mysql::args) \
@@ -75,14 +75,14 @@ mysql::__module__() {
7575
'|' gzip \
7676
'>' "$MYSQL_DB_DUMP_FILE"
7777

78-
ui::done "<MySQL> Database $(ui::q $MYSQL_DB) dump -> saved $(ui::q $(ui::fsize "$MYSQL_DB_DUMP_FILE")) file"
78+
ui::done "<MySQL> Database $(ui::em $MYSQL_DB) dump -> saved $(ui::em $(ui::fsize "$MYSQL_DB_DUMP_FILE")) file"
7979
}
8080

8181
mysql::create-user() {
8282
local MYSQL_DB_USER="$1"; shift
8383
local MYSQL_DB_PASS="$1"; shift
8484

85-
ui::step "<MySQL> User $(ui::q $MYSQL_DB_USER) <-> create if not exists" \
85+
ui::step "<MySQL> User $(ui::em $MYSQL_DB_USER) <-> create if not exists" \
8686
`remote::cmd \
8787
mysql \
8888
$(mysql::args) \
@@ -97,7 +97,7 @@ mysql::__module__() {
9797

9898
mysql::create-user "$MYSQL_DB_USER" "$MYSQL_DB_PASS"
9999

100-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) <- grant all privileges to user $(ui::q $MYSQL_DB_USER)" \
100+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) <- grant all privileges to user $(ui::em $MYSQL_DB_USER)" \
101101
`remote::cmd \
102102
mysql \
103103
$(mysql::args) \
@@ -114,13 +114,13 @@ mysql::__module__() {
114114
local MYSQL_DB="$1"; shift
115115
local MYSQL_DB_DUMP_FILE="$1"; shift
116116

117-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) load <- $(ui::q $MYSQL_DB_DUMP_FILE)" \
117+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) load <- $(ui::em $MYSQL_DB_DUMP_FILE)" \
118118
gzcat "$MYSQL_DB_DUMP_FILE" '|' `remote::cmd \
119119
mysql --batch \
120120
$(mysql::args) \
121121
"$MYSQL_DB"`
122122

123-
ui::done "<MySQL> Database $(ui::q $MYSQL_DB) load <- loaded $(ui::q $(ui::fsize "$MYSQL_DB_DUMP_FILE")) file"
123+
ui::done "<MySQL> Database $(ui::em $MYSQL_DB) load <- loaded $(ui::em $(ui::fsize "$MYSQL_DB_DUMP_FILE")) file"
124124
}
125125

126126
mysql::import-db-dump() {
@@ -129,13 +129,13 @@ mysql::__module__() {
129129
local MYSQL_DB_PASS="$1"; shift
130130
local MYSQL_DB_DUMP_FILE="$1"; shift
131131

132-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) <-> drop if exists" \
132+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) <-> drop if exists" \
133133
`remote::cmd \
134134
mysql \
135135
$(mysql::args) \
136136
-sN -e "DROP DATABASE IF EXISTS ${MYSQL_DB}"`
137137

138-
ui::step "<MySQL> Database $(ui::q $MYSQL_DB) <-> create" \
138+
ui::step "<MySQL> Database $(ui::em $MYSQL_DB) <-> create" \
139139
`remote::cmd \
140140
mysql \
141141
$(mysql::args) \

lib/raccoon/migrate.bash

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ raccoon::migrate::__module__() {
1111
RACCOON_MIGRATE_TIMESTAMP="$(timestamp::day)"
1212

1313
raccoon::migrate::export-db() {
14-
ui::info "Exporting project $(ui::q $PROJECT) db"
14+
ui::info "Exporting project $(ui::em $PROJECT) db"
1515
magento::db::export "$PROJECT" "$LOCAL_PROJECT_DIR/db.sql.gz"
1616
}
1717

1818
raccoon::migrate::export-code() {
19-
ui::info "Exporting project $(ui::q $PROJECT) code"
19+
ui::info "Exporting project $(ui::em $PROJECT) code"
2020
magento::code::export "$REMOTE_PROJECT_DIR" "$LOCAL_PROJECT_DIR/code.tar.gz"
2121
}
2222

2323
raccoon::migrate::export-media() {
24-
ui::info "Exporting project $(ui::q $PROJECT) media"
24+
ui::info "Exporting project $(ui::em $PROJECT) media"
2525
magento::media::export "$REMOTE_PROJECT_DIR" "$LOCAL_PROJECT_DIR/media.tar.gz"
2626
}
2727

@@ -30,17 +30,17 @@ raccoon::migrate::__module__() {
3030
}
3131

3232
raccoon::migrate::import-db() {
33-
ui::info "Importing project $(ui::q $PROJECT) db"
33+
ui::info "Importing project $(ui::em $PROJECT) db"
3434
magento::db::import "$PROJECT" "$RACCOON_PROJECT_DB_USER" "$RACCOON_PROJECT_DB_PASS" "$LOCAL_PROJECT_DIR/db.sql.gz"
3535
}
3636

3737
raccoon::migrate::import-code() {
38-
ui::info "Importing project $(ui::q $PROJECT) code"
38+
ui::info "Importing project $(ui::em $PROJECT) code"
3939
fs::unarchive "$REMOTE_PROJECT_DIR" "$LOCAL_PROJECT_DIR/code.tar.gz"
4040
}
4141

4242
raccoon::migrate::import-media() {
43-
ui::info "Importing project $(ui::q $PROJECT) media"
43+
ui::info "Importing project $(ui::em $PROJECT) media"
4444
fs::unarchive "$REMOTE_PROJECT_DIR" "$LOCAL_PROJECT_DIR/media.tar.gz"
4545
}
4646

@@ -78,13 +78,13 @@ raccoon::migrate::__module__() {
7878
local LOCAL_PROJECT_DIR="$RACCOON_MIGRATE_LOCAL_ARCHIVE_DIR/$PROJECT"
7979
local REMOTE_PROJECT_DIR="$RACCOON_MIGRATE_REMOTE_ROOT_DIR/$PROJECT"
8080

81-
ui::step "Create local project dir $(ui::q $LOCAL_PROJECT_DIR)" mkdir -p "$LOCAL_PROJECT_DIR"
82-
ui::step "Create remote project dir $(ui::q $REMOTE_PROJECT_DIR)" `remote::cmd mkdir -p "$REMOTE_PROJECT_DIR"`
81+
ui::step "Create local project dir $(ui::em $LOCAL_PROJECT_DIR)" mkdir -p "$LOCAL_PROJECT_DIR"
82+
ui::step "Create remote project dir $(ui::em $REMOTE_PROJECT_DIR)" `remote::cmd mkdir -p "$REMOTE_PROJECT_DIR"`
8383

84-
ui::info "Processing project $(ui::q $PROJECT)"
84+
ui::info "Processing project $(ui::em $PROJECT)"
8585

8686
if ! "raccoon::migrate::$MODE-$WHAT" ; then
87-
ui::warn "Failed to process project $(ui::q $PROJECT) but continuing"
87+
ui::warn "Failed to process project $(ui::em $PROJECT) but continuing"
8888
fi
8989
done
9090
}

lib/ui.bash

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
ui::__module__() {
2+
lib::import ui::core
23
lib::import ui::color
34
lib::import ui::task
4-
}
5+
lib::import ui::format
6+
}
7+
8+

lib/ui/color.bash

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
ui::color::__module__() {
2+
lib::import ui::core
3+
24
ui::c() {
35
declare -A local _CODES=(
46
[inf]="\033[0;34m"

lib/ui/core.bash

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
ui::core::__module__() {
2+
[ -t 1 ] && export UI_TTY_HAS=true || export UI_TTY_HAS=false
3+
4+
export MAGEOPS_UI_COLOR_ENABLED=true
5+
export MAGEOPS_UI_COLOR_FORCE="${MAGEOPS_UI_COLOR_FORCE:-false}"
6+
7+
if ! $UI_TTY_HAS ; then
8+
$MAGEOPS_UI_COLOR_FORCE || export MAGEOPS_UI_COLOR_ENABLED=false
9+
fi
10+
11+
export UI_CHR_DUMMY="$(printf '\xcf')"
12+
export UI_CHR_EXPANDER="${UI_CHR_EXPANDER:-.}"
13+
14+
ui::cr() { echo -ne "\e[0K\r" ; }
15+
}

lib/ui/format.bash

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
ui::format::__module__() {
2+
lib::import ui::core
3+
4+
ui::bold() { echo -ne "\e[1m$*\e[0m" ; }
5+
ui::muted() { echo -ne "\e[30m$*\e[0m" ; }
6+
ui::em() { echo -ne "\e[36m$*\e[0m" ; }
7+
8+
ui::value() { echo -ne "\e[1;36m$*\e[0m" ; }
9+
ui::label() { echo -ne "\e[35m$*\e[0m" ; }
10+
11+
ui::fsize() { ls -sh1 "$*" | cut -d' ' -f1; }
12+
13+
ui::param() {
14+
local LABEL="$(echo $1)"
15+
local VALUE="$(echo $2)"
16+
local COMMENT="$(echo ${3:-})"
17+
local WIDTH="${4:-40}"
18+
local NWIDTH="$(echo -n "$LABEL" | wc -c)"
19+
local VPAD="$(( $WIDTH - $NWIDTH ))"
20+
21+
printf "%s${UI_CHR_DUMMY}$(ui::muted "%${VPAD}s")${UI_CHR_DUMMY}%s" \
22+
"$(echo "$(ui::label "$LABEL")" | tr ' ' "$UI_CHR_DUMMY")" \
23+
" " \
24+
"$(echo "$(ui::value "$VALUE")" | tr ' ' "$UI_CHR_DUMMY")" \
25+
| tr " $UI_CHR_DUMMY" "$UI_CHR_EXPANDER "
26+
27+
28+
[ -z "$COMMENT" ] || echo -n " $(ui::muted "($COMMENT)")"
29+
echo
30+
}
31+
32+
function ui::prefix() {
33+
local PREFIX=${1:-}
34+
sed -e 's/^/'"$PREFIX"'/g'
35+
}
36+
37+
function ui::prefix:cmd() {
38+
local PREFIX=${1:- }; shift
39+
$@ | ui::prefixed "$PREFIX"
40+
}
41+
42+
function ui::indent:cmd() {
43+
ui::cmd-prefixed ' ' $@
44+
}
45+
}

0 commit comments

Comments
 (0)