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##*/}"
151 [ -z "$name" ] && usage
152 [ -f "$envdir/.git/refs/heads/$name" ] || error
"environment '$name' not found"
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
161 [ -f "$ENVDIR/.git/refs/heads/$name" ] || error
"environment '$name' not found"
170 local NAME
="${1##*/}"
172 git-branch
-m "$NAME"
180 [ -z "$NAME" ] && usage
183 branch
="$(git-branch | grep '^\* ' | awk '{print $2}')"
184 if [ -n "$branch" -a "$branch" != "master" ]; then
186 if ask_bool
0 "Do you want to clone the current environment?"; then
189 rm -f "$BASEDIR/.config" "$BASEDIR/files"
191 git-checkout
-b "$1" "$from"
192 if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then
193 if ask_bool
1 "Do you want to keep your current config and files?"; then
194 [ -d "$BASEDIR/files" -a \
! -L "$BASEDIR/files" ] && {
195 mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev
/null
196 rmdir "$BASEDIR/files"
200 rm -rf "$BASEDIR/.config" "$BASEDIR/files"
210 list
) env_list
"$@";;
211 clear) env_clear
"$@";;
212 switch
) env_switch
"$@";;
213 delete
) env_delete
"$@";;
214 rename
) env_rename
"$@";;
215 diff) env_diff
"$@";;
216 save
) env_save
"$@";;
217 revert
) env_revert
"$@";;
This page took 0.051409 seconds and 5 git commands to generate.