blob: daab5d1deb7f1a05ac363ee701f857b76d66491d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# Commit a new config change
# Works only for simple cases
emulate -L zsh
setopt err_return
ask ()
{
echo -n ${fg_bold[white]}"Is this ok? [y/n] "${reset_color}
if ! read -q; then
echo
echo "I would have done the wrong thing ... aborting!"
return 2
else
echo
fi
}
log ()
{
echo ${fg_bold[white]}">> $1"${reset_color}
}
{
# ignore a -m
[[ $1 == "-m" ]] && shift
if [[ $# == 0 ]]; then
echo "No message given. Aborting."
return 1
fi
local message=$1
local tok=__cci__
pushd -q ~
{
local indexed="$(config status --porcelain | grep -v '^ ')"
if [[ -n $indexed ]]; then
log "Stuff in index -- only commiting this"
echo "$indexed"
ask || return 2
else
log "Nothing in index -- commiting everything which has changed"
echo "$(config status)"
ask || return 2
config add --update
fi
cstg diff --diff-opts --cached
ask || return 2
log "Creating new patch"
cstg new $tok -m "$message"
log "Refreshing"
cstg refresh --index
if [[ -z $(cstg files) ]]; then
echo
echo "Ehm - this patch is empty. Narf. Aborting!"
echo "Deleting useless patch"
cstg del $tok
return 3
fi
log "Committing"
cstg commit $tok
# from 0.16 onwards stg repushes the patches ... pop them again
# this is needed to make the `config push` work
log "Popping patches, stg thought it had to re-apply"
cstg pop --all --keep
if [[ -n $(cstg series --applied) ]]; then
echo
echo "Urgs! Something went wrong. There are still patches applied."
echo "Clean up for yourself. Aborting here!"
return 4
fi
log "Pushing to remote"
config push
log "Re-apply patches"
cstg push --all --keep
log "Done"
} always { popd -q }
} always { unfunction ask log }
# vim: ft=zsh
|