Merge remote-tracking branch 'upstream/master'
diff --git a/.gitignore b/.gitignore
index 33e5fca..32e62de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
-aliases/enabled
-plugins/enabled
+*/enabled/*
.DS_Store
custom/*.bash
!custom/example.bash
diff --git a/README.md b/README.md
index c8412c9..3a529e3 100644
--- a/README.md
+++ b/README.md
@@ -1,46 +1,53 @@
# Bash it
-'Bash it' is a mash up of my own bash commands and scripts, other bash stuff I have found and a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :)
+**Bash it** is a mash up of my own bash commands and scripts, other bash stuff I have found.
-Includes some autocompletion tools, theming support, aliases, custom functions, a few stolen pieces from Steve Losh, and more.
+(And a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :)
+
+Includes autocompletion, themes, aliases, custom functions, a few stolen pieces from Steve Losh, and more.
## Install
-Check a clone of this repo. You can view what a sample `~/.bash_profile` looks like in `template/bash_profile.template.bash`. If you wanted to use that template, make sure to make a backup of your current `~/.bash_profile` file.
+1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git bash_it`
+2. Run `install.sh` (it automatically backs up your `~/.bash_profile`)
+3. Edit your `~/.bash_profile` file in order to customize bash-it.
- git clone http://github.com/revans/bash-it.git bash_it
-
- cp ~/.bash_profile ~/.bash_profile_original
- cp <path/to/cloned/repo>/template/bash_profile.template.bash ~/.bash_profile
+**NOTE:**
+The install script will also prompt you asking if you use [Jekyll](https://github.com/mojombo/jekyll).
+This is to set up the `.jekyllconfig` file, which stores info necessary to use the Jekyll plugin.
## Help Screens
- bash-it (will show all the help commands)
- aliases-help
- rails-help
- git-help
- plugins-help
+```
+bash-it (will show all the help commands)
+aliases-help
+rails-help
+git-help
+plugins-help
+```
## Your Custom scripts, aliases, and functions
-For custom scripts, and aliases, you can create the following files and they will be ignored by the git repo:
+For custom scripts, and aliases, just create the following files (they'll be ignored by the git repo):
* `aliases/custom.aliases.bash`
* `lib/custom.bash`
* `plugins/custom.plugins.bash`
-and anything in the custom directory will be ignored with the exception of `custom/example.bash`.
+Anything in the custom directory will be ignored, with the exception of `custom/example.bash`.
## Themes
-There are a few bash-it themes, but I'm hoping the community will jump in and create their own custom prompts and share their creations with everyone else by submitting a pull request to me (revans).
+There are a few bash it themes. If you've created your own custom prompts, I'd love it if you shared with everyone else! Just submit a Pull Request to me (revans).
## Help out
-I think all of us have our own custom scripts that we have added over time and so following in the footsteps of oh-my-zsh, bash-it was created as a framework for those who choose to use bash as their shell. As a community, I'm excited to see what everyone else has in their custom toolbox and am hoping that they'll share it with everyone by submitting a pull request to bash-it.
+I think everyone has their own custom scripts accumulated over time. And so, following in the footsteps of oh-my-zsh, bash it is a framework for easily customizing your bash shell. Everyone's got a custom toolbox, so let's start making them even better, **as a community!**
-So, if you have contributions to bash-it, please send me a pull request and I'll take a look at it and commit it to the repo as long as it looks good. If you do change an existing command, please give an explanation as to why. That will help a lot when I merge your changes in. Thanks, and happing bashing!
+Send me a pull request and I'll merge it as long as it looks good. If you change an existing command, please give an explanation why. That will help a lot when I merge your changes in.
+
+Thanks, and happing bashing!
## Contributors
diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash
index 2ed9d13..79bd7aa 100644
--- a/aliases/available/general.aliases.bash
+++ b/aliases/available/general.aliases.bash
@@ -46,15 +46,6 @@
alias md='mkdir -p'
alias rd=rmdir
-# show / hide hidden files
-alias showhidden="defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder"
-alias hidehidden="defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder"
-# display IP address
-alias myip="echo ethernet:; ipconfig getifaddr en0; echo wireless:; ipconfig getifaddr en1"
-
-# http://snippets.dzone.com/posts/show/2486
-alias killsvn="find . -name ".svn" -type d -exec rm -rf {} \;"
-
function aliases-help() {
echo "Generic Alias Usage"
echo
diff --git a/aliases/available/git.aliases.bash b/aliases/available/git.aliases.bash
index 7cfc9d9..45d7d05 100644
--- a/aliases/available/git.aliases.bash
+++ b/aliases/available/git.aliases.bash
@@ -39,6 +39,8 @@
;;
esac
+
+
function git-help() {
echo "Git Custom Aliases Usage"
echo
diff --git a/aliases/available/jekyll.aliases.bash b/aliases/available/jekyll.aliases.bash
deleted file mode 100644
index feaf245..0000000
--- a/aliases/available/jekyll.aliases.bash
+++ /dev/null
@@ -1,23 +0,0 @@
-# Open the root of your site in your vim or builtin cd to it
-
-if [[ $EDITOR = "vim" ]]
-then
- alias newentry="builtin cd $JEKYLL_LOCAL_ROOT && $EDITOR ."
-else
- alias newentry="builtin cd $JEKYLL_LOCAL_ROOT"
-fi
-
-# Build and locally serve the site
-
-alias testsite="builtin cd $JEKYLL_LOCAL_ROOT && jekyll --server --auto"
-
-# Build but don't locally serve the site
-
-alias buildsite="builtin cd $JEKYLL_LOCAL_ROOT && rm -rf _site/ && jekyll"
-
-# Rsync the site to the remote server
-
-alias deploysite="builtin cd $JEKYLL_LOCAL_ROOT && rsync -rz _site/ $JEKYLL_REMOTE_ROOT"
-
-alias jkas="jekyll --auto --server"
-alias rmjkas="rm -rf _site/* && jkas"
\ No newline at end of file
diff --git a/aliases/available/osx.aliases.bash b/aliases/available/osx.aliases.bash
index d25c051..e074695 100644
--- a/aliases/available/osx.aliases.bash
+++ b/aliases/available/osx.aliases.bash
@@ -14,7 +14,6 @@
alias f='open -a Finder '
alias textedit='open -a TextEdit'
alias hex='open -a "Hex Fiend"'
-alias gitx="open -a GitX"
if [ -s /usr/bin/firefox ] ; then
unalias firefox
diff --git a/bash_it.sh b/bash_it.sh
index b52ff97..7734c10 100644
--- a/bash_it.sh
+++ b/bash_it.sh
@@ -17,37 +17,22 @@
source $config_file
done
-# Tab Completion
-COMPLETION="${BASH}/completion/*.bash"
-for config_file in $COMPLETION
+# Load enabled aliases, completion, plugins
+for file_type in "aliases" "completion" "plugins"
do
- source $config_file
+ if [ ! -d "${BASH}/${file_type}/enabled" ]
+ then
+ mkdir "${BASH}/${file_type}/enabled"
+ ln -s ${BASH}/${file_type}/available/* "${BASH}/${file_type}/enabled"
+ fi
+ FILES="${BASH}/${file_type}/enabled/*.bash"
+ for config_file in $FILES
+ do
+ source $config_file
+ done
done
-# Plugins
-if [ ! -d "${BASH}/plugins/enabled" ]
-then
- mkdir "${BASH}/plugins/enabled"
- ln -s ${BASH}/plugins/available/* "${BASH}/plugins/enabled"
-fi
-PLUGINS="${BASH}/plugins/enabled/*.bash"
-for config_file in $PLUGINS
-do
- source $config_file
-done
-
-# Aliases
-if [ ! -d "${BASH}/aliases/enabled" ]
-then
- mkdir "${BASH}/aliases/enabled"
- ln -s ${BASH}/aliases/available/* "${BASH}/aliases/enabled"
-fi
-FUNCTIONS="${BASH}/aliases/enabled/*.bash"
-for config_file in $FUNCTIONS
-do
- source $config_file
-done
-
+# Load any custom aliases that the user has added
if [ -e "${BASH}/aliases/custom.aliases.bash" ]
then
source "${BASH}/aliases/custom.aliases.bash"
@@ -71,6 +56,13 @@
[ -s /usr/bin/gloobus-preview ] && PREVIEW="gloobus-preview"
[ -s /Applications/Preview.app ] && PREVIEW="/Applications/Preview.app"
+# Load all the Jekyll stuff
+
+if [ -e $HOME/.jekyllconfig ]
+then
+ . $HOME/.jekyllconfig
+fi
+
#
# Custom Help
diff --git a/completion/brew.completion.bash b/completion/available/brew.completion.bash
similarity index 100%
rename from completion/brew.completion.bash
rename to completion/available/brew.completion.bash
diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash
new file mode 100644
index 0000000..7231eef
--- /dev/null
+++ b/completion/available/gem.completion.bash
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+# Completion for gem
+
+if [ -z "$REMOTE_GEMS" ]
+then
+ REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') )
+fi
+
+if [ -z "$LOCAL_GEMS" ]
+then
+ LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') )
+fi
+
+_installcomp() {
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) )
+}
+
+_uninstallcomp() {
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) )
+}
+
+_gem() {
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ local prev=${COMP_WORDS[COMP_CWORD-1]}
+ case $prev in
+ install)
+ _installcomp
+ return 0
+ ;;
+ uninstall)
+ _uninstallcomp
+ return 0
+ ;;
+ esac
+ local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which)
+ COMPREPLY=( $(compgen -W "${commands[*]}" -- $cur) )
+}
+
+complete -F _gem gem
diff --git a/completion/git.completion.bash b/completion/available/git.completion.bash
similarity index 100%
rename from completion/git.completion.bash
rename to completion/available/git.completion.bash
diff --git a/completion/git_flow.completion.bash b/completion/available/git_flow.completion.bash
similarity index 100%
rename from completion/git_flow.completion.bash
rename to completion/available/git_flow.completion.bash
diff --git a/completion/rake.completion.bash b/completion/available/rake.completion.bash
similarity index 100%
rename from completion/rake.completion.bash
rename to completion/available/rake.completion.bash
diff --git a/completion/ssh.completion.bash b/completion/available/ssh.completion.bash
similarity index 100%
rename from completion/ssh.completion.bash
rename to completion/available/ssh.completion.bash
diff --git a/completion/todo.completion.bash b/completion/available/todo.completion.bash
similarity index 100%
rename from completion/todo.completion.bash
rename to completion/available/todo.completion.bash
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..3fc647b
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+cp $HOME/.bash_profile $HOME/.bash_profile.bak
+
+echo "Your original .bash_profile has been backed up to .bash_profile.bak"
+
+cp $HOME/.bash_it/template/bash_profile.template.bash $HOME/.bash_profile
+
+echo "Copied the template .bash_profile into ~/.bash_profile, edit this file to customize bash-it"
+
+while true
+do
+ read -p "Do you use Jekyll? (If you don't know what Jekyll is, answer 'n') [Y/N] " RESP
+
+ case $RESP
+ in
+ [yY])
+ cp $HOME/.bash_it/template/jekyllconfig.template.bash $HOME/.jekyllconfig
+ echo "Copied the template .jekyllconfig into your home directory. Edit this file to customize bash-it for using the Jekyll plugins"
+ break
+ ;;
+ [nN])
+ break
+ ;;
+ *)
+ echo "Please enter Y or N"
+ esac
+done
diff --git a/plugins/available/git.plugins.bash b/plugins/available/git.plugins.bash
index 3fbdac6..b0b9ce8 100644
--- a/plugins/available/git.plugins.bash
+++ b/plugins/available/git.plugins.bash
@@ -5,13 +5,6 @@
git remote add origin $GIT_HOSTING:$1.git
}
-# git add remote branch
-function garb() {
- echo "Adding remote branch '$1'";
- git config branch.$1.remote origin;
- git config branch.$1.merge refs/heads/$1;
-}
-
function git_first_push {
echo "Running: git push origin master:refs/heads/master"
git push origin master:refs/heads/master
@@ -99,3 +92,4 @@
echo "you're currently not in a git repository"
fi
}
+
diff --git a/plugins/available/jekyll.plugins.bash b/plugins/available/jekyll.plugins.bash
index 3b96f45..eff85ce 100644
--- a/plugins/available/jekyll.plugins.bash
+++ b/plugins/available/jekyll.plugins.bash
@@ -1,208 +1,346 @@
#!/bin/bash
editpost() {
- builtin cd "$JEKYLL_LOCAL_ROOT/_posts"
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
- COUNTER=1
- NUMBER="$RANDOM"
- TMPFILE="/tmp/editpost-$NUMBER"
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
- for POST in *
- do
- DATE=`echo $POST | grep -oE "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"`
- TITLE=`cat $POST | grep -oE "title: (.+)"`
- TITLE=`echo $TITLE | sed 's/title: //'`
- echo "$COUNTER) $DATE $TITLE" >> "$TMPFILE"
- POSTS[$COUNTER]=$POST
- COUNTER=`expr $COUNTER + 1`
- done
- less $TMPFILE
- read -p "Number of post to edit: " POST_TO_EDIT
- if [ -z "$EDITOR" ]
- then
- nano "${POSTS[$POST_TO_EDIT]}"
- else
- "$EDITOR" "${POSTS[$POST_TO_EDIT]}"
- fi
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd "$SITE/_posts"
+
+ COUNTER=1
+ NUMBER="$RANDOM"
+ TMPFILE="/tmp/editpost-$NUMBER"
+
+ for POST in *
+ do
+ DATE=`echo $POST | grep -oE "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"`
+ TITLE=`cat $POST | grep -oE "title: (.+)"`
+ TITLE=`echo $TITLE | sed 's/title: //'`
+ echo "$COUNTER) $DATE $TITLE" >> "$TMPFILE"
+ POSTS[$COUNTER]=$POST
+ COUNTER=`expr $COUNTER + 1`
+ done
+ less $TMPFILE
+ read -p "Number of post to edit: " POST_TO_EDIT
+ if [ -z "$JEKYLL_EDITOR" ]
+ then
+ nano "${POSTS[$POST_TO_EDIT]}"
+ else
+ "$JEKYLL_EDITOR" "${POSTS[$POST_TO_EDIT]}"
+ fi
}
-jknewpost() {
+newpost() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
- # 'builtin cd' into the local jekyll root
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
- builtin cd "$JEKYLL_LOCAL_ROOT/_posts"
+ loc=0
- # Get the date for the new post's filename
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ JEKYLL_FORMATTING=${MARKUPS[$loc]}
+ break
+ fi
+ loc=$(($loc+1))
+ done
- FNAME_DATE=$(date "+%Y-%m-%d")
+ # 'builtin cd' into the local jekyll root
- # If the user is using markdown formatting, let them choose what type of post they want. Sort of like Tumblr.
+ builtin cd "$SITE/_posts"
- OPTIONS="Text Quote Image Audio Video Link"
-
- if [ $JEKYLL_FORMATTING = "markdown" -o $JEKYLL_FORMATTING = "textile" ]
- then
- select OPTION in $OPTIONS
- do
- if [[ $OPTION = "Text" ]]
- then
- POST_TYPE="Text"
- break
- fi
+ # Get the date for the new post's filename
- if [[ $OPTION = "Quote" ]]
- then
- POST_TYPE="Quote"
- break
- fi
-
- if [[ $OPTION = "Image" ]]
- then
- POST_TYPE="Image"
- break
- fi
+ FNAME_DATE=$(date "+%Y-%m-%d")
- if [[ $OPTION = "Audio" ]]
- then
- POST_TYPE="Audio"
- break
- fi
+ # If the user is using markdown or textile formatting, let them choose what type of post they want. Sort of like Tumblr.
- if [[ $OPTION = "Video" ]]
- then
- POST_TYPE="Video"
- break
- fi
+ OPTIONS="Text Quote Image Audio Video Link"
- if [[ $OPTION = "Link" ]]
- then
- POST_TYPE="Link"
- break
- fi
- done
- fi
+ if [ $JEKYLL_FORMATTING = "markdown" -o $JEKYLL_FORMATTING = "textile" ]
+ then
+ select OPTION in $OPTIONS
+ do
+ if [[ $OPTION = "Text" ]]
+ then
+ POST_TYPE="Text"
+ break
+ fi
- # Get the title for the new post
+ if [[ $OPTION = "Quote" ]]
+ then
+ POST_TYPE="Quote"
+ break
+ fi
- read -p "Enter title of the new post: " POST_TITLE
+ if [[ $OPTION = "Image" ]]
+ then
+ POST_TYPE="Image"
+ break
+ fi
- # Convert the spaces in the title to hyphens for use in the filename
+ if [[ $OPTION = "Audio" ]]
+ then
+ POST_TYPE="Audio"
+ break
+ fi
- FNAME_POST_TITLE=`echo $POST_TITLE | tr ' ' "-"`
+ if [[ $OPTION = "Video" ]]
+ then
+ POST_TYPE="Video"
+ break
+ fi
- # Now, put it all together for the full filename
+ if [[ $OPTION = "Link" ]]
+ then
+ POST_TYPE="Link"
+ break
+ fi
+ done
+ fi
- FNAME="$FNAME_DATE-$FNAME_POST_TITLE.$JEKYLL_FORMATTING"
+ # Get the title for the new post
- # And, finally, create the actual post file. But we're not done yet...
+ read -p "Enter title of the new post: " POST_TITLE
- touch "$FNAME"
+ # Convert the spaces in the title to hyphens for use in the filename
- # Write a little stuff to the file for the YAML Front Matter
+ FNAME_POST_TITLE=`echo $POST_TITLE | tr ' ' "-"`
- echo "---" >> $FNAME
+ # Now, put it all together for the full filename
- # Now we have to get the date, again. But this time for in the header (YAML Front Matter) of
- # the file
+ FNAME="$FNAME_DATE-$FNAME_POST_TITLE.$JEKYLL_FORMATTING"
- YAML_DATE=$(date "+%B %d %Y %X")
+ # And, finally, create the actual post file. But we're not done yet...
- # Echo the YAML Formatted date to the post file
+ touch "$FNAME"
- echo "date: $YAML_DATE" >> $FNAME
+ # Write a little stuff to the file for the YAML Front Matter
- # Echo the original post title to the YAML Front Matter header
+ echo "---" >> $FNAME
- echo "title: $POST_TITLE" >> $FNAME
+ # Now we have to get the date, again. But this time for in the header (YAML Front Matter) of
+ # the file
- # And, now, echo the "post" layout to the YAML Front Matter header
+ YAML_DATE=$(date "+%B %d %Y %X")
- echo "layout: post" >> $FNAME
+ # Echo the YAML Formatted date to the post file
- # Close the YAML Front Matter Header
+ echo "date: $YAML_DATE" >> $FNAME
- echo "---" >> $FNAME
- echo >> $FNAME
+ # Echo the original post title to the YAML Front Matter header
- # Generate template text based on the post type
+ echo "title: $POST_TITLE" >> $FNAME
- if [[ $JEKYLL_FORMATTING = "markdown" ]]
- then
- if [[ $POST_TYPE = "Text" ]]
- then
- true
- fi
+ # And, now, echo the "post" layout to the YAML Front Matter header
- if [[ $POST_TYPE = "Quote" ]]
- then
- echo "> Quote" >> $FNAME
- echo >> $FNAME
- echo "— Author" >> $FNAME
- fi
+ echo "layout: post" >> $FNAME
- if [[ $POST_TYPE = "Image" ]]
- then
- echo "" >> $FNAME
- fi
+ # Close the YAML Front Matter Header
- if [[ $POST_TYPE = "Audio" ]]
- then
- echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
- fi
+ echo "---" >> $FNAME
+ echo >> $FNAME
- if [[ $POST_TYPE = "Video" ]]
- then
- echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
- fi
-
- if [[ $POST_TYPE = "Link" ]]
- then
- echo "[link][1]" >> $FNAME
- echo >> $FNAME
- echo "> Quote" >> $FNAME
- echo >> $FNAME
- echo "[1]: url" >> $FNAME
- fi
- fi
+ # Generate template text based on the post type
- if [[ $JEKYLL_FORMATTING = "textile" ]]
- then
- if [[ $POST_TYPE = "Text" ]]
- then
- true
- fi
+ if [[ $JEKYLL_FORMATTING = "markdown" ]]
+ then
+ if [[ $POST_TYPE = "Text" ]]
+ then
+ true
+ fi
- if [[ $POST_TYPE = "Quote" ]]
- then
- echo "bq. Quote" >> $FNAME
- echo >> $FNAME
- echo "— Author" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Quote" ]]
+ then
+ echo "> Quote" >> $FNAME
+ echo >> $FNAME
+ echo "— Author" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Image" ]]
- then
- echo "!url(alt text)" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Image" ]]
+ then
+ echo "" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Audio" ]]
- then
- echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Audio" ]]
+ then
+ echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Video" ]]
- then
- echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Video" ]]
+ then
+ echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Link" ]]
- then
- echo "\"Site\":url" >> $FNAME
- echo >> $FNAME
- echo "bq. Quote" >> $FNAME
- fi
- fi
+ if [[ $POST_TYPE = "Link" ]]
+ then
+ echo "[link][1]" >> $FNAME
+ echo >> $FNAME
+ echo "> Quote" >> $FNAME
+ echo >> $FNAME
+ echo "[1]: url" >> $FNAME
+ fi
+ fi
- # Open the file in your favorite editor
+ if [[ $JEKYLL_FORMATTING = "textile" ]]
+ then
+ if [[ $POST_TYPE = "Text" ]]
+ then
+ true
+ fi
- "$EDITOR" $FNAME
+ if [[ $POST_TYPE = "Quote" ]]
+ then
+ echo "bq. Quote" >> $FNAME
+ echo >> $FNAME
+ echo "— Author" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Image" ]]
+ then
+ echo "!url(alt text)" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Audio" ]]
+ then
+ echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Video" ]]
+ then
+ echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Link" ]]
+ then
+ echo "\"Site\":url" >> $FNAME
+ echo >> $FNAME
+ echo "bq. Quote" >> $FNAME
+ fi
+ fi
+
+ # Open the file in your favorite editor
+
+ "$JEKYLL_EDITOR" $FNAME
+}
+
+function testsite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ jekyll --server --auto
+}
+
+function buildsite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ rm -rf _site
+ jekyll --no-server
+}
+
+function deploysite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ loc=0
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ REMOTE=${REMOTES[$loc]}
+ break
+ fi
+ loc=$(($loc+1))
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ rsync -rz $REMOTE
}
diff --git a/plugins/available/osx.plugin.bash b/plugins/available/osx.plugin.bash
index e6271bd..cf55377 100644
--- a/plugins/available/osx.plugin.bash
+++ b/plugins/available/osx.plugin.bash
@@ -17,7 +17,7 @@
function dock-switch() {
if [ $(uname) = "Darwin" ]; then
-
+
if [ $1 = 3d ] ; then
defaults write com.apple.dock no-glass -boolean NO
killall Dock
@@ -28,10 +28,21 @@
else
echo "usage:"
- echo "dock-switch 2d"
+ echo "dock-switch 2d"
echo "dock-switch 3d."
fi
else
- echo "sorry. you're currently not using os x"
+ echo "Sorry, this only works on Mac OS X"
fi
}
+
+# Download a file and open it in Preview
+
+function prevcurl() {
+ if [ ! $(uname) = "Darwin" ]
+ then
+ echo "This function only works with Mac OS X"
+ return 1
+ fi
+ curl "$*" | open -fa "Preview"
+}
diff --git a/template/bash_profile.template.bash b/template/bash_profile.template.bash
index 30ab0fc..95f481e 100644
--- a/template/bash_profile.template.bash
+++ b/template/bash_profile.template.bash
@@ -26,18 +26,6 @@
# Don't check mail when opening terminal.
unset MAILCHECK
-# Change this to the path of your local jekyll root to use the jekyll aliases
-
-export JEKYLL_LOCAL_ROOT="$HOME/Sites/jekyllsite"
-
-# And change this to the remote server and root
-
-export JEKYLL_REMOTE_ROOT="user@server:/path/to/jekyll/root"
-
-# And, for the last of the jekyll variables, this is the formatting you use, eg: markdown,
-# textile, etc. Basically whatever you use as the extension for posts, without the preceding dot
-
-export JEKYLL_FORMATTING="markdown"
# Change this to your console based IRC client of choice.
diff --git a/template/jekyllconfig.template.bash b/template/jekyllconfig.template.bash
new file mode 100644
index 0000000..291bf85
--- /dev/null
+++ b/template/jekyllconfig.template.bash
@@ -0,0 +1,21 @@
+# This is a space-delimited list of your Jekyll project paths
+
+SITES="$HOME/sites/project_1 $HOME/sites/project_2"
+
+# This is another space-delimited list.
+# This one is of the remote user@host:path location of your jekyll site
+# NOTE: The locations of these must correspond to the locations
+# of the sites in the first list
+# For instance, the host for the first Jekyll site
+# must be first in this list, the second second, etc.
+
+REMOTES="user@host_1:path user@host_2:path"
+
+# list of markup syntaxes to use for the sites,
+# Same rules as above. Can be HTML, textile, or markdown
+
+MARKUPS="markdown textile"
+
+# If you want to use a different editor for Jekyll, change the value of this variable
+
+JEKYLL_EDITOR="$EDITOR"
diff --git a/themes/doubletime/doubletime.theme.bash b/themes/doubletime/doubletime.theme.bash
index 1237f80..e16ba66 100644
--- a/themes/doubletime/doubletime.theme.bash
+++ b/themes/doubletime/doubletime.theme.bash
@@ -17,11 +17,12 @@
doubletime_scm_prompt() {
CHAR=$(scm_char)
- if [ $CHAR = $SCM_NONE_CHAR ]
- then
+ if [ $CHAR = $SCM_NONE_CHAR ]; then
return
- else
+ elif [ $CHAR = $SCM_GIT_CHAR ]; then
echo "$(git_prompt_status)"
+ else
+ echo "[$(scm_prompt_info)]"
fi
}
diff --git a/themes/minimal/minimal.theme.bash b/themes/minimal/minimal.theme.bash
index 8de4a6c..76cb24d 100644
--- a/themes/minimal/minimal.theme.bash
+++ b/themes/minimal/minimal.theme.bash
@@ -1,7 +1,12 @@
-prompt_setter() {
- PS1="${cyan}\W${normal} "
+#!/usr/bin/env bash
+
+SCM_THEME_PROMPT_PREFIX="${cyan}(${green}"
+SCM_THEME_PROMPT_SUFFIX="${cyan})"
+SCM_THEME_PROMPT_DIRTY=" ${red}✗"
+SCM_THEME_PROMPT_CLEAN=" ${green}✓"
+
+prompt() {
+ PS1="$(scm_prompt_info)${reset_color} ${cyan}\W${reset_color} "
}
-PROMPT_COMMAND=prompt_setter
-
-export PS3=">> "
+PROMPT_COMMAND=prompt
diff --git a/themes/tylenol/tylenol.theme.bash b/themes/tylenol/tylenol.theme.bash
new file mode 100644
index 0000000..c915f56
--- /dev/null
+++ b/themes/tylenol/tylenol.theme.bash
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Based on 'bobby' theme with the addition of virtualenv_prompt
+#
+
+SCM_THEME_PROMPT_DIRTY=" ${red}✗"
+SCM_THEME_PROMPT_CLEAN=" ${green}✓"
+SCM_THEME_PROMPT_PREFIX=" ${yellow}|${reset_color}"
+SCM_THEME_PROMPT_SUFFIX="${yellow}|"
+
+RVM_THEME_PROMPT_PREFIX="|"
+RVM_THEME_PROMPT_SUFFIX="|"
+VIRTUALENV_THEME_PROMPT_PREFIX='|'
+VIRTUALENV_THEME_PROMPT_SUFFIX='|'
+
+function prompt_command() {
+ PS1="\n${green}$(virtualenv_prompt)${red}$(rvm_version_prompt) ${reset_color}\h ${orange}in ${reset_color}\w\n${yellow}$(scm_char)$(scm_prompt_info) ${yellow}→${white} "
+}
+
+PROMPT_COMMAND=prompt_command;