diff --git a/README.md b/README.md index ec8e440..dfb9ce6 100644 --- a/README.md +++ b/README.md @@ -21,35 +21,19 @@ See the [Getting Started](https://github.com/jamestomasino/burrow/wiki/Getting-S ```bash burrow phlog # create new phlog post -burrow recipe # add or update a recipe to box -burrow topic # add or update a topic file +burrow gophermap # edit a gophermap burrow rss # generate a RSS feed of phlog entries -burrow create-config # generate a default config file burrow edit-config # open your config file for editing burrow update-git # pull latest git repo for gopher dir, if exists ``` -- `create-config` will auto-generate a configuration file at -`$HOME/.config/burrow/config`. It will be populated by the default parameters -listed below and provide an easy way to customize your configuration. At a -minimum you should update your `config_dir_gopher` to point to the folder on -your local computer where your gopher hole resides. - - `edit-config` will open your burrow configuration file for easy editing. - `phlog` will prompt for the title of a new post, then open it in your default `$EDITOR`. By default it will provide you a template, but you can override this by including a `.template` file in your phlog directory. -- `recipe` will prompt for the name of your recipe, then open it in your default -`$EDITOR`. By default it will provide you a template, but you can override this -by including a `.template` file in your recipe box directory. - -- `topic` will prompt for the name of the topic, then open it in your default -`$EDITOR`. By default it will provide you a template, but you can override this -by including a `.template` file in your topics directory. - -- `root` will open your gopher hole's root gophermap for editing. This will +- `gophermap` will open a gophermap file for editing. This will remove any `type i` formatting and allow comments to be added in natural text. You will still need to create links in the proper gophermap formatting. @@ -85,14 +69,6 @@ config_dir_phlog="phlog" # relative path to phlog config_phlog_gophermap=true # phlogs use gophermap format by default config_phlog_usedate=true # use a date-stamp on phlog posts -config_dir_recipebox="recipebox" # relative path to recipe box -config_recipebox_gophermap=false # recipes use plain text by default -config_recipebox_usedate=false # do not use a date-stamp on recipe filenames - -config_dir_topics="topics" # relative path to topics directory -config_topics_gophermap=true # topic notes use gophermap format by default -config_topics_usedate=false # do not use a date-stamp on topic filenames - config_git_commit=false # automatically commit changes if git repo config_git_push=false # automatically push changes if git repo diff --git a/burrow b/burrow index eab4579..401ab39 100755 --- a/burrow +++ b/burrow @@ -1,23 +1,17 @@ #!/bin/sh -version="v1.6.1" +version="v1.7.0" configfiles="$HOME/.config/burrow/config $HOME/.config/burrow $HOME/.burrow" # vars from config config_dir_gopher="$HOME/gopher/" -config_dir_recipebox="recipebox" config_dir_phlog="phlog" -config_dir_topics="topics" config_gopher_server="sdf.org" config_gopher_port="70" config_gopher_root="/users/username/" config_phlog_gophermap=true config_phlog_usedate=true -config_recipebox_gophermap=false -config_recipebox_usedate=false -config_topics_gophermap=true -config_topics_usedate=false config_git_commit=false config_git_push=false config_autoindent=true @@ -41,14 +35,12 @@ flag_help=0 # vars from args arg_options="hvd" arg_shortlist=0 -arg_recipe=0 +arg_gopherdir=0 arg_phlog=0 -arg_topic=0 -arg_create_config=0 arg_edit_config=0 arg_update_git=0 arg_rss=0 -arg_root=0 +arg_gophermap="" # silence directory movements push_d () { @@ -65,11 +57,8 @@ burrow [options] [commands] COMMANDS: phlog Create new phlog entry - recipe Add new recipe to box - topic Add or update a topic - root Edit your root gophermap + gophermap Edit a gophermap rss Generate an rss feed of recent phlog entries - create-config Create a default configuration file edit-config Edit your configuration file update-git Silently pulls gopher git repo if it exists @@ -133,20 +122,39 @@ parse_input () { esac done - for arg in "$@"; do - argc=$(printf "%s" "$arg" | tr '[:upper:]' '[:lower:]') + while test $# -gt 0 + do + argc=$(printf "%s" "$1" | tr '[:upper:]' '[:lower:]') case $argc in - "shortlist") arg_shortlist=1 ;; - "phlog") arg_phlog=1 ;; - "recipe") arg_recipe=1 ;; - "topic") arg_topic=1 ;; - "create-config") arg_create_config=1 ;; - "edit-config") arg_edit_config=1 ;; - "update-git") arg_update_git=1 ;; - "rss") arg_rss=1 ;; - "root") arg_root=1 ;; - *) printf "Unknown command: %s\\n" "$arg";; + "shortlist") + arg_shortlist=1 + ;; + "gophermap") + if [ $# -gt 1 ]; then + shift + arg_gophermap="$1" + else + arg_gophermap="/" + fi + ;; + "phlog") + arg_phlog=1 + ;; + "gopherdir") + arg_gopherdir=1 + ;; + "edit-config") + arg_edit_config=1 + ;; + "update-git") + arg_update_git=1 + ;; + "rss") + arg_rss=1 + ;; + *) printf "Unknown command: %s\\n" "$argc";; esac + shift done } @@ -547,7 +555,6 @@ create_config () { if [ ! -f "$HOME/.config/burrow/config" ] && \ [ ! -f "$HOME/.config/burrow" ] && \ [ ! -f "$HOME/.burrow" ]; then - config="$HOME/.config/burrow/config" mkdir -p "$(dirname "$config")" { @@ -562,14 +569,6 @@ create_config () { printf "config_phlog_usedate=true\\n" printf "config_phlog_autorss=false\\n" printf "\\n" - printf "config_dir_recipebox=\"recipebox\"\\n" - printf "config_recipebox_gophermap=false\\n" - printf "config_recipebox_usedate=false\\n" - printf "\\n" - printf "config_dir_topics=\"topics\"\\n" - printf "config_topics_gophermap=true\\n" - printf "config_topics_usedate=false\\n" - printf "\\n" printf "config_git_commit=false\\n" printf "config_git_push=false\\n" printf "\\n" @@ -580,8 +579,6 @@ create_config () { printf "config_gopher_desc=\"Gopher Hole Description\"\\n" printf "config_rss_num_entries=\"10\"\\n" } >> "$config" - else - printf "Configuration already exists.\\n" fi } @@ -598,7 +595,7 @@ main () { parse_input "$@" if [ $arg_shortlist -gt 0 ]; then - out="phlog topic recipe rss edit-config create-config update-git -v -h -d" + out="phlog gophermap rss edit-config update-git -v -h -d" die "${out}" 0 fi @@ -614,11 +611,8 @@ main () { set -x fi - if [ $arg_create_config -gt 0 ]; then - create_config - fi - if [ $arg_edit_config -gt 0 ]; then + create_config edit_config fi @@ -628,42 +622,28 @@ main () { fi done + if [ $arg_gopherdir -gt 0 ]; then + die "${config_dir_gopher}" 0 + fi + if [ $arg_update_git -gt 0 ]; then update_git fi - if [ $arg_root -gt 0 ]; then + if [ "$arg_gophermap" != "" ]; then # If we don't have a gophermap, create one to avoid # accidentally sorting the file on first-time generation - if [ ! -f "${config_dir_gopher}gophermap" ]; then - touch "${config_dir_gopher}gophermap" + if [ ! -f "${config_dir_gopher}${arg_gophermap}gophermap" ]; then + touch "${config_dir_gopher}${arg_gophermap}gophermap" fi make_post "" \ - "" \ + "${arg_gophermap}" \ true \ false \ true \ false fi - if [ $arg_recipe -gt 0 ]; then - make_post "What is the name of your recipe? " \ - "$config_dir_recipebox" \ - "$config_recipebox_gophermap" \ - "$config_recipebox_usedate" \ - true \ - false - fi - - if [ $arg_topic -gt 0 ]; then - make_post "What is the name of your topic? " \ - "$config_dir_topics" \ - "$config_topics_gophermap" \ - "$config_topics_usedate" \ - true \ - false - fi - if [ $arg_phlog -gt 0 ]; then make_post "Enter a title for your post: " \ "$config_dir_phlog" \ diff --git a/burrow.1 b/burrow.1 index e22da17..5efd9da 100644 --- a/burrow.1 +++ b/burrow.1 @@ -1,4 +1,4 @@ -.TH BURROW 1 "01 Sep 2018" "version 1.6.1" +.TH BURROW 1 "24 Sep 2018" "version 1.7.0" .SH NAME burrow \- a helper for building and managing a gopher hole .SH SYNOPSIS @@ -15,39 +15,16 @@ by including a .I .template file in your phlog directory. .TP -.B recipe -Prompt for the name of your recipe, then open it in your default -$EDITOR. By default it will provide you a template, but you can override this -by including a -.I .template -file in your recipe box directory. -.TP -.B topic -Prompt for the name of the topic, then open it in your default -$EDITOR. By default it will provide you a template, but you can override this -by including a -.I .template -file in your topics directory. -.TP -.B root -Open your gopher hole's root gophermap for editing. This will remove any -type 'i' formatting and allow comments to be added in natural text. You will -still need to create links in the proper gophermap formatting. +.B gophermap +Open a gophermap file relative to your gopher directory for editing, +automatically stripping some special characters for easier editing of info +lines. .TP .B rss Automatically generate an RSS feed of your most recent phlog entries and output it to the root of your gopher directory. This can be automatically generated by using the config option config_phlog_autorss. .TP -.B create-config -Auto-generate a configuration file at -.I $HOME/.config/burrow/config. -It will be populated by the default parameters -listed below and provide an easy way to customize your configuration. At a -minimum you should update your -.I config_dir_gopher -to point to the folder on your local computer where your gopher hole resides. -.TP .B edit-config Opens your burrow configuration file for editing if it exists. .TP diff --git a/burrow.d b/burrow.d index 79ccc47..50e9f2b 100644 --- a/burrow.d +++ b/burrow.d @@ -2,21 +2,35 @@ _burrow() { - # Get basic autocomplete commands from the function itself - local helplist - helplist=$(burrow shortlist) - # Combine all the lists for autocomplete local cur cur=${COMP_WORDS[COMP_CWORD]} - COMPREPLY=( $( compgen -W "$helplist" -- "$cur" ) ) + if [ "${COMP_WORDS[1]}" == "gophermap" ]; then + local gopher_dir + local gophermaps + local directories + gopher_dir=$(burrow gopherdir) + search_dir=${gopher_dir} + if [ -n "${COMP_WORDS[2]}" ]; then + if [ -d "${gopher_dir}${COMP_WORDS[2]}" ]; then + search_dir="${gopher_dir}${COMP_WORDS[2]}" + fi + fi + gophermaps=$(find "$search_dir" -mindepth 1 -maxdepth 1 -type f -name "gophermap" -print | sed "s|$gopher_dir||" | sed "s|gophermap$||" ) + directories=$(find "$search_dir" -mindepth 1 -maxdepth 1 -type d -print | sed "s|$gopher_dir||" ) + COMPREPLY=( $( compgen -W "$gophermaps $directories" -- "$cur" ) ) + else + local helplist + helplist=$(burrow shortlist) + COMPREPLY=( $( compgen -W "$helplist" -- "$cur" ) ) + fi } # Detect if current shell is ZSH, and if so, load this file in bash # compatibility mode. if [ -n "$ZSH_VERSION" ]; then - autoload bashcompinit - bashcompinit + autoload bashcompinit + bashcompinit fi complete -o default -o nospace -F _burrow burrow @@ -25,5 +39,5 @@ complete -o default -o nospace -F _burrow burrow # when the user has tab-completed the executable name and consequently # included the '.exe' suffix. if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then -complete -o default -o nospace -F _burrow burrow.exe + complete -o default -o nospace -F _burrow burrow.exe fi