diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2014-10-24 16:29:45 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2014-10-24 16:29:45 -0200 |
commit | 0ddf8e790be472e9ed3eb945400048c2207ecd79 (patch) | |
tree | 8be7f29851b49deddd63a346cff03f351bceaaf9 | |
parent | 9e8b0b1eb8bfc495d68207f0377d8491dfe33100 (diff) | |
download | timelog-0ddf8e790be472e9ed3eb945400048c2207ecd79.tar.gz timelog-0ddf8e790be472e9ed3eb945400048c2207ecd79.tar.bz2 |
Main menu support
-rw-r--r-- | TODO.md | 2 | ||||
-rwxr-xr-x | timelog | 68 |
2 files changed, 62 insertions, 8 deletions
@@ -1,4 +1,4 @@ TODO ==== -* Nothing here? :P +* Use `window_title` function from termplex if available. @@ -11,12 +11,22 @@ # https://github.com/yaccz/worklog BASE="$HOME/file" -CODEBASE="$HOME/code" +CODE="$HOME/code" GROUP="$1" ACTION="$2" BASENAME="`basename $0`" EDITOR=${EDITOR:=vi} +# Set window title +# http://stackoverflow.com/questions/899609/gnu-screen-run-script-that-sends-commands-to-the-screen-session-it-is-being-run +function timelog_window_title { + if [ -n "$STY" ]; then + screen -p $WINDOW -X title $1 + else + xtitle $1 + fi +} + # Setup a new worklog configuration function timelog_setup { cat > $BASE/$GROUP/worklog/projects <<EOF @@ -34,16 +44,52 @@ EOF } # Loop over available worklogs -# TODO function timelog_menu { - echo "Usage: $BASENAME <group> [edit]" - exit 1 + # Basic variables + count=0 + bases=(`find "$BASE" -maxdepth 2 -name worklog -exec dirname {} \;`) + codes=(`find "$CODE" -maxdepth 2 -name worklog -exec dirname {} \;`) + candidates=(${bases[@]} ${codes[@]}) + + # Clear the screen everytime we enter the menu + clear + + # Draw menu and parse options + if [ ! -z "$candidates" ]; then + echo "Please select one of the following projects:" + echo "" + + for candidate in ${candidates[@]}; do + echo -e "\t[$count] `basename $candidate`" + let count++ + done + + echo "" + read -p "Enter option (r to refresh, Ctrl-C or q to quit): " option + + if [ "$option" == "q" ]; then + exit + elif [ "$option" == "r" ]; then + return + elif [[ "$option" =~ ^[0-9]+$ ]] && [ ! -z "${candidates[$option]}" ]; then + project="`basename ${candidates[$option]}`" + timelog $project + else + echo "Invalid option" + exit 1 + fi + else + echo "Usage: $BASENAME <group> [edit]" + exit 1 + fi } # Run function timelog_run { - if [ -d "$CODEBASE/$GROUP" ] && [ ! -d "$BASE/$GROUP" ]; then - BASE="$CODEBASE" + timelog_window_title "log: $GROUP" + + if [ -d "$CODE/$GROUP" ] && [ ! -d "$BASE/$GROUP" ]; then + BASE="$CODE" fi mkdir -p $BASE/$GROUP/worklog @@ -61,5 +107,13 @@ function timelog_run { if [ ! -z "$GROUP" ]; then timelog_run else - timelog_menu + while true; do + # Set window title + timelog_window_title "log" + + timelog_menu + done fi + +# Restore screen title +window_title terminal |