Skip to content

Instantly share code, notes, and snippets.

@zhouguangming
Last active December 21, 2015 11:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhouguangming/6302135 to your computer and use it in GitHub Desktop.
Save zhouguangming/6302135 to your computer and use it in GitHub Desktop.
Open a gem in a fast way.
#!/usr/bin/env bash
if [ -z $1 ] || [ $1 == "-h" ] || [ $1 == "--help" ]
then
echo "Usage: `basename $0` [Gemname]"
exit 0
fi
GEM_NAME=$1
GEM_DIR=$HOME/.rvm/gems/$RUBY_VERSION/gems
STD_DIR=$HOME/.rvm/rubies/$RUBY_VERSION/lib/ruby/
MATCHING_GEMS=()
function _edit {
if [[ $EDITOR = "" ]]
then
EDITOR="vim"
fi
if [[ $EDITOR =~ "vim" ]]
then
cd $GEM_DIR/${MATCHING_GEMS[number]}//lib
$EDITOR -c NERDTree
else
$EDITOR $GEM_DIR/${MATCHING_GEMS[number]}/lib
fi
}
function _choose {
for ((i=0; i<${#MATCHING_GEMS[@]}; i++))
do
echo " $i: ${MATCHING_GEMS[$i]}"
done
echo -n "=> Choose: "
read number
}
function _ogem {
for gem in $(ls $GEM_DIR)
do
if [[ $gem =~ $GEM_NAME ]]
then
MATCHING_GEMS=("${MATCHING_GEMS[@]}" $gem)
fi
done
if [ ${#MATCHING_GEMS[@]} -gt 0 ]
then
if [ ${#MATCHING_GEMS[@]} -eq 1 ]
then
_edit
else
echo "=> Find ${#MATCHING_GEMS[@]} matching gems in \`$GEM_DIR.\`"
_choose
if [[ -s $GEM_DIR/${MATCHING_GEMS[number]} && ${MATCHING_GEMS[number]} ]]
then
_edit
else
echo "Invalid argument"
fi
fi
else
echo "Can not find any matching gem in \`$GEM_DIR\` named \`$GEM_NAME\`".
fi
}
_ogem
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment