22
33do-remove () {
44 local flag_all=' no'
5+ local flag_force=' no'
56
67 util.setup_mode
78
@@ -11,6 +12,9 @@ do-remove() {
1112 --all)
1213 flag_all=' yes'
1314 ;;
15+ --force)
16+ flag_force=' yes'
17+ ;;
1418 -* )
1519 die " Flag '$arg ' not recognized"
1620 ;;
@@ -20,6 +24,10 @@ do-remove() {
2024 esac
2125 done
2226
27+ if [[ $flag_all == yes && $flag_force == yes ]]; then
28+ die " Flags '--all' and '--force' are mutually exclusive"
29+ fi
30+
2331 if [ " $flag_all " = yes ]; then
2432 local bpm_toml_file=" $BPM_ROOT /bpm.toml"
2533
@@ -34,7 +42,16 @@ do-remove() {
3442 do-remove " $pkg "
3543 done
3644 else
37- log.warn " No dependencies specified in 'dependencies' key"
45+ case " $? " in
46+ 1)
47+ log.warn " No dependencies specified in 'dependencies' key"
48+ ;;
49+ 2)
50+ if [ " $flag_force " = ' no' ]; then
51+ exit 1
52+ fi
53+ ;;
54+ esac
3855 fi
3956
4057 return
@@ -44,6 +61,10 @@ do-remove() {
4461 die " At least one package must be supplied"
4562 fi
4663
64+ if [ " $flag_force " = yes ] && (( ${# pkgs[@]} > 1 )) ; then
65+ die " Only one package may be specified when --force is passed"
66+ fi
67+
4768 for repoSpec in " ${pkgs[@]} " ; do
4869 util.extract_data_from_input " $repoSpec "
4970 local site=" $REPLY2 "
@@ -55,7 +76,13 @@ do-remove() {
5576 fi
5677
5778 if [ -d " $BPM_PACKAGES_PATH /$site /$package " ]; then
58- do_actual_removal " $site /$package "
79+ if [ " $flag_force " = yes ]; then
80+ log.info " Force removing '$site /$package '"
81+ rm -rf " ${BPM_PACKAGES_PATH:? } /$site /$package "
82+ do-prune
83+ else
84+ do_actual_removal " $site /$package "
85+ fi
5986 elif [ -e " $BPM_PACKAGES_PATH /$site /$package " ]; then
6087 rm -f " $BPM_PACKAGES_PATH /$site /$package "
6188 else
@@ -83,5 +110,4 @@ do_actual_removal() {
83110 :
84111 fi
85112 fi
86-
87113}
0 commit comments