dkbuild: améliorer clean
This commit is contained in:
parent
d6e78b9665
commit
a56ec0e0f1
42
dkbuild
42
dkbuild
|
@ -139,6 +139,10 @@ $scriptname clean [OPTIONS] [DIRS...]
|
||||||
-x, --untracked
|
-x, --untracked
|
||||||
Utiliser l'option -x de git clean pour supprimer aussi les fichiers non
|
Utiliser l'option -x de git clean pour supprimer aussi les fichiers non
|
||||||
suivis.
|
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]]
|
$scriptname composer DESTDIR [ACTION [PARAMS] [ARGS]]
|
||||||
lancer composer dans le répertoire spécifié
|
lancer composer dans le répertoire spécifié
|
||||||
|
@ -2585,28 +2589,58 @@ function _build_after() {
|
||||||
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
## clean
|
## 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() {
|
function clean_action() {
|
||||||
eval "$SHARED_LOCALS1"
|
eval "$SHARED_LOCALS1"
|
||||||
local opt=-X
|
local opt=-X all=
|
||||||
local -a args; args=(
|
local -a args; args=(
|
||||||
"${SHARED_ARGS1[@]}"
|
"${SHARED_ARGS1[@]}"
|
||||||
-X,--ignored opt=-X
|
-X,--ignored opt=-X
|
||||||
-x,--untracked opt=-x
|
-x,--untracked opt=-x
|
||||||
|
-a,--all all=1
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
[ -n "$all" ] && opt=-x
|
||||||
|
|
||||||
edebug "clean_action"
|
edebug "clean_action"
|
||||||
ensure_projdir
|
ensure_projdir
|
||||||
|
|
||||||
local cleans
|
local cleans
|
||||||
setx cleans=git clean -nd $opt "$@"
|
setx cleans=_clean_git_clean -n "$@"
|
||||||
[ -n "$cleans" ] || return 0
|
if [ -n "$cleans" ]; then
|
||||||
if check_interaction -c; then
|
if check_interaction -c; then
|
||||||
|
einfo "via git clean"
|
||||||
eecho "$cleans"
|
eecho "$cleans"
|
||||||
ask_yesno "Voulez-vous supprimer ces fichiers?" O || die
|
ask_yesno "Voulez-vous supprimer ces fichiers?" O || die
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git clean -fd $opt "$@"
|
_clean_git_clean -f "$@" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
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