please-release-me 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(git show:*)"
5
+ ]
6
+ }
7
+ }
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  ## What is it?
16
16
 
17
17
  An automated release script
18
- for npm, Rust and Python,
18
+ for npm, Go, Rust and Python,
19
19
  built to work with
20
20
  the conventions
21
21
  used by my packages.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "please-release-me",
3
- "version": "3.0.0",
3
+ "version": "3.1.1",
4
4
  "description": "Let me go!",
5
5
  "author": "Phil Booth <pmbooth@gmail.com> (https://philbooth.me/)",
6
6
  "license": "MIT",
package/release.sh CHANGED
@@ -1,67 +1,83 @@
1
1
  #!/bin/sh
2
2
 
3
- LAST_TAG=`git describe --tags --abbrev=0`
4
- COMMITS=`git log $LAST_TAG..HEAD --pretty=oneline`
3
+ LAST_TAG=$(git describe --tags --abbrev=0)
4
+ COMMITS=$(git log "$LAST_TAG..HEAD" --pretty=oneline)
5
5
 
6
- if [ "$COMMITS" = "" ]; then
7
- echo "Release aborted: I see no work."
6
+ if [ "$1" = "--notest" ]; then
7
+ TEST=false
8
+ else
9
+ TEST=true
10
+ fi
11
+
12
+ if [ -f go.mod ]; then
13
+ IS_GO=true
14
+ fi
15
+
16
+ if [ -f package.json ]; then
17
+ IS_NODE=true
18
+ fi
19
+
20
+ if [ -f setup.py ]; then
21
+ IS_PYTHON=true
22
+ fi
23
+
24
+ if [ -f Cargo.toml ]; then
25
+ IS_RUST=true
26
+ fi
27
+
28
+ abort() {
29
+ echo "Release aborted: $1"
8
30
  exit 1
31
+ }
32
+
33
+ if [ "$COMMITS" = "" ]; then
34
+ abort "I see no work"
9
35
  fi
10
36
 
11
- grep '^\s*"lint":' package.json > /dev/null 2>&1
12
- if [ $? -eq 0 ]; then
13
- npm run lint
14
- if [ $? -ne 0 ]; then
15
- echo "Release aborted: Lint failed."
16
- exit 1
37
+ if [ "$IS_GO" ]; then
38
+ if ! go vet ./...; then
39
+ abort "go vet failed"
17
40
  fi
18
41
  fi
19
42
 
20
- grep '^\s*"test":' package.json > /dev/null 2>&1
21
- if [ $? -eq 0 ]; then
22
- npm t
23
- if [ $? -ne 0 ]; then
24
- echo "Release aborted: Tests failed."
25
- exit 1
43
+ if grep '^\s*"lint":' package.json > /dev/null 2>&1; then
44
+ if ! npm run lint; then
45
+ abort "npm run lint failed"
26
46
  fi
27
47
  fi
28
48
 
29
- grep '^\s*"minify":' package.json > /dev/null 2>&1
30
- if [ $? -eq 0 ]; then
31
- npm run minify
32
- if [ $? -ne 0 ]; then
33
- echo "Release aborted: Minification failed."
34
- exit 1
49
+ if [ "$TEST" = "true" ]; then
50
+ if [ "$IS_GO" ]; then
51
+ if ! go test ./...; then
52
+ abort "go test failed"
53
+ fi
35
54
  fi
36
- fi
37
55
 
38
- if [ -f Cargo.toml ]; then
39
- cargo t
40
- if [ $? -ne 0 ]; then
41
- echo "Release aborted: Cargo tests failed."
42
- exit 1
56
+ if grep '^\s*"test":' package.json > /dev/null 2>&1; then
57
+ if ! npm t; then
58
+ abort "npm test failed"
59
+ fi
43
60
  fi
44
- fi
45
61
 
46
- if [ -f go.mod ]; then
47
- go vet ./...
48
- if [ $? -ne 0 ]; then
49
- echo "Release aborted: Go vet failed."
50
- exit 1
62
+ if [ "$IS_RUST" ]; then
63
+ if ! cargo t; then
64
+ abort "cargo test failed"
65
+ fi
51
66
  fi
52
67
 
