Compare commits
9 Commits
983ecd1ca8
...
adea4b4c97
Author | SHA1 | Date |
---|---|---|
The Magician | adea4b4c97 | |
The Magician | 0a32609d2d | |
The Magician | 416d837307 | |
The Magician | d2405b8b3b | |
The Magician | c0bd1e11fc | |
The Magician | 542095a49b | |
The Magician | ab5425d59d | |
The Magician | 621340140e | |
The Magician | eeb7f983ae |
|
@ -0,0 +1,61 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
}
|
||||
|
||||
test__zk_edit_uses_filename_when_passed_as_parameter() {
|
||||
# shellcheck disable=SC2016
|
||||
fake vi 'echo vi "${FAKE_PARAMS[@]}"'
|
||||
|
||||
export EDITOR=""
|
||||
zettel_name="11111111111111"
|
||||
expected="vi $ZKDIR/$zettel_name"
|
||||
|
||||
result="$(_zk_edit $zettel_name)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test__zk_edit_uses__zk_search_when_filename_not_passed_as_parameter() {
|
||||
export EDITOR=""
|
||||
zettel_name="11111111111111"
|
||||
expected="vi $ZKDIR/$zettel_name"
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
fake vi 'echo vi "${FAKE_PARAMS[@]}"'
|
||||
fake _zk_search echo "$zettel_name"
|
||||
|
||||
result="$(_zk_edit)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test__zk_edit_runs_EDITOR_if_EDITOR_is_set() {
|
||||
export EDITOR="nano"
|
||||
# shellcheck disable=SC2016
|
||||
fake "$EDITOR" echo '$EDITOR ${FAKE_PARAMS[@]}'
|
||||
fake vi cat
|
||||
|
||||
filename="11111111111111"
|
||||
expected="$EDITOR $ZKDIR/$filename"
|
||||
|
||||
result="$(_zk_edit $filename)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test__zk_new_runs_vi_if_EDITOR_is_not_set() {
|
||||
export EDITOR=""
|
||||
# shellcheck disable=SC2016
|
||||
fake vi echo 'vi ${FAKE_PARAMS[@]}'
|
||||
|
||||
export ZKDIR="$TMP_ZETTELKASTEN"
|
||||
filename="11111111111111"
|
||||
fake date "echo $filename"
|
||||
expected="vi $TMP_ZETTELKASTEN/$filename"
|
||||
|
||||
result="$(_zk_edit $filename)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
TMP_ZETTELKASTEN=""
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
|
||||
TMP_ZETTELKASTEN="$(mktemp -d)"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -rf "$TMP_ZETTELKASTEN"
|
||||
}
|
||||
|
||||
test__zk_list_outputs_correct_format_with_one_zettel() {
|
||||
export ZKDIR="$TMP_ZETTELKASTEN"
|
||||
test_zettel="aaaaaaaaaaaaaa"
|
||||
echo "# Test Zettel" > "$TMP_ZETTELKASTEN/$test_zettel"
|
||||
|
||||
result="$(_zk_list)"
|
||||
|
||||
expected="$test_zettel | # Test Zettel"
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test__zk_list_outputs_correct_format_with_multiple_zettels() {
|
||||
export ZKDIR="$TMP_ZETTELKASTEN"
|
||||
test_zettel1="aaaaaaaaaaaaaa"
|
||||
test_zettel2="bbbbbbbbbbbbbb"
|
||||
echo "# Test Zettel 1" > "$TMP_ZETTELKASTEN/$test_zettel1"
|
||||
echo "# Test Zettel 2" > "$TMP_ZETTELKASTEN/$test_zettel2"
|
||||
|
||||
result="$(_zk_list)"
|
||||
|
||||
expected="$test_zettel1 | # Test Zettel 1
|
||||
$test_zettel2 | # Test Zettel 2"
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
#!/bin/bash
|
||||
TMP_ZETTELKASTEN=""
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
|
||||
TMP_ZETTELKASTEN="$(mktemp -d)"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -rf "$TMP_ZETTELKASTEN"
|
||||
}
|
||||
|
||||
test__zk_new_creates_file_in_correct_directory() {
|
||||
export ZKDIR="$TMP_ZETTELKASTEN"
|
||||
filename="11111111111111"
|
||||
fake date "echo $filename"
|
||||
fake _zk_edit echo ""
|
||||
|
||||
_zk_new
|
||||
|
||||
assert "test -e $TMP_ZETTELKASTEN/$filename"
|
||||
}
|
||||
|
||||
test__zk_new_runs_zk_edit_on_new_file() {
|
||||
export ZKDIR="$TMP_ZETTELKASTEN"
|
||||
filename="11111111111111"
|
||||
# shellcheck disable=SC2016
|
||||
fake _zk_edit echo '_zk_edit ${FAKE_PARAMS[@]}'
|
||||
fake _zk_isosec echo "$filename"
|
||||
expected="_zk_edit $filename"
|
||||
|
||||
result="$(_zk_new)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
}
|
||||
|
||||
test_check_zkdir_does_not_error_if_ZKDIR_exists() {
|
||||
export ZKDIR="/"
|
||||
|
||||
assert_status_code 0 check_zkdir
|
||||
}
|
||||
|
||||
|
||||
test_check_zkdir_errors_if_ZKDIR_does_not_exist() {
|
||||
export ZKDIR="/this/is/a/fake/directory/"
|
||||
|
||||
assert_status_code 1 check_zkdir
|
||||
}
|
||||
|
|
@ -4,12 +4,50 @@ setup() {
|
|||
source ../zk
|
||||
}
|
||||
|
||||
test_get_command_returns_empty_if_no_input_given() {
|
||||
result="$(get_command "$ZKCOMMANDS" "")"
|
||||
|
||||
assert_equals "" "$result"
|
||||
}
|
||||
|
||||
test_get_command_returns_empty_if_unrecognized_input_given() {
|
||||
result="$(get_command "$ZKCOMMANDS" "lkjdsaas")"
|
||||
|
||||
assert_equals "" "$result"
|
||||
}
|
||||
|
||||
test_get_command_returns_list_for_substring() {
|
||||
commands="list new"
|
||||
expected="list"
|
||||
|
||||
for arg in l li lis list; do
|
||||
result="$(get_command "$commands" "$arg")"
|
||||
result="$(get_command "$ZKCOMMANDS" "$arg")"
|
||||
assert_equals "$expected" "$result"
|
||||
done
|
||||
}
|
||||
|
||||
test_get_command_returns_search_for_substring() {
|
||||
expected="search"
|
||||
|
||||
for arg in s se sea sear searc search; do
|
||||
result="$(get_command "$ZKCOMMANDS" "$arg")"
|
||||
assert_equals "$expected" "$result"
|
||||
done
|
||||
}
|
||||
|
||||
test_get_command_returns_new_for_substring() {
|
||||
expected="new"
|
||||
|
||||
for arg in n ne new; do
|
||||
result="$(get_command "$ZKCOMMANDS" "$arg")"
|
||||
assert_equals "$expected" "$result"
|
||||
done
|
||||
}
|
||||
|
||||
test_get_command_returns_edit_for_substring() {
|
||||
expected="edit"
|
||||
|
||||
for arg in e ed edi edit; do
|
||||
result="$(get_command "$ZKCOMMANDS" "$arg")"
|
||||
assert_equals "$expected" "$result"
|
||||
done
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
}
|
||||
|
||||
test_isosec_calls_date_with_correct_parameters() {
|
||||
expected="date -u +%Y%m%d%H%M%S"
|
||||
# shellcheck disable=SC2016
|
||||
fake date echo 'date ${FAKE_PARAMS[@]}'
|
||||
|
||||
result="$(_zk_isosec)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
}
|
||||
|
||||
test_main_calls_list_when_list_command_passed() {
|
||||
fake check_zkdir test
|
||||
expected="_zk_list"
|
||||
fake get_command 'echo list'
|
||||
fake _zk_list "echo $expected"
|
||||
|
||||
result="$(main)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test_main_calls_search_when_search_command_passed() {
|
||||
fake check_zkdir test
|
||||
expected="_zk_search"
|
||||
fake get_command 'echo search'
|
||||
fake _zk_search "echo $expected"
|
||||
|
||||
result="$(main)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test_main_calls_new_when_new_command_passed() {
|
||||
fake check_zkdir test
|
||||
expected="_zk_new"
|
||||
fake get_command 'echo new'
|
||||
fake _zk_new "echo $expected"
|
||||
|
||||
result="$(main)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test_main_calls_edit_when_edit_command_passed() {
|
||||
fake check_zkdir test
|
||||
expected="_zk_edit"
|
||||
fake get_command 'echo edit'
|
||||
fake _zk_edit "echo $expected"
|
||||
|
||||
result="$(main)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test_main_errors_if_unrecognized_command_given() {
|
||||
fake check_zkdir test
|
||||
fake get_command echo ""
|
||||
|
||||
assert_status_code 2 main
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup() {
|
||||
source ../zk
|
||||
}
|
||||
|
||||
test__zk_search_calls__zk_list() {
|
||||
expected="_zk_list"
|
||||
fake _zk_list echo "$expected"
|
||||
fake fzf cat
|
||||
|
||||
result="$(_zk_search)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
||||
|
||||
test__zk_search_extracts_id_from_chosen_zettel() {
|
||||
expected="1111111111111"
|
||||
# shellcheck disable=SC2016
|
||||
fake _zk_list 'echo "$expected | Zettel Title"'
|
||||
fake fzf cat
|
||||
|
||||
result="$(_zk_search)"
|
||||
|
||||
assert_equals "$expected" "$result"
|
||||
}
|
64
zk
64
zk
|
@ -1,21 +1,79 @@
|
|||
#!/bin/sh
|
||||
|
||||
COMMANDS='list new delete'
|
||||
set -e
|
||||
|
||||
ZKDIR="$HOME/.local/share/zk/"
|
||||
ZKCOMMANDS='list search new edit'
|
||||
|
||||
check_zkdir() {
|
||||
if ! test -d "$ZKDIR"; then
|
||||
echo "zk: $ZKDIR directory does not exist" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
get_command() {
|
||||
commands="$1"
|
||||
input="$2"
|
||||
|
||||
if test -z "$input"; then
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
|
||||
for c in $commands; do
|
||||
if echo "$c" | grep "^$input" >/dev/null; then
|
||||
echo "$c"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
_zk_isosec() {
|
||||
date -u +%Y%m%d%H%M%S
|
||||
}
|
||||
|
||||
_zk_list() {
|
||||
for zettel in "$ZKDIR"/*; do
|
||||
echo "$(basename "$zettel") | $(head -1 "$zettel")"
|
||||
done
|
||||
}
|
||||
|
||||
_zk_search() {
|
||||
_zk_list | fzf --prompt "ZK: " | cut -d ' ' -f 1
|
||||
}
|
||||
|
||||
_zk_new() {
|
||||
filename="$(_zk_isosec)"
|
||||
touch "$ZKDIR/$filename"
|
||||
_zk_edit "$filename"
|
||||
}
|
||||
|
||||
_zk_edit() {
|
||||
filename="$1"
|
||||
|
||||
if test -z "$filename"; then
|
||||
filename="$(_zk_search)"
|
||||
fi
|
||||
|
||||
if test -n "$EDITOR"; then
|
||||
$EDITOR "$ZKDIR/$filename"
|
||||
else
|
||||
vi "$ZKDIR/$filename"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
subcommand="$(get_commands "$COMMANDS" "$1")"
|
||||
echo "$subcommand"
|
||||
check_zkdir
|
||||
|
||||
subcommand="$(get_command "$ZKCOMMANDS" "$1")"
|
||||
|
||||
if test -z "$subcommand"; then
|
||||
echo "zk: $1 not recognized" 1>&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
_zk_"$subcommand"
|
||||
}
|
||||
|
||||
name="$(basename "$0")"
|
||||
|
|
Loading…
Reference in New Issue