dkbuild: améliorer clean
This commit is contained in:
parent
d6e78b9665
commit
a56ec0e0f1
48
dkbuild
48
dkbuild
|
@ -139,6 +139,10 @@ $scriptname clean [OPTIONS] [DIRS...]
|
|||
-x, --untracked
|
||||
Utiliser l'option -x de git clean pour supprimer aussi les fichiers non
|
||||
suivis.
|
||||
-a, --all
|
||||
Supprimer aussi les fichiers listés par 'git status --ignored'. Cela
|
||||
permet de supprimer un maximum de fichiers qui ne font pas partie du
|
||||
projet. Cette option implique --untracked
|
||||
|
||||
$scriptname composer DESTDIR [ACTION [PARAMS] [ARGS]]
|
||||
lancer composer dans le répertoire spécifié
|
||||
|
@ -2585,28 +2589,58 @@ function _build_after() {
|
|||
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
## clean
|
||||
|
||||
function _clean_git_clean() {
|
||||
LANG=C git clean -d $opt "$@" |
|
||||
grep -vE '^(Would skip|Skipping) ' |
|
||||
sed -r 's/^Would remove //'
|
||||
}
|
||||
function _clean_git_status() {
|
||||
git status --porcelain --ignored |
|
||||
grep '^!! ' |
|
||||
sed 's/^...//'
|
||||
}
|
||||
|
||||
function clean_action() {
|
||||
eval "$SHARED_LOCALS1"
|
||||
local opt=-X
|
||||
local opt=-X all=
|
||||
local -a args; args=(
|
||||
"${SHARED_ARGS1[@]}"
|
||||
-X,--ignored opt=-X
|
||||
-x,--untracked opt=-x
|
||||
-a,--all all=1
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
[ -n "$all" ] && opt=-x
|
||||
|
||||
edebug "clean_action"
|
||||
ensure_projdir
|
||||
|
||||
local cleans
|
||||
setx cleans=git clean -nd $opt "$@"
|
||||
[ -n "$cleans" ] || return 0
|
||||
if check_interaction -c; then
|
||||
eecho "$cleans"
|
||||
ask_yesno "Voulez-vous supprimer ces fichiers?" O || die
|
||||
setx cleans=_clean_git_clean -n "$@"
|
||||
if [ -n "$cleans" ]; then
|
||||
if check_interaction -c; then
|
||||
einfo "via git clean"
|
||||
eecho "$cleans"
|
||||
ask_yesno "Voulez-vous supprimer ces fichiers?" O || die
|
||||
fi
|
||||
|
||||
_clean_git_clean -f "$@" || die
|
||||
fi
|
||||
|
||||
git clean -fd $opt "$@"
|
||||
if [ -n "$all" ]; then
|
||||
setx cleans=_clean_git_status
|
||||
if [ -n "$cleans" ]; then
|
||||
if check_interaction -c; then
|
||||
einfo "via git status"
|
||||
eecho "$cleans"
|
||||
ask_yesno "Voulez-vous supprimer ces fichiers supplémentaires?" O || die
|
||||
fi
|
||||
|
||||
sed 's/^/Removing /' <<<"$cleans"
|
||||
eval "cleans=($cleans);"' rm -rf "${cleans[@]}"' || die
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
Loading…
Reference in New Issue