53
- go test ./...
54
- if [ $? -ne 0 ]; then
55
- echo "Release aborted: Go tests failed."
56
- exit 1
68
+ fi
69
+
70
+ if grep '^\s*"minify":' package.json > /dev/null 2>&1; then
71
+ if ! npm run minify; then
72
+ abort "npm run minify failed"
57
73
  fi
58
74
  fi
59
75
 
60
76
  while read -r COMMIT; do
61
- HASH=`echo "$COMMIT" | cut -d ' ' -f 1`
62
- MESSAGE=`echo "$COMMIT" | cut -d ':' -f 2- | awk '{$1=$1};1'`
63
- TYPE=`echo "$COMMIT" | cut -d ' ' -f 2 | awk '{$1=$1};1' | cut -d ':' -f 1 | cut -d '(' -f 1 | awk '{$1=$1};1'`
64
- AREA=`echo "$COMMIT" | cut -d '(' -f 2 | cut -d ')' -f 1 | awk '{$1=$1};1'`
77
+ HASH=$(echo "$COMMIT" | cut -d ' ' -f 1)
78
+ MESSAGE=$(echo "$COMMIT" | cut -d ':' -f 2- | awk '{$1=$1};1')
79
+ TYPE=$(echo "$COMMIT" | cut -d ' ' -f 2 | awk '{$1=$1};1' | cut -d ':' -f 1 | cut -d '(' -f 1 | awk '{$1=$1};1')
80
+ AREA=$(echo "$COMMIT" | cut -d '(' -f 2 | cut -d ')' -f 1 | awk '{$1=$1};1')
65
81
 
66
82
  if [ "$AREA" = "$COMMIT" ]; then
67
83
  AREA=""
@@ -113,9 +129,11 @@ while read -r COMMIT; do
113
129
  OTHER_SUMMARY="$OTHER_SUMMARY\n* $AREA$MESSAGE ($HASH)"
114
130
  ;;
115
131
  esac
116
- done <<< "$COMMITS"
132
+ done << EOF
133
+ $COMMITS
134
+ EOF
117
135
 
118
- if [ "$BUILD_TYPE" != "Major" -a "$BUILD_TYPE" != "Minor" ]; then
136
+ if [ "$BUILD_TYPE" != "Major" ] && [ "$BUILD_TYPE" != "Minor" ]; then
119
137
  BUILD_TYPE="Patch"
120
138
  fi
121
139
 
@@ -145,69 +163,69 @@ fi
145
163
 
146
164
  SUMMARY="$BREAK_SUMMARY$FEAT_SUMMARY$FIX_SUMMARY$PERF_SUMMARY$REFACTOR_SUMMARY$OTHER_SUMMARY"
147
165
 
148
- MAJOR=`echo "$LAST_TAG" | cut -d '.' -f 1`
149
- MINOR=`echo "$LAST_TAG" | cut -d '.' -f 2`
150
- PATCH=`echo "$LAST_TAG" | cut -d '.' -f 3`
166
+ MAJOR=$(echo "$LAST_TAG" | cut -d '.' -f 1)
167
+ MINOR=$(echo "$LAST_TAG" | cut -d '.' -f 2)
168
+ PATCH=$(echo "$LAST_TAG" | cut -d '.' -f 3)
151
169
 
152
170
  SED_FRIENDLY_LAST_TAG="$MAJOR\\.$MINOR\\.$PATCH"
153
171
 
154
172
  case $BUILD_TYPE in
155
173
  "Major")
156
- MAJOR=`expr $MAJOR + 1`
174
+ MAJOR=$((MAJOR + 1))
157
175
  MINOR=0
158
176
  PATCH=0
159
177
  ;;
160
178
  "Minor")
161
- MINOR=`expr $MINOR + 1`
179
+ MINOR=$((MINOR + 1))
162
180
  PATCH=0
163
181
  ;;
164
182
  "Patch")
165
- PATCH=`expr $PATCH + 1`
183
+ PATCH=$((PATCH + 1))
166
184
  ;;
167
185
  esac
168
186
 
169
187
  NEW_TAG="$MAJOR.$MINOR.$PATCH"
170
188
 
171
- if [ -f package.json ]; then
189
+ if [ -f version.go ]; then
190
+ sed -i.release.bak -e "s/$SED_FRIENDLY_LAST_TAG/$NEW_TAG/g" version.go
191
+ rm version.go.release.bak
192
+ MODIFIED_FILES="$MODIFIED_FILES version.go"
193
+ fi
194
+
195
+ if [ "$IS_NODE" = "true" ]; then
172
196
  sed -i.release.bak -e "s/\"version\": \"$LAST_TAG\"/\"version\": \"$NEW_TAG\"/" package.json
