7 Usage: $0 [options] <command> [arguments]
10 list List environments
11 clear Delete all environment and revert to flat config/files
12 new <name> Create a new environment
13 switch <name> Switch to a different environment
14 delete <name> Delete an environment
15 rename <newname> Rename the current environment
16 diff Show differences between current state and environment
17 save Save your changes to the environment
18 revert Revert your changes since last save
32 local DEFAULT
="$1"; shift
35 1) def
=0; defstr
="Y/n";;
36 0) def
=1; defstr
="y/N";;
37 *) def
=; defstr
="y/n";;
39 while [ -z "$val" ]; do
42 echo -n "$* ($defstr): "
55 if [ -z "$CREATE" ]; then
56 [ -d "$ENVDIR" ] ||
exit 0
58 [ -x "$(which git 2>/dev/null)" ] || error
"Git is not installed"
59 mkdir
-p "$ENVDIR" || error
"Failed to create the environment directory"
60 cd "$ENVDIR" || error
"Failed to switch to the environment directory"
66 git commit
-q -m "Initial import"
69 error
"Failed to initialize the environment directory"
74 [ \
! -L "$BASEDIR/.config" -a -f "$BASEDIR/.config" ] && mv "$BASEDIR/.config" "$ENVDIR"
82 git commit
-m "${STR:-Update} at $(date)"
86 rm -f "$BASEDIR/.config"
87 ln -s env
/.config
"$BASEDIR/.config"
88 mkdir
-p "$ENVDIR/files"
89 [ -L "$BASEDIR/files" ] ||
ln -s env
/files
"$BASEDIR/files"
99 git branch |
grep -vE '^. master$'
121 LINES
="$(env_diff | wc -l)" # implies env_init
122 [ "$LINES" -gt 0 ] && {
123 if ask_bool
1 "Do you want to save your changes"; then
134 [ -L "$BASEDIR/.config" ] && rm -f "$BASEDIR/.config"
135 [ -L "$BASEDIR/files" ] && rm -f "$BASEDIR/files"
136 [ -f "$ENVDIR/.config" ] ||
( cd "$ENVDIR/files" && find |
grep -vE '^\.$' > /dev
/null
)
138 if ask_bool
1 "Do you want to keep your current config and files"; then
139 mkdir
-p "$BASEDIR/files"
140 cp -a "$ENVDIR/files/*" "$BASEDIR/files" 2>/dev
/null
>/dev
/null
141 cp "$ENVDIR/.config" "$BASEDIR/"
143 rm -rf "$BASEDIR/files" "$BASEDIR/.config"
150 local name
="${1##*/}"
152 [ -z "$name" ] && usage
153 branch
="$(git branch | grep '^\* ' | awk '{print $2}')"
154 [ "$name" = "$branch" ] && error
"cannot delete the currently selected environment"
155 git branch
-D "$name"
159 local name
="${1##*/}"
160 [ -z "$name" ] && usage
164 git checkout
"$name" || error
"environment '$name' not found"
169 local NAME
="${1##*/}"
171 git branch
-m "$NAME"
179 [ -z "$NAME" ] && usage
182 branch
="$(git branch | grep '^\* ' | awk '{print $2}')"
183 if [ -n "$branch" -a "$branch" != "master" ]; then
185 if ask_bool
0 "Do you want to clone the current environment?"; then
188 rm -f "$BASEDIR/.config" "$BASEDIR/files"
190 git checkout
-b "$1" "$from"
191 if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then
192 if ask_bool
1 "Do you want to keep your current config and files?"; then
193 [ -d "$BASEDIR/files" -a \
! -L "$BASEDIR/files" ] && {
194 mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev
/null
195 rmdir "$BASEDIR/files"
199 rm -rf "$BASEDIR/.config" "$BASEDIR/files"
209 list
) env_list
"$@";;
210 clear) env_clear
"$@";;
211 switch
) env_switch
"$@";;
212 delete
) env_delete
"$@";;
213 rename
) env_rename
"$@";;
214 diff) env_diff
"$@";;
215 save
) env_save
"$@";;
216 revert
) env_revert
"$@";;
This page took 0.049272 seconds and 5 git commands to generate.