diff --git a/.gitmodules b/.gitmodules index b19b1b2..b7efcb4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,3 @@ [submodule "test/test_helper/bats-assert"] path = test/test_helper/bats-assert url = https://github.com/bats-core/bats-assert.git -[submodule "test/test_helper/mocks"] - path = test/test_helper/mocks - url = https://github.com/jasonkarns/bats-mock.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 0925518..1a65db0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,20 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - - - - - - - - - - - - -## [0.3.0] - 2022-11-10 - ### Added - Add new option `-n` which suppresses printing the final newline character in output @@ -28,13 +14,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Multiple command options can be combined -- Allow downloading emoji sets at any time after initial run with `-D ` + + + + ### Fixed - Custom default command is only executed when no command option given - Results are matched case insensitively when using rofi picker to match other pickers + + ## [0.2.0] - 2022-06-29 ### Added diff --git a/README.md b/README.md index ba08616..185fb0a 100644 --- a/README.md +++ b/README.md @@ -174,11 +174,11 @@ The path can also be a weblink which bemoji will download and use: bemoji -f "https://raw.githubusercontent.com/jchook/emoji-menu/master/data/emojis.txt" ``` -### Download additional emoji set +### Change the default emoji set -bemoji automatically downloads an emoji list for you to use on first invocation. +bemoji downloads emoji for you to use on first invocation. By default, it only downloads emoji, though you can have it download math symbols as well. -To download additional sets, execute bemoji like the following: +To change this setting, execute bemoji like the following: ```bash bemoji -D all @@ -187,14 +187,8 @@ bemoji -D all This will download *all* default sets bemoji knows - which is currently the default emoji list and a long list of math symbols. Other valid options for this setting are `emoji`, `math`, `none`. -```bash -bemoji -D "math emoji" -``` - -The above command is equivalent as you can mention multiple sets you want downloaded. - If set to `none` and no files are in the emoji directory, -bemoji will complain and not show anything. +bemoji will simply complain and not show anything. ### Do not skip to new line after output diff --git a/bemoji b/bemoji index 723b911..41dc8bc 100755 --- a/bemoji +++ b/bemoji @@ -1,6 +1,6 @@ #!/usr/bin/env bash -bm_version=0.3.0 +bm_version=0.2.0 # Emoji default database location bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} # Setting custom emoji list file location: @@ -36,8 +36,8 @@ usage() { echo " -n Do not print a newline after the picked emoji." echo " -p Do not save picked emoji to recent history." echo " -P Do not order emoji by recently used." - echo " -D Choose from default lists to download." - echo " Valid choices: all|none|emoji|math (multiple choices possible)." + echo " -D Choose specific default lists to download if none found locally." + echo " Valid choices: all|none|emoji|math." echo " -f Use a custom emoji database. Can be a url which will be retrieved." echo " -v Display current program version and directory configuration." echo " -h Show this help." @@ -57,7 +57,7 @@ while getopts ":f:D:tcenpPhv" o; do t) bm_cmds+=(_typer) ;; c) bm_cmds+=(_clipper) ;; e) bm_cmds+=(cat) ;; - n) bm_echo_newline=false ;; + n) bm_echo_newline=false;; D) BEMOJI_DOWNLOAD_LIST="${OPTARG}" ;; p) bm_private_mode=true ;; P) bm_ignore_recent=true ;; @@ -73,39 +73,34 @@ prepare_db() { mkdir -p "$bm_db_location" fi - if [ -n "$BEMOJI_DOWNLOAD_LIST" ]; then + if [ -n "$(find "$bm_db_location" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then # Populate default lists if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'none'; then - printf "Not downloading a default emoji list.\n" - return + printf "No emoji list found, but set to not download any default lists." + exit 1 elif echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'all'; then dl_default_emoji dl_math_symbols return - else - if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'emoji'; then - dl_default_emoji - fi - if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'math'; then - dl_math_symbols - fi fi - fi - if [ -n "$(find "$bm_db_location" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then - dl_default_emoji + if [ -z "$BEMOJI_DOWNLOAD_LIST" ] || echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'emoji'; then + dl_default_emoji + fi + if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'math'; then + dl_math_symbols + fi fi } dl_default_emoji() { - local emojis - emojis=$(curl -sSL "https://unicode.org/Public/emoji/14.0/emoji-test.txt") - printf "%s" "$emojis" | sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" - printf "Downloaded default emoji set.\n" + curl -sSL "https://unicode.org/Public/emoji/14.0/emoji-test.txt" | + sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" + printf "Downloaded default emoji set." } dl_math_symbols() { curl -sSL "https://unicode.org/Public/math/latest/MathClassEx-15.txt" | - grep -ve '^#' | cut -d';' -f3,7 | sed -e 's/;/ /' >"$bm_db_location/math.txt" - printf "Downloaded math symbols set.\n" + grep -ve '^#' | cut -d';' -f3,7 --output-delimiter=' ' >"$bm_db_location/math.txt" + printf "Downloaded math symbols set." } gather_emojis() { diff --git a/test/bemoji_download.bats b/test/bemoji_download.bats deleted file mode 100644 index 6fda12b..0000000 --- a/test/bemoji_download.bats +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -setup_file() { - # make bemoji executable from anywhere relative to current testfile - TEST_DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" - PATH="$TEST_DIR/..:$PATH" -} - -setup() { - load 'test_helper/bats-support/load' - load 'test_helper/bats-assert/load' - load 'test_helper/mocks/stub' - - # mock out interactive picker for static emoji return - export BEMOJI_PICKER_CMD="echo heart" - - # set up small default set of test emoji for each test - export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" - export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" - mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" -} - -@test "Runs emoji download on -D emoji option" { - stub curl \ - "echo -e '1F605 ; fully-qualified # emoji E0.6 grinning face with sweat\nnot picked up\n1F605 ; fully-qualified # emoji2 E0.6 picked up'" - run bemoji -D emojis 3>&- - outcome=$(cat "$BEMOJI_DB_LOCATION/emojis.txt") - assert_equal "$outcome" "emoji grinning face with sweat -emoji2 picked up" - unstub curl -} - -@test "Runs maths download on -D maths option" { - stub curl \ - "echo '03A3;A;Σ;Sigma;ISOGRK3;;GREEK CAPITAL LETTER SIGMA'" - run bemoji -D math 3>&- - outcome=$(cat "$BEMOJI_DB_LOCATION/math.txt") - assert_equal "$outcome" "Σ GREEK CAPITAL LETTER SIGMA" - unstub curl -} diff --git a/test/test_helper/mocks b/test/test_helper/mocks deleted file mode 160000 index 7e0fbf6..0000000 --- a/test/test_helper/mocks +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7e0fbf6bc705bd1b09daa2d5ff88962ddbe832f6