Skip to content

Commit

Permalink
Account for empty but existing db file.
Browse files Browse the repository at this point in the history
  • Loading branch information
wayneeseguin committed Aug 18, 2011
1 parent cd2786c commit 7a4e98f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 41 deletions.
7 changes: 2 additions & 5 deletions scripts/alias
Expand Up @@ -161,17 +161,14 @@ alias_create() {
}

alias_list() {

local item items

items=($(cd "$rvm_rubies_path" ; find . -maxdepth 1 -mindepth 1 -type l | sed -e 's#./##'))

for item in "${items[@]}" ; do

for item in "${items[@]}"
do
echo "$(basename "$item") => $("$rvm_scripts_path"/db "$rvm_config_path/alias" "$(basename "$item")")"

done

}

args=($*)
Expand Down
56 changes: 20 additions & 36 deletions scripts/db
Expand Up @@ -13,83 +13,67 @@ usage()
" >&2
}

if [[ -f "$1" ]] ; then

database_file="$1" ; shift

if [[ ! -f "$database_file" ]] ; then

if [[ -f "$1" ]]
then
database_file="$1"
shift
if [[ ! -f "$database_file" ]]
then
directory=$(dirname "$database_file")

if [[ ! -d "$directory" ]] ; then
mkdir -p "$directory"
fi
[[ -d "$directory" ]] || mkdir -p "$directory"

touch "$database_file"

fi

else

printf "\n\nDatabase file $1 does not exist.\n\n" >&2

exit 1

fi

key="$1" ; shift

if [[ -z "$key" ]] ; then
key="$1"
shift

if [[ -z "$key" ]]
then
usage

exit 1

else

if [[ ${escape_flag:-0} -eq 1 ]]; then
if (( ${escape_flag:-0} ))
then
escaped_key="$(\printf "$key" | \sed -e 's#\\#\\#g' -e 's#/#\\/#g' -e 's#\.#\.#g')"
else
escaped_key="$key"
fi

value="$*"

if [[ "unset" = "$value" || "delete" = "$value" ]] ; then

if [[ "unset" = "$value" || "delete" = "$value" ]]
then
\sed -e "s#^$escaped_key=.*\$##" -e '/^$/d' "$database_file" \
> "$database_file.new"

mv "$database_file.new" "$database_file"

else

if [[ -z "$value" ]] ; then # get
if [[ -z "$value" ]]
then # get
[[ -s "${database_file}" ]] || exit 0 # File is empty, nothing to get.

\awk -F= '/^'"$escaped_key"'=/' "$database_file" \
| \sed -e "s#^$escaped_key=##" -e '/^$/d'

else # set

\sed -e "s#^$escaped_key=.*\$##" -e '/^$/d' "$database_file" > "$database_file.new"

mv "$database_file.new" "$database_file"

if [[ -z "$(awk -F= "/^'"$escaped_key"'=/{print $2}" "$database_file")" ]] ; then # append

if [[ -z "$(awk -F= "/^'"$escaped_key"'=/{print $2}" "$database_file")" ]]
then # append
echo "$escaped_key=$value" >> "$database_file"

else # overwrite

\sed -i.tmp "s#^$escaped_key=.*\$#$escaped_key=$value#" "$database_file" > "$database_file.new"

mv "$database_file.new" "$database_file"

fi

fi

fi

fi

0 comments on commit 7a4e98f

Please sign in to comment.