|
2 | 2 |
|
3 | 3 | VER_EXPR=${1:-'dev'} |
4 | 4 | PKG_NAME=${2:-'@fessional/razor'} |
| 5 | +SUFFIXES=${3:-'common,desktop,mobile'} |
5 | 6 |
|
6 | | -echo "📦 Fetching package versions of $PKG_NAME" |
7 | | -VERSIONS=$(npm view "$PKG_NAME" versions --json | jq -r 'reverse | .[]') |
| 7 | +echo "📦 Fetching versions for $PKG_NAME" |
8 | 8 |
|
9 | | -echo "🔍 Matching versions regexp: $VER_EXPR" |
| 9 | +VERSIONS=$(curl -s "https://registry.npmjs.org/${PKG_NAME}" \ |
| 10 | + | jq -r '[.versions | to_entries[] | select(.value.deprecated == null) | .key] | reverse[]') |
| 11 | + |
| 12 | +echo "🔍 Matching versions using pattern: $VER_EXPR" |
10 | 13 | MATCHED=$(echo "$VERSIONS" | grep -E "$VER_EXPR" || true) |
11 | 14 |
|
12 | 15 | if [ -z "$MATCHED" ]; then |
13 | 16 | echo "✅ No matching versions found." |
14 | 17 | exit 0 |
15 | 18 | fi |
16 | 19 |
|
17 | | -echo '⚠️ //registry.npmjs.org/:_authToken=$NPM_TOKEN must set in ~/.npmrc' |
18 | | -echo "⚠️ Will attempt to unpublish the following versions:" |
| 20 | +echo "⚠️ Requires auth token in ~/.npmrc: //registry.npmjs.org/:_authToken=\$NPM_TOKEN" |
| 21 | +echo "⚠️ The following versions will be unpublished (or deprecated if not allowed):" |
19 | 22 | echo "$MATCHED" |
20 | 23 | echo "" |
21 | 24 |
|
22 | 25 | function _unpublish() { |
23 | 26 | local pkg=$1 |
24 | | - npm unpublish "$pkg" > /dev/null 2>&1 && echo " ✅ $pkg" || echo " ❌ $pkg" |
| 27 | + if npm unpublish "$pkg" > /dev/null 2>&1; then |
| 28 | + echo "✅ Unpublished $pkg" |
| 29 | + else |
| 30 | + npm deprecate -f "$pkg" "❌ Deprecated version. Please upgrade." > /dev/null 2>&1 |
| 31 | + echo "⚠️ Deprecated $pkg" |
| 32 | + fi |
25 | 33 | } |
26 | 34 |
|
| 35 | +IFS=',' read -ra SUFFIX_LIST <<< "$SUFFIXES" |
| 36 | + |
27 | 37 | CONFIRM="no" |
28 | 38 | for version in $MATCHED; do |
29 | 39 | if [[ "$CONFIRM" != "all" ]]; then |
30 | | - read -p "🔆 Unpublish $version ? (all/y/n) " CONFIRM |
| 40 | + read -p "🔆 Unpublish $version? (all/y/n) " CONFIRM |
31 | 41 | if [[ "$CONFIRM" != "y" && "$CONFIRM" != "all" ]]; then |
32 | 42 | continue |
33 | 43 | fi |
34 | 44 | fi |
35 | 45 |
|
36 | | - echo "🚮 Unpublish $version" |
| 46 | + echo "🚮 Processing $PKG_NAME@$version" |
37 | 47 | _unpublish "$PKG_NAME@$version" |
38 | | - _unpublish "${PKG_NAME}-common@$version" |
39 | | - _unpublish "${PKG_NAME}-desktop@$version" |
40 | | - _unpublish "${PKG_NAME}-mobile@$version" |
| 48 | + |
| 49 | + for suffix in "${SUFFIX_LIST[@]}"; do |
| 50 | + if [[ -n "$suffix" && "$suffix" != "-" ]]; then |
| 51 | + _unpublish "${PKG_NAME}-${suffix}@$version" |
| 52 | + fi |
| 53 | + done |
41 | 54 | done |
42 | 55 |
|
43 | | -echo "✅ Done All." |
| 56 | +echo "✅ All done." |
0 commit comments