173
197
  rm package.json.release.bak
174
198
  MODIFIED_FILES="$MODIFIED_FILES package.json"
175
- fi
176
-
177
- if [ -f package-lock.json ]; then
178
- npm i
179
- MODIFIED_FILES="$MODIFIED_FILES package-lock.json"
180
199
 
181
- if [ -f npm-shrinkwrap.json ]; then
182
- npm shrinkwrap
183
- MODIFIED_FILES="$MODIFIED_FILES npm-shrinkwrap.json"
200
+ if [ -f package-lock.json ]; then
201
+ npm i
202
+ MODIFIED_FILES="$MODIFIED_FILES package-lock.json"
203
+
204
+ if [ -f npm-shrinkwrap.json ]; then
205
+ npm shrinkwrap
206
+ MODIFIED_FILES="$MODIFIED_FILES npm-shrinkwrap.json"
207
+ fi
208
+ elif [ -f pnpm-lock.yaml ]; then
209
+ pnpm i
210
+ MODIFIED_FILES="$MODIFIED_FILES pnpm-lock.yaml"
211
+ elif [ -f yarn.lock ]; then
212
+ yarn
213
+ MODIFIED_FILES="$MODIFIED_FILES yarn.lock"
184
214
  fi
185
- elif [ -f pnpm-lock.yaml ]; then
186
- pnpm i
187
- MODIFIED_FILES="$MODIFIED_FILES pnpm-lock.yaml"
188
- elif [ -f yarn.lock ]; then
189
- yarn
190
- MODIFIED_FILES="$MODIFIED_FILES yarn.lock"
191
215
  fi
192
216
 
193
- if [ -f setup.py ]; then
217
+ if [ "$IS_PYTHON" = "true" ]; then
194
218
  sed -i.release.bak -e "s/$SED_FRIENDLY_LAST_TAG/$NEW_TAG/g" setup.py
195
219
  rm setup.py.release.bak
196
220
  MODIFIED_FILES="$MODIFIED_FILES setup.py"
197
221
  fi
198
222
 
199
- if [ -f Cargo.toml ]; then
223
+ if [ "$IS_RUST" = "true" ]; then
200
224
  sed -i.release.bak -e "s/$SED_FRIENDLY_LAST_TAG/$NEW_TAG/g" Cargo.toml
201
225
  rm Cargo.toml.release.bak
202
226
  MODIFIED_FILES="$MODIFIED_FILES Cargo.toml"
203
227
  fi
204
228
 
205
- if [ -f version.go ]; then
206
- sed -i.release.bak -e "s/$SED_FRIENDLY_LAST_TAG/$NEW_TAG/g" version.go
207
- rm version.go.release.bak
208
- MODIFIED_FILES="$MODIFIED_FILES version.go"
209
- fi
210
-
211
229
  if [ -f CHANGELOG.md ]; then
212
230
  LOG="CHANGELOG.md"
213
231
  elif [ -f CHANGES.md ]; then
@@ -235,8 +253,9 @@ if [ "$LOG" != "" ]; then
235
253
  MODIFIED_FILES="$MODIFIED_FILES $LOG"
236
254
  fi
237
255
 
238
- GIT_FRIENDLY_SUMMARY=`echo "$SUMMARY" | sed "s/#//g" | sed "s/^ //"`
256
+ GIT_FRIENDLY_SUMMARY=$(echo "$SUMMARY" | sed "s/#//g" | sed "s/^ //")
239
257
 
258
+ # shellcheck disable=SC2086
240
259
  git add $MODIFIED_FILES
241
260
  git commit -m "release: $NEW_TAG"
242
261
 
@@ -244,5 +263,5 @@ if [ -f Cargo.toml ]; then
244
263
  cargo package
245
264
  fi
246
265
 
247
- git tag -a "$NEW_TAG" -m "`echo \"$BUILD_TYPE release $NEW_TAG\\n\\n$GIT_FRIENDLY_SUMMARY\"`"
266
+ git tag -a "$NEW_TAG" -m "$(printf '%b' "$BUILD_TYPE release $NEW_TAG\n\n$GIT_FRIENDLY_SUMMARY")"
248
267