From 9972cf33485fd1cc385399aca1ae2ca4a0c73d86 Mon Sep 17 00:00:00 2001 From: Raphael Eguchi Date: Mon, 27 Jan 2025 00:22:02 -0500 Subject: [PATCH] switched to XDG standard for file management --- install.sh | 18 ++++++++++-------- src/functions.sh | 2 +- tests/common.sh | 4 +++- tests/test_bookmarks.bats | 37 ++++++++++++++++++------------------- tests/test_navigation.bats | 3 +-- uninstall.sh | 16 +++++++++------- 6 files changed, 42 insertions(+), 38 deletions(-) diff --git a/install.sh b/install.sh index 6b9181e..3027ccb 100755 --- a/install.sh +++ b/install.sh @@ -1,16 +1,18 @@ #!/bin/bash -read -p "Enter the installation directory [default: $HOME/.shunpo]: " user_input -INSTALL_DIR=${user_input:-"$HOME/.shunpo"} +DEFAULT_INSTALL_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/shunpo +read -p "Enter the installation directory [default: $DEFAULT_INSTALL_DIR]: " user_input +INSTALL_DIR=${user_input:-"$DEFAULT_INSTALL_DIR"} BASHRC="$HOME/.bashrc" -SHUNPORC="$HOME/.shunporc" +# file containing command definitions: +SHUNPO_CMD="$INSTALL_DIR/shunpo_cmd" setup() { mkdir -p $INSTALL_DIR - if [ -f $SHUNPORC ]; then - rm $SHUNPORC + if [ -f $SHUNPO_CMD ]; then + rm $SHUNPO_CMD fi - touch $SHUNPORC + touch $SHUNPO_CMD } add_commands() { @@ -27,7 +29,7 @@ add_commands() { ) for func_definition in "${functions[@]}"; do - echo "$func_definition" >>"$SHUNPORC" + echo "$func_definition" >>"$SHUNPO_CMD" echo "Created Command: ${func_definition%%()*}" done } @@ -36,7 +38,7 @@ install() { cp src/* $INSTALL_DIR # add sourcing for .shunporc - source_rc_line="source $SHUNPORC" + source_rc_line="source $SHUNPO_CMD" temp_file=$(mktemp) sed '/^source.*\.shunporc/d' "$BASHRC" >"$temp_file" mv "$temp_file" "$BASHRC" diff --git a/src/functions.sh b/src/functions.sh index 1292018..5e15559 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -1,7 +1,7 @@ #!/bin/bash # Default Bookmarks Path. -SHUNPO_BOOKMARKS_FILE="$HOME/.shunpo_bookmarks" +SHUNPO_BOOKMARKS_FILE="$SHUNPO_DIR/.shunpo_bookmarks" # Function to display bookmarks with pagination. function shunpo_interact_bookmarks() { diff --git a/tests/common.sh b/tests/common.sh index 6283d0c..6361f00 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -9,6 +9,8 @@ fi function setup_env { HOME=${SHUNPO_TEST_DIR}/home mkdir -p $HOME + XDG_DATA_HOME=${SHUNPO_TEST_DIR} + mkdir -p $XDG_DATA_HOME } function cleanup_env { @@ -44,5 +46,5 @@ make_directories() { } get_num_bookmarks() { - echo $(wc -l <${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks | tr -d '[:space:]') + echo $(wc -l <${SHUNPO_DIR}/.shunpo_bookmarks | tr -d '[:space:]') } diff --git a/tests/test_bookmarks.bats b/tests/test_bookmarks.bats index bcd7edf..0067121 100755 --- a/tests/test_bookmarks.bats +++ b/tests/test_bookmarks.bats @@ -12,7 +12,6 @@ setup() { printf '\n' | ./install.sh working_dir=$(pwd) source ${SHUNPO_TEST_DIR}/home/.bashrc - source ${SHUNPO_TEST_DIR}/home/.shunporc cd ${SHUNPO_TEST_DIR} } @@ -23,17 +22,17 @@ teardown() { } @test "Test Install." { - [ -e "${SHUNPO_TEST_DIR}.shunporc" ] && assert_success - [ "$(echo $SHUNPO_DIR)" = "${SHUNPO_TEST_DIR}.shunpo" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/functions.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/colors.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/add_bookmark.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/go_to_bookmark.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/remove_bookmark.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/list_bookmarks.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/clear_bookmarks.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/jump_to_parent.sh" ] && assert_success - [ -e "${SHUNPO_TEST_DIR}.shunpo/jump_to_child.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/shunpo_cmd" ] && assert_success + [ "$(echo $SHUNPO_DIR)" = "${SHUNPO_DIR}" ] && assert_success + [ -e "${SHUNPO_DIR}/functions.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/colors.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/add_bookmark.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/go_to_bookmark.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/remove_bookmark.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/list_bookmarks.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/clear_bookmarks.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/jump_to_parent.sh" ] && assert_success + [ -e "${SHUNPO_DIR}/jump_to_child.sh" ] && assert_success run declare -F sb && assert_success run declare -F sg && assert_success run declare -F sr && assert_success @@ -53,7 +52,7 @@ teardown() { assert_equal "$num_bookmarks" "4" # Check if bookmark entry is correct. - bookmark2=$(sed -n 3p ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks) + bookmark2=$(sed -n 3p ${SHUNPO_DIR}/.shunpo_bookmarks) expected_bookmark2="${SHUNPO_TEST_DIR}/1/2" assert_equal "$bookmark2" "$expected_bookmark2" } @@ -78,10 +77,10 @@ teardown() { @test "Test Remove Bookmark." { # Set up directory structure. make_directories 1 - assert [ -f ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks ] + assert [ -f ${SHUNPO_DIR}/.shunpo_bookmarks ] # Store the last bookmark. - bookmark3=$(sed -n 4p ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks) + bookmark3=$(sed -n 4p ${SHUNPO_DIR}/.shunpo_bookmarks) # Check failure handling. run sr -1 >/dev/null && assert_failure @@ -98,13 +97,13 @@ teardown() { assert_equal "$num_bookmarks" "2" # Check shifting. - bookmark1=$(sed -n 2p ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks) + bookmark1=$(sed -n 2p ${SHUNPO_DIR}/.shunpo_bookmarks) assert_equal "$bookmark3" "$bookmark1" # Remove until file is removed. run sr 0 && assert_success run sr 0 && assert_success - refute [ -f ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks ] + refute [ -f ${SHUNPO_DIR}/.shunpo_bookmarks ] } @test "Test Clear Bookmarks." { @@ -112,9 +111,9 @@ teardown() { make_directories 1 # Check that the file exists - assert [ -f ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks ] + assert [ -f ${SHUNPO_DIR}/.shunpo_bookmarks ] # Confirm that the file is removed after clearing. run sc && assert_success - refute [ -f ${SHUNPO_TEST_DIR}/home/.shunpo_bookmarks ] + refute [ -f ${SHUNPO_DIR}/.shunpo_bookmarks ] } diff --git a/tests/test_navigation.bats b/tests/test_navigation.bats index f8ab172..e243180 100755 --- a/tests/test_navigation.bats +++ b/tests/test_navigation.bats @@ -12,8 +12,7 @@ setup() { printf '\n' | ./install.sh working_dir=$(pwd) source ${SHUNPO_TEST_DIR}/home/.bashrc - source ${SHUNPO_TEST_DIR}/home/.shunporc - source ${SHUNPO_TEST_DIR}/home/.shunpo/functions.sh + source ${SHUNPO_DIR}/functions.sh cd ${SHUNPO_TEST_DIR} } diff --git a/uninstall.sh b/uninstall.sh index 5157e47..491618a 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -5,14 +5,16 @@ source $BASHRC uninstall() { echo "Uninstalling..." - if [ -f "$HOME/.shunporc" ]; then - rm $HOME/.shunporc - echo "Removed $HOME/.shunporc" + SHUNPO_CMD="$SHUNPO_DIR/shunpo_cmd" + if [ -f "$SHUNPO_CMD" ]; then + rm "$SHUNPO_CMD" + echo "Removed $SHUNPO_CMD" fi - if [ -f "$HOME/.shunpo_bookmarks" ]; then - rm $HOME/.shunpo_bookmarks - echo "Removed $HOME/.shunpo_bookmarks" + SHUNPO_BOOKMARKS_FILE="$SHUNPO_DIR/.shunpo_bookmarks" + if [ -f $SHUNPO_BOOKMARKS_FILE ]; then + rm $SHUNPO_BOOKMARKS_FILE + echo "Removed $SHUNPO_BOOKMARKS_FILE" fi if [ -z "$SHUNPO_DIR" ]; then @@ -36,7 +38,7 @@ uninstall() { fi temp_file=$(mktemp) - sed '/^source.*\.shunporc/d' "$BASHRC" >"$temp_file" + sed '/^source.*\shunpo_cmd/d' "$BASHRC" >"$temp_file" mv "$temp_file" "$BASHRC" temp_file=$(mktemp)