├── .github ├── dependabot.yml └── workflows │ ├── cron.yml │ ├── main.yml │ └── pull_request.yml ├── .gitignore ├── .npmrc ├── CHANGELOG.md ├── README.md ├── bin ├── index.js └── install.js ├── index.html ├── media ├── banner.jpg ├── headline.png ├── headline.svg ├── logo.jpg ├── logo.png └── logo.sketch ├── package.json └── test └── install.js /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: '/' 5 | schedule: 6 | interval: daily 7 | - package-ecosystem: 'github-actions' 8 | directory: '/' 9 | schedule: 10 | # Check for updates to GitHub Actions every weekday 11 | interval: 'daily' 12 | -------------------------------------------------------------------------------- /.github/workflows/cron.yml: -------------------------------------------------------------------------------- 1 | # name: cron 2 | 3 | # on: 4 | # schedule: 5 | # # Cron job every Monday at 12:00 6 | # # https://crontab.guru/every-monday 7 | # - cron: '0 0 * * MON' 8 | 9 | # jobs: 10 | # test: 11 | # runs-on: ubuntu-latest 12 | # steps: 13 | # - name: Checkout 14 | # uses: actions/checkout@v4 15 | # with: 16 | # token: ${{ secrets.GH_TOKEN }} 17 | # - name: Setup Node.js 18 | # uses: actions/setup-node@v4 19 | # with: 20 | # node-version: lts/* 21 | # - name: Setup PNPM 22 | # uses: pnpm/action-setup@v4 23 | # with: 24 | # version: latest 25 | # run_install: true 26 | # run: npm install --no-package-lock 27 | # - name: Cron 28 | # run: | 29 | # git config --global user.email ${{ secrets.GIT_EMAIL }} 30 | # git config --global user.name ${{ secrets.GIT_USERNAME }} 31 | # npm run cronjob 32 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: main 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | contributors: 10 | if: "${{ github.event.head_commit.message != 'build: contributors' }}" 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v4 15 | with: 16 | fetch-depth: 0 17 | token: ${{ secrets.GITHUB_TOKEN }} 18 | - name: Setup Node.js 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: lts/* 22 | - name: Contributors 23 | run: | 24 | git config --global user.email ${{ secrets.GIT_EMAIL }} 25 | git config --global user.name ${{ secrets.GIT_USERNAME }} 26 | npm run contributors 27 | - name: Push changes 28 | run: | 29 | git push origin ${{ github.head_ref }} 30 | 31 | release: 32 | if: | 33 | !startsWith(github.event.head_commit.message, 'chore(release):') && 34 | !startsWith(github.event.head_commit.message, 'docs:') && 35 | !startsWith(github.event.head_commit.message, 'ci:') 36 | needs: [contributors] 37 | runs-on: ubuntu-latest 38 | steps: 39 | - name: Checkout 40 | uses: actions/checkout@v4 41 | with: 42 | token: ${{ secrets.GITHUB_TOKEN }} 43 | - name: Setup Node.js 44 | uses: actions/setup-node@v4 45 | with: 46 | node-version: lts/* 47 | - name: Setup PNPM 48 | uses: pnpm/action-setup@v4 49 | with: 50 | version: latest 51 | run_install: true 52 | - name: Test 53 | run: pnpm test 54 | - name: Report 55 | run: npx c8 report --reporter=text-lcov > coverage/lcov.info 56 | - name: Coverage 57 | uses: coverallsapp/github-action@main 58 | with: 59 | github-token: ${{ secrets.GITHUB_TOKEN }} 60 | - name: Release 61 | env: 62 | GH_TOKEN: ${{ secrets.GH_TOKEN }} 63 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 64 | run: | 65 | git config --global user.email ${{ secrets.GIT_EMAIL }} 66 | git config --global user.name ${{ secrets.GIT_USERNAME }} 67 | git pull origin master 68 | pnpm run release 69 | -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: pull_request 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | test: 13 | if: github.ref != 'refs/heads/master' 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@v4 18 | with: 19 | token: ${{ secrets.GITHUB_TOKEN }} 20 | - name: Setup Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: lts/* 24 | - name: Setup PNPM 25 | uses: pnpm/action-setup@v4 26 | with: 27 | version: latest 28 | run_install: true 29 | - name: Test 30 | run: pnpm test 31 | - name: Report 32 | run: npx c8 report --reporter=text-lcov > coverage/lcov.info 33 | - name: Coverage 34 | uses: coverallsapp/github-action@main 35 | with: 36 | github-token: ${{ secrets.GITHUB_TOKEN }} 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .envrc 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | audit=false 2 | fund=false 3 | loglevel=error 4 | package-lock=false 5 | prefer-dedupe=true 6 | prefer-offline=false 7 | resolution-mode=highest 8 | save-prefix=~ 9 | save=false 10 | shamefully-hoist=true 11 | strict-peer-dependencies=false 12 | unsafe-perm=true 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### 2.0.40 (2025-05-19) 6 | 7 | ### 2.0.39 (2025-01-16) 8 | 9 | ### 2.0.38 (2024-09-03) 10 | 11 | ### 2.0.37 (2024-08-28) 12 | 13 | ### 2.0.36 (2024-05-08) 14 | 15 | ### 2.0.35 (2024-02-11) 16 | 17 | ### 2.0.34 (2024-02-09) 18 | 19 | ### 2.0.33 (2024-01-02) 20 | 21 | ### 2.0.32 (2023-12-13) 22 | 23 | ### 2.0.31 (2023-11-30) 24 | 25 | ### 2.0.30 (2023-10-24) 26 | 27 | ### 2.0.29 (2023-10-07) 28 | 29 | ### 2.0.28 (2023-09-18) 30 | 31 | ### 2.0.27 (2023-09-18) 32 | 33 | ### 2.0.26 (2023-09-05) 34 | 35 | ### 2.0.25 (2023-07-03) 36 | 37 | ### 2.0.24 (2023-03-28) 38 | 39 | 40 | ### Bug Fixes 41 | 42 | * don't run contributors as prerelease ([c787ca8](https://github.com/kikobeats/automate-release/commit/c787ca8ef2ff8dcd26bb30e8370bc75d20b3a2b2)) 43 | 44 | ### 2.0.23 (2023-01-26) 45 | 46 | 47 | ### Bug Fixes 48 | 49 | * add back coverage report ([a8a09b1](https://github.com/kikobeats/automate-release/commit/a8a09b1cc42b6ba4aa8c4e9e4d640379e8c2a2cf)) 50 | 51 | ### 2.0.22 (2022-12-29) 52 | 53 | ### 2.0.21 (2022-12-22) 54 | 55 | ### 2.0.20 (2022-12-22) 56 | 57 | ### 2.0.19 (2022-11-30) 58 | 59 | ### 2.0.18 (2022-11-29) 60 | 61 | ### 2.0.17 (2022-07-14) 62 | 63 | ### 2.0.16 (2022-05-26) 64 | 65 | ### 2.0.15 (2022-05-17) 66 | 67 | ### 2.0.14 (2022-04-18) 68 | 69 | ### 2.0.13 (2022-04-12) 70 | 71 | ### 2.0.12 (2022-04-04) 72 | 73 | ### 2.0.11 (2022-03-02) 74 | 75 | ### 2.0.10 (2022-02-25) 76 | 77 | ### 2.0.9 (2021-12-12) 78 | 79 | ### 2.0.8 (2021-10-13) 80 | 81 | ### 2.0.7 (2021-10-09) 82 | 83 | ### 2.0.6 (2021-07-29) 84 | 85 | ### 2.0.5 (2021-07-14) 86 | 87 | ### 2.0.4 (2021-07-14) 88 | 89 | ### 2.0.3 (2021-07-06) 90 | 91 | 92 | ### Bug Fixes 93 | 94 | * relative path ([40e6fe4](https://github.com/kikobeats/automate-release/commit/40e6fe460d25a783d1718283008b938d696bb72d)) 95 | 96 | ### 2.0.2 (2021-07-05) 97 | 98 | ### 2.0.1 (2021-07-04) 99 | 100 | ## [2.0.0](https://github.com/kikobeats/automate-release/compare/v1.0.10...v2.0.0) (2021-07-04) 101 | 102 | 103 | ### Features 104 | 105 | * use GitHub Actions ([190f3a2](https://github.com/kikobeats/automate-release/commit/190f3a2388b1ebefbfb4cf407f82f1b4c7b4b0f6)) 106 | 107 | ## 1.1.0 (2021-07-04) 108 | 109 | 110 | ### Features 111 | 112 | * use GitHub Actions ([190f3a2](https://github.com/kikobeats/automate-release/commit/190f3a2388b1ebefbfb4cf407f82f1b4c7b4b0f6)) 113 | 114 | ### [1.0.10](https://github.com/kikobeats/automate-release/compare/v1.0.9...v1.0.10) (2021-05-02) 115 | 116 | ### [1.0.9](https://github.com/kikobeats/automate-release/compare/v1.0.8...v1.0.9) (2021-03-23) 117 | 118 | ### [1.0.8](https://github.com/Kikobeats/automate-release/compare/v1.0.7...v1.0.8) (2021-03-18) 119 | 120 | ### [1.0.7](https://github.com/Kikobeats/automate-release/compare/v1.0.6...v1.0.7) (2021-03-18) 121 | 122 | ### [1.0.6](https://github.com/Kikobeats/automate-release/compare/v1.0.5...v1.0.6) (2021-02-08) 123 | 124 | 125 | ### Bug Fixes 126 | 127 | * add ci-publish fallback for local releases ([143de3f](https://github.com/Kikobeats/automate-release/commit/143de3fabd3a6c0f12123be7a82eb892f33c4b78)) 128 | 129 | ### [1.0.5](https://github.com/Kikobeats/automate-release/compare/v1.0.4...v1.0.5) (2021-01-20) 130 | 131 | ### [1.0.4](https://github.com/Kikobeats/automate-release/compare/v1.0.3...v1.0.4) (2020-12-25) 132 | 133 | ### [1.0.3](https://github.com/Kikobeats/automate-release/compare/v1.0.2...v1.0.3) (2020-09-30) 134 | 135 | ### [1.0.2](https://github.com/Kikobeats/automate-release/compare/v1.0.1...v1.0.2) (2020-08-11) 136 | 137 | ### [1.0.1](https://github.com/Kikobeats/automate-release/compare/v1.0.0...v1.0.1) (2020-08-11) 138 | 139 | ## [1.0.0](https://github.com/Kikobeats/automate-release/compare/v0.8.54...v1.0.0) (2020-07-03) 140 | 141 | ### [0.8.54](https://github.com/Kikobeats/automate-release/compare/v0.8.53...v0.8.54) (2020-07-02) 142 | 143 | ### [0.8.53](https://github.com/Kikobeats/automate-release/compare/v0.8.52...v0.8.53) (2020-07-02) 144 | 145 | 146 | ### Bug Fixes 147 | 148 | * use a color with better contrast ([607176c](https://github.com/Kikobeats/automate-release/commit/607176c553b24f2f7701d61f45722a8c4716f1cb)), closes [#28](https://github.com/Kikobeats/automate-release/issues/28) 149 | 150 | ### [0.8.52](https://github.com/Kikobeats/automate-release/compare/v0.8.51...v0.8.52) (2020-07-02) 151 | 152 | 153 | ### Bug Fixes 154 | 155 | * use png instead of svg for headline ([f43d76a](https://github.com/Kikobeats/automate-release/commit/f43d76a1abf08b3906d2a32d02d4c0ebc630e07c)), closes [#27](https://github.com/Kikobeats/automate-release/issues/27) 156 | 157 | ### [0.8.51](https://github.com/Kikobeats/automate-release/compare/v0.8.50...v0.8.51) (2020-07-02) 158 | 159 | 160 | ### Bug Fixes 161 | 162 | * include travis file ([121f74c](https://github.com/Kikobeats/automate-release/commit/121f74cf7d9dbfd7989ced226f5bffaab5085f28)) 163 | 164 | ### [0.8.50](https://github.com/Kikobeats/automate-release/compare/v0.8.49...v0.8.50) (2020-07-01) 165 | 166 | ### [0.8.49](https://github.com/Kikobeats/automate-release/compare/v0.8.48...v0.8.49) (2020-07-01) 167 | 168 | ### [0.8.48](https://github.com/Kikobeats/automate-release/compare/v0.8.47...v0.8.48) (2020-07-01) 169 | 170 | ### [0.8.47](https://github.com/Kikobeats/automate-release/compare/v0.8.46...v0.8.47) (2020-07-01) 171 | 172 | ### [0.8.46](https://github.com/Kikobeats/automate-release/compare/v0.8.45...v0.8.46) (2020-07-01) 173 | 174 | ### [0.8.45](https://github.com/Kikobeats/automate-release/compare/v0.8.44...v0.8.45) (2020-07-01) 175 | 176 | ### [0.8.44](https://github.com/Kikobeats/automate-release/compare/v0.8.43...v0.8.44) (2020-07-01) 177 | 178 | 179 | ### Features 180 | 181 | * add release-please ([d63c6aa](https://github.com/Kikobeats/automate-release/commit/d63c6aafacf0c0b52aebefd9b9ae24b96a4396a8)) 182 | 183 | 184 | ### Bug Fixes 185 | 186 | * identation ([497f2a8](https://github.com/Kikobeats/automate-release/commit/497f2a8a8f0e1d58ecaf5f5cc884db0dc4246bcb)) 187 | 188 | ### [0.8.43](https://github.com/Kikobeats/automate-release/compare/v0.8.41...v0.8.43) (2020-07-01) 189 | 190 | 191 | ### Bug Fixes 192 | 193 | * add missing dependency ([16d4e6b](https://github.com/Kikobeats/automate-release/commit/16d4e6b07cd2fe7572a36afa6d1b6a801ab91997)) 194 | 195 | ### [0.8.42](https://github.com/Kikobeats/automate-release/compare/v0.8.41...v0.8.42) (2020-06-30) 196 | 197 | 198 | ### Bug Fixes 199 | 200 | * add missing dependency ([16d4e6b](https://github.com/Kikobeats/automate-release/commit/16d4e6b07cd2fe7572a36afa6d1b6a801ab91997)) 201 | 202 | ### [0.8.41](https://github.com/Kikobeats/automate-release/compare/v0.8.40...v0.8.41) (2020-06-10) 203 | 204 | ### [0.8.40](https://github.com/Kikobeats/automate-release/compare/v0.8.39...v0.8.40) (2020-04-03) 205 | 206 | ### [0.8.39](https://github.com/Kikobeats/automate-release/compare/v0.8.38...v0.8.39) (2020-03-20) 207 | 208 | ### [0.8.38](https://github.com/Kikobeats/automate-release/compare/v0.8.37...v0.8.38) (2020-03-05) 209 | 210 | ### [0.8.37](https://github.com/Kikobeats/automate-release/compare/v0.8.36...v0.8.37) (2020-02-17) 211 | 212 | ### [0.8.36](https://github.com/Kikobeats/automate-release/compare/v0.8.35...v0.8.36) (2020-01-29) 213 | 214 | ### [0.8.35](https://github.com/Kikobeats/automate-release/compare/v0.8.34...v0.8.35) (2020-01-28) 215 | 216 | ### [0.8.34](https://github.com/Kikobeats/automate-release/compare/v0.8.33...v0.8.34) (2020-01-28) 217 | 218 | ### [0.8.33](https://github.com/Kikobeats/automate-release/compare/v0.8.32...v0.8.33) (2020-01-24) 219 | 220 | ### [0.8.32](https://github.com/Kikobeats/automate-release/compare/v0.8.31...v0.8.32) (2020-01-22) 221 | 222 | ### [0.8.31](https://github.com/Kikobeats/automate-release/compare/v0.8.30...v0.8.31) (2020-01-22) 223 | 224 | ### [0.8.30](https://github.com/Kikobeats/automate-release/compare/v0.8.29...v0.8.30) (2020-01-20) 225 | 226 | ### [0.8.29](https://github.com/Kikobeats/automate-release/compare/v0.8.28...v0.8.29) (2019-10-31) 227 | 228 | 229 | ### Bug Fixes 230 | 231 | * indent ([8e3a872](https://github.com/Kikobeats/automate-release/commit/8e3a8725da104ed4a05f978a7fbbe11822ce8281)) 232 | 233 | ### [0.8.28](https://github.com/Kikobeats/automate-release/compare/v0.8.27...v0.8.28) (2019-10-12) 234 | 235 | ### [0.8.27](https://github.com/Kikobeats/automate-release/compare/v0.8.26...v0.8.27) (2019-08-19) 236 | 237 | ### [0.8.26](https://github.com/Kikobeats/automate-release/compare/v0.8.25...v0.8.26) (2019-08-19) 238 | 239 | ### [0.8.25](https://github.com/Kikobeats/automate-release/compare/v0.8.24...v0.8.25) (2019-08-13) 240 | 241 | 242 | ### Bug Fixes 243 | 244 | * linters ([9bf205a](https://github.com/Kikobeats/automate-release/commit/9bf205a)) 245 | 246 | ### [0.8.24](https://github.com/Kikobeats/automate-release/compare/v0.8.23...v0.8.24) (2019-08-10) 247 | 248 | ### [0.8.23](https://github.com/Kikobeats/automate-release/compare/v0.8.22...v0.8.23) (2019-07-02) 249 | 250 | 251 | ### Bug Fixes 252 | 253 | * add missing dependnecy ([97527be](https://github.com/Kikobeats/automate-release/commit/97527be)) 254 | 255 | 256 | 257 | ### [0.8.22](https://github.com/Kikobeats/automate-release/compare/v0.8.21...v0.8.22) (2019-06-21) 258 | 259 | 260 | ### Build System 261 | 262 | * adjust preversion ([56a8b71](https://github.com/Kikobeats/automate-release/commit/56a8b71)) 263 | * update ncu flag ([5ec69cb](https://github.com/Kikobeats/automate-release/commit/5ec69cb)) 264 | 265 | 266 | 267 | ### [0.8.21](https://github.com/Kikobeats/automate-release/compare/v0.8.20...v0.8.21) (2019-06-19) 268 | 269 | 270 | ### Bug Fixes 271 | 272 | * typo ([4485e5c](https://github.com/Kikobeats/automate-release/commit/4485e5c)) 273 | 274 | 275 | 276 | ### [0.8.20](https://github.com/Kikobeats/automate-release/compare/v0.8.19...v0.8.20) (2019-06-19) 277 | 278 | 279 | ### Build System 280 | 281 | * setup default git settings ([6dcea6a](https://github.com/Kikobeats/automate-release/commit/6dcea6a)) 282 | 283 | 284 | 285 | ### [0.8.19](https://github.com/Kikobeats/automate-release/compare/v0.8.18...v0.8.19) (2019-05-20) 286 | 287 | 288 | ### Build System 289 | 290 | * remove unnecessary keys ([29e7da5](https://github.com/Kikobeats/automate-release/commit/29e7da5)) 291 | 292 | 293 | 294 | ### [0.8.18](https://github.com/Kikobeats/automate-release/compare/v0.8.17...v0.8.18) (2019-05-20) 295 | 296 | 297 | 298 | ### [0.8.17](https://github.com/Kikobeats/automate-release/compare/v0.8.16...v0.8.17) (2019-05-20) 299 | 300 | 301 | ### Build System 302 | 303 | * change git-authors-cli position ([0a23528](https://github.com/Kikobeats/automate-release/commit/0a23528)) 304 | * update dependencies ([f7436eb](https://github.com/Kikobeats/automate-release/commit/f7436eb)) 305 | 306 | 307 | 308 | ### [0.8.16](https://github.com/Kikobeats/automate-release/compare/v0.8.15...v0.8.16) (2019-05-20) 309 | 310 | 311 | ### Build System 312 | 313 | * tweaks ([620944a](https://github.com/Kikobeats/automate-release/commit/620944a)) 314 | 315 | 316 | 317 | ## [0.8.15](https://github.com/Kikobeats/automate-release/compare/v0.8.14...v0.8.15) (2019-04-18) 318 | 319 | 320 | 321 | 322 | ## [0.8.14](https://github.com/Kikobeats/automate-release/compare/v0.8.13...v0.8.14) (2019-04-03) 323 | 324 | 325 | ### Bug Fixes 326 | 327 | * rename sh into bash ([1a7ca31](https://github.com/Kikobeats/automate-release/commit/1a7ca31)) 328 | 329 | 330 | 331 | 332 | ## [0.8.13](https://github.com/Kikobeats/automate-release/compare/v0.8.10...v0.8.13) (2019-01-25) 333 | 334 | 335 | ### Bug Fixes 336 | 337 | * add continous release section ([797ecd1](https://github.com/Kikobeats/automate-release/commit/797ecd1)), closes [#2](https://github.com/Kikobeats/automate-release/issues/2) 338 | * add coverage script under test ([134a488](https://github.com/Kikobeats/automate-release/commit/134a488)) 339 | * add github release info ([9933aa8](https://github.com/Kikobeats/automate-release/commit/9933aa8)) 340 | * define test matrix ([41ed5c0](https://github.com/Kikobeats/automate-release/commit/41ed5c0)) 341 | * ensure checkout branch ([b2cc9a2](https://github.com/Kikobeats/automate-release/commit/b2cc9a2)), closes [#issuecomment-403235131](https://github.com/Kikobeats/automate-release/issues/issuecomment-403235131) 342 | 343 | 344 | 345 | 346 | ## [0.8.12](https://github.com/Kikobeats/automate-release/compare/v0.8.10...v0.8.12) (2018-11-27) 347 | 348 | 349 | ### Bug Fixes 350 | 351 | * add continous release section ([797ecd1](https://github.com/Kikobeats/automate-release/commit/797ecd1)), closes [#2](https://github.com/Kikobeats/automate-release/issues/2) 352 | * add coverage script under test ([134a488](https://github.com/Kikobeats/automate-release/commit/134a488)) 353 | * add github release info ([9933aa8](https://github.com/Kikobeats/automate-release/commit/9933aa8)) 354 | * define test matrix ([41ed5c0](https://github.com/Kikobeats/automate-release/commit/41ed5c0)) 355 | 356 | 357 | 358 | 359 | ## [0.8.11](https://github.com/Kikobeats/automate-release/compare/v0.8.10...v0.8.11) (2018-10-29) 360 | 361 | 362 | ### Bug Fixes 363 | 364 | * add continous release section ([797ecd1](https://github.com/Kikobeats/automate-release/commit/797ecd1)), closes [#2](https://github.com/Kikobeats/automate-release/issues/2) 365 | * add coverage script under test ([134a488](https://github.com/Kikobeats/automate-release/commit/134a488)) 366 | * define test matrix ([41ed5c0](https://github.com/Kikobeats/automate-release/commit/41ed5c0)) 367 | 368 | 369 | 370 | 371 | ## [0.8.10](https://github.com/Kikobeats/automate-release/compare/v0.8.7...v0.8.10) (2018-10-27) 372 | 373 | 374 | ### Bug Fixes 375 | 376 | * improve script ([17f4cba](https://github.com/Kikobeats/automate-release/commit/17f4cba)) 377 | 378 | 379 | 380 | 381 | ## [0.8.9](https://github.com/Kikobeats/automate-release/compare/v0.8.7...v0.8.9) (2018-10-26) 382 | 383 | 384 | 385 | 386 | ## [0.8.8](https://github.com/Kikobeats/automate-release/compare/v0.8.7...v0.8.8) (2018-10-26) 387 | 388 | 389 | 390 | 391 | ## [0.8.8](https://github.com/Kikobeats/automate-release/compare/v0.8.7...v0.8.8) (2018-10-26) 392 | 393 | 394 | 395 | 396 | ## [0.8.7](https://github.com/Kikobeats/automate-release/compare/v0.8.6...v0.8.7) (2018-10-26) 397 | 398 | 399 | 400 | 401 | ## [0.8.6](https://github.com/Kikobeats/automate-release/compare/v0.8.5...v0.8.6) (2018-10-25) 402 | 403 | 404 | 405 | 406 | ## [0.8.5](https://github.com/Kikobeats/automate-release/compare/v0.8.4...v0.8.5) (2018-10-25) 407 | 408 | 409 | 410 | 411 | ## [0.8.3](https://github.com/Kikobeats/automate-release/compare/v0.8.2...v0.8.3) (2018-10-25) 412 | 413 | 414 | ### Bug Fixes 415 | 416 | * remove debug info ([259aba0](https://github.com/Kikobeats/automate-release/commit/259aba0)) 417 | 418 | 419 | 420 | 421 | ## [0.8.1](https://github.com/Kikobeats/automate-release/compare/v0.7.5...v0.8.1) (2018-10-25) 422 | 423 | 424 | 425 | 426 | ## [0.7.4](https://github.com/Kikobeats/automatic-release/compare/v0.7.3...v0.7.4) (2018-10-14) 427 | 428 | 429 | ### Bug Fixes 430 | 431 | * copy dot path properly ([cb29603](https://github.com/Kikobeats/automatic-release/commit/cb29603)) 432 | 433 | 434 | 435 | 436 | ## [0.7.3](https://github.com/Kikobeats/automatic-release/compare/v0.7.2...v0.7.3) (2018-10-13) 437 | 438 | 439 | ### Bug Fixes 440 | 441 | * show readme under help ([01498bc](https://github.com/Kikobeats/automatic-release/commit/01498bc)) 442 | 443 | 444 | 445 | 446 | ## [0.7.2](https://github.com/Kikobeats/automatic-release/compare/v0.7.1...v0.7.2) (2018-10-13) 447 | 448 | 449 | ### Bug Fixes 450 | 451 | * add posinstallation guidelines ([77b68dd](https://github.com/Kikobeats/automatic-release/commit/77b68dd)) 452 | 453 | 454 | 455 | 456 | ## [0.7.1](https://github.com/Kikobeats/automatic-release/compare/v0.7.0...v0.7.1) (2018-10-13) 457 | 458 | 459 | ### Bug Fixes 460 | 461 | * add description ([46834d3](https://github.com/Kikobeats/automatic-release/commit/46834d3)) 462 | * setup shell ([ac66fab](https://github.com/Kikobeats/automatic-release/commit/ac66fab)) 463 | 464 | 465 | 466 | 467 | # [0.7.0](https://github.com/Kikobeats/automatic-release/compare/v0.6.1...v0.7.0) (2018-10-13) 468 | 469 | 470 | ### Features 471 | 472 | * add cli ([63ad6e2](https://github.com/Kikobeats/automatic-release/commit/63ad6e2)) 473 | 474 | 475 | 476 | 477 | ## [0.6.1](https://github.com/Kikobeats/automatic-release/compare/v0.6.0...v0.6.1) (2018-10-12) 478 | 479 | 480 | 481 | 482 | # [0.6.0](https://github.com/Kikobeats/automatic-release/compare/v0.5.5...v0.6.0) (2018-10-12) 483 | 484 | 485 | ### Features 486 | 487 | * better explanation about changelog content ([1f0a487](https://github.com/Kikobeats/automatic-release/commit/1f0a487)), closes [#3](https://github.com/Kikobeats/automatic-release/issues/3) 488 | 489 | 490 | 491 | 492 | ## [0.5.5](https://github.com/Kikobeats/automatic-release/compare/v0.5.4...v0.5.5) (2018-10-12) 493 | 494 | A new version come out 🎉 495 | 496 | This new version has mainly related with improve the scripts we use. 497 | 498 | ### Bug Fixes 499 | 500 | * setup project name ([1b7e7af](https://github.com/Kikobeats/automatic-release/commit/1b7e7af)) 501 | 502 | 503 | 504 | 505 | ## [0.5.4](https://github.com/Kikobeats/automatic-release/compare/v0.5.3...v0.5.4) (2018-10-11) 506 | 507 | A better version come out 💥 508 | 509 | We fixed the gramar of project, describing better the concepts. 510 | 511 | ### Bug Fixes 512 | 513 | * grammar ([da526be](https://github.com/Kikobeats/automatic-release/commit/da526be)) 514 | 515 | 516 | 517 | 518 | ## [0.5.3](https://github.com/Kikobeats/automatic-release/compare/v0.5.2...v0.5.3) (2018-10-10) 519 | 520 | 521 | 522 | 523 | ## [0.5.2](https://github.com/Kikobeats/automatic-release/compare/v0.5.1...v0.5.2) (2018-10-10) 524 | 525 | 526 | ### Bug Fixes 527 | 528 | * define author ([3e4c322](https://github.com/Kikobeats/automatic-release/commit/3e4c322)) 529 | 530 | 531 | 532 | 533 | ## [0.5.1](https://github.com/Kikobeats/automatic-release/compare/v0.5.0...v0.5.1) (2018-10-10) 534 | 535 | 536 | ### Bug Fixes 537 | 538 | * commit authors before release ([78fc4bb](https://github.com/Kikobeats/automatic-release/commit/78fc4bb)) 539 | 540 | 541 | 542 | 543 | # [0.5.0](https://github.com/Kikobeats/automatic-release/compare/v0.4.2...v0.5.0) (2018-10-10) 544 | 545 | 546 | ### Features 547 | 548 | * add git-authors ([c786e3e](https://github.com/Kikobeats/automatic-release/commit/c786e3e)) 549 | 550 | 551 | 552 | 553 | ## [0.4.2](https://github.com/Kikobeats/automatic-release/compare/v0.4.1...v0.4.2) (2018-10-10) 554 | 555 | 556 | 557 | 558 | ## [0.4.1](https://github.com/Kikobeats/automatic-release/compare/v0.4.0...v0.4.1) (2018-10-10) 559 | 560 | 561 | 562 | 563 | # [0.4.0](https://github.com/Kikobeats/automatic-release/compare/v0.3.0...v0.4.0) (2018-10-10) 564 | 565 | 566 | ### Features 567 | 568 | * add communication section ([649b822](https://github.com/Kikobeats/automatic-release/commit/649b822)) 569 | 570 | 571 | 572 | 573 | # [0.3.0](https://github.com/Kikobeats/automatic-release/compare/v0.2.1...v0.3.0) (2018-10-10) 574 | 575 | 576 | ### Features 577 | 578 | * add github release ([9c7a69e](https://github.com/Kikobeats/automatic-release/commit/9c7a69e)) 579 | 580 | 581 | 582 | 583 | ## [0.2.1](https://github.com/Kikobeats/automatic-release/compare/v0.2.0...v0.2.1) (2018-10-10) 584 | 585 | 586 | 587 | 588 | # [0.2.0](https://github.com/Kikobeats/automatic-release/compare/v0.1.0...v0.2.0) (2018-10-10) 589 | 590 | 591 | ### Features 592 | 593 | * add postrelease script ([01de80f](https://github.com/Kikobeats/automatic-release/commit/01de80f)) 594 | 595 | 596 | 597 | 598 | # 0.1.0 (2018-10-10) 599 | 600 | 601 | ### Features 602 | 603 | * add standard-version ([3ecccd1](https://github.com/Kikobeats/automatic-release/commit/3ecccd1)) 604 | * first commit ([02ee2ce](https://github.com/Kikobeats/automatic-release/commit/02ee2ce)) 605 | * write next version section ([b2f3456](https://github.com/Kikobeats/automatic-release/commit/b2f3456)) 606 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Awesome 3 |
4 |
5 |
6 |
7 | 8 | > **TL;DR** Run `npx automate-release` 🎉. 9 | 10 | A release might seem just an irrelevant number, but here you'll find why you should be using it. 11 | 12 | Release software is part of our developer day, but we tend to run it manually just we remember it, being a source of errors. 13 | 14 | Nowadays, we have the best tools to automate this task so let's use them. 15 | 16 | Your next release will be automatically doing: 17 | 18 | - [Follow a Git Commit Convention](#follow-a-git-commit-convention) 19 | * [Commit Message Guidelines](#commit-message-guidelines) 20 | * [Examples of Git Commits](#examples-of-git-commits) 21 | - [Determinate Next Version Based on History](#determinate-next-version-based-on-history) 22 | * [GitHub Release](#github-release) 23 | - [Continous Release](#continous-release) 24 | * [Release on CI/CD](#release-on-cicd) 25 | - [Communicate Your Changes](#communicate-your-changes) 26 | * [Be Notified](#be-notified) 27 | * [Publishing the Latest Release](#publishing-the-latest-release) 28 | 29 | Let me show you how to do it. 30 | 31 | ## Follow a Git Commit Convention 32 | 33 | > **Tip**: You can use a different [convention configuration](https://github.com/marionebl/commitlint#shared-configuration). 34 | 35 | Using a `git commit` convention for our git messages help us all the messages of the contributors have a homogeneous appearance. 36 | 37 | In addition, because we are going to use the same pattern for all the git messages, we can use that for do extra things, like for example, classify commits correctly at `CHANGELOG.md` or determinate what is the next version to release based on commit history. 38 | 39 | For ensuring all git messages follow the same pattern, We are going to use [commitlint](https://github.com/marionebl/commitlint) for linting git messages. 40 | 41 | ![](https://i.imgur.com/nZOE5Vu.png) 42 | 43 | You can't do the commit until the format is valid: It'll force you to follow a strict format into your git messages. 44 | 45 | (Actually, you could bypass this step using the `--no-verify` option, but avoid do that). 46 | 47 | That's also a thing applicable to Pull Request title: 48 | 49 | ![](https://i.imgur.com/xfikguc.png) 50 | 51 | In that case, integrate [commitlintbot](https://github.com/paulirish/commitlintbot) with your git project to have the same effect. 52 | 53 | ### Commit Message Guidelines 54 | 55 | > **Tip**: Read more on [Angular contribution guideline](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#type). 56 | 57 | The git message must have a **type**. It could be: 58 | 59 | * **build**: Changes that affect the build system or external dependencies. 60 | * **ci**: Changes to our CI configuration files and scripts. 61 | * **docs**: Documentation only changes. 62 | * **feat**: A new feature. 63 | * **fix**: A bug fix. 64 | * **perf**: A code change that improves performance. 65 | * **refactor**: A code change that neither fixes a bug or adds a feature. 66 | * **style**: Changes that do not affect the meaning of the code. 67 | * **test**: Adding missing tests or correcting existing tests. 68 | 69 | I know. really, I know. 70 | 71 | The first time you use a convention for commits, you might think that it's **over-engineering**. 72 | 73 | But, after use it a bit, it's **very helpful**, It makes easy read all the commits quickly or just focus in a determinate type of commits. 74 | 75 | ### Examples of Git Commits 76 | 77 | All the following examples are usual and valid: 78 | 79 | ```bash 80 | build: update dependencies 81 | ci: setup travis credentials 82 | refactor: move scripts 83 | fix: use user agent provided by parameters 84 | test: update snapshots 85 | style: use space instead of tabs 86 | ``` 87 | 88 | ## Determinate Next Version Based on History 89 | 90 | Now that we have a `git commit` convention, we can jump in the next thing, that will make our first release 🎉. 91 | 92 | For do that, we are going to use [standard-version](https://github.com/conventional-changelog/standard-version). After reading your git history and it will determinate what is the next release version. 93 | 94 | ![](https://i.imgur.com/nmfLfkC.png) 95 | 96 | [standard-version](https://github.com/conventional-changelog/standard-version) will determinate automagically the next version to release based on your `git history`. 97 | 98 | For do that it will consider: 99 | 100 | **patches** (`1.0.0` → `1.0.1`) 101 | 102 | ```bash 103 | git commit -a -m "fix(parsing): fixed a bug in our parser" 104 | ``` 105 | 106 | **features** (`1.0.0` → `1.1.0`) 107 | 108 | ```bash 109 | git commit -a -m "feat(parser): we now have a parser \o/" 110 | ``` 111 | 112 | **breaking changes** (`1.0.0` → `2.0.0`) 113 | 114 | ```bash 115 | git commit -a -m "feat(new-parser): introduces a new parsing library 116 | BREAKING CHANGE: new library does not support foo-construct" 117 | ``` 118 | 119 | A release has some tasks associated: 120 | 121 | - 👉 Increment the version at `package.json`. 122 | - 👉 Generate a new entry in your `CHANGELOG.md` 123 | - 👉 Create a new specific git commit for the released version. 124 | - 👉 Create a new `git tag` with the version associated. 125 | 126 | In addition, GitHub usernames (`@kikobeats`) and issue references (`#133`) will be swapped out for the 127 | appropriate URLs in your `CHANGELOG.md`. 128 | 129 | A good practice is to put the command as `npm run release` script for performing the action. 130 | 131 | ```json 132 | { 133 | "scripts": { 134 | "release": "standard-version", 135 | "release:tags": "git push --follow-tags origin master", 136 | "postrelease": "npm run release:tags" 137 | } 138 | } 139 | ``` 140 | 141 | As you can see, we associated push things into your master remote branch. 142 | 143 | So, next time you want to do a release, just type `npm run release` (make sense, uh). 144 | 145 | ![](https://i.imgur.com/AmOfMV9.png) 146 | 147 | The first time you released a version, a `CHANGELOG.md` will be created. Otherwise, it will append just the new released version: 148 | 149 | ![](https://i.imgur.com/B2CoFsG.png) 150 | 151 | The `CHANGELOG.md` follows [Keep a Changelog](https://keepachangelog.com) specification. 152 | 153 | 154 | You can write into it and your words will be preserved between versions. 155 | 156 | ![](https://i.imgur.com/QOse3tZ.png) 157 | 158 | ### GitHub Release 159 | 160 | GitHub (and GitLab too) has a special place into the repository for reflecting releases: 161 | 162 | ![](https://i.imgur.com/butKsZ6.png) 163 | 164 | When you push a `git tag`, it will appear here, but nothing more. No text or changes associated. 165 | 166 | Now that we are generating a `CHANGELOG.md` it would be interesting to reflect the changes associated with each version. 167 | 168 | We can use a tool called [releaser-tools](https://github.com/conventional-changelog/releaser-tools) who will do exactly that, leaving our release section pretty 💅. 169 | 170 | > **Note**: Remember to setup [`CONVENTIONAL_GITHUB_RELEASER_TOKEN`](https://github.com/conventional-changelog/releaser-tools/tree/master/packages/conventional-github-releaser#setup-token-for-cli). You can use [direnv](https://direnv.net/) for declaring local development variables. 171 | 172 | We need to associate it as part of our `postrelease` script: 173 | 174 | ```json 175 | { 176 | "scripts": { 177 | "postrelease": "npm run release:tags && npm run release:github", 178 | "release": "standard-version", 179 | "release:github": "github-generate-release", 180 | "release:tags": "git push --follow-tags origin master" 181 | } 182 | } 183 | ``` 184 | 185 | Next time, your metadata will be associated with the GitHub/GitLab release 🎉 186 | 187 | ![](https://i.imgur.com/4Am8xIx.png) 188 | 189 | ## Continous Release 190 | 191 | The human behavior in a release process should be very limited: we, as humans, just want to be the trigger for the next release. 192 | 193 | The rest of the things should be work in a boring and automated way 🤖. 194 | 195 | ![](https://github.com/googleapis/release-please/raw/master/screen.png) 196 | 197 | Every commit that land on the `master` branch will mean that a new version of your software could be released. 198 | 199 | For projects with a lot of activity, the condition could be a little bit more relaxed; In that case, check [release-please](https://github.com/googleapis/release-please), where you have more control about when the next release will be shipped. 200 | 201 | ### Release on CI/CD 202 | 203 | The right place to do this is as part of our **Continuous Integration**. 204 | 205 | ![](https://i.imgur.com/go4oZjJ.png) 206 | 207 | Every time a new Pull Request is merged in our `master` branch, our **Tests** will be executed to determinate if all is fine (nothing new here). 208 | 209 | But now, after that, The **Release** stage will be executed, that will perform our `npm run release` command to complete the action. 210 | 211 |
212 | 213 |
Have you noticed that? It's the sweet sensation of automation.
214 |
215 |
216 | 217 | That's specially helpful as maintainer if you are already have automated part of the process that uses services such as [Greenkeeper](https://greenkeeper.io) to keep your dependencies up to date, that create PR very often if you have many dependencies or they are updated very often (something that happens all the time at NPM ecosystem). 218 | 219 | You can see [.travis.yml](/.travis.yml) to see how it is done or just run `npx automate-release` to install it in your project folder. 220 | 221 | ## Communicate Your Changes 222 | 223 | Releases also is a way to establish a compromise with your audience in order to know what's news. 224 | 225 | ![](https://i.imgur.com/5vDpWJM.jpg) 226 | 227 | From [now](https://twitter.com/github/status/1067483957573373952) GitHub brings the ability to subscribe to any repository for getting notifications related with new versions. 228 | 229 | ### Be Notified 230 | 231 | Alternatively, you can get release information from different sources and connect it with third party services using different ways. 232 | 233 | ![](https://i.imgur.com/uXLNGtp.png) 234 | 235 | Just you need to recover the latest release and publish it on other channel using an intermediate service that connects it over Twitter, Slack or where your audience is. 236 | 237 | #### GitHub 238 | 239 | - [GitHub API](https://api.github.com/repos/Kikobeats/automate-release/releases/latest) – For recovering information per `owner_name/repo_name`. 240 | - [GitHub RSS Feed](https://github.com/Kikobeats/automate-release/releases.atom) – For getting atom feed per `owner_name/repo_name`. 241 | 242 | ### Publishing the Latest Release 243 | 244 | #### Services 245 | 246 | - [release-notifier!](https://release-notifier.com/) - GitHub Release Notifications via E-mail or webhook (e.g. Rocket.chat channel) 247 | - [CodeRelease.io](https://coderelease.io) - GitHub Release Notifications on Your E-mail. 248 | - [IFTTT](https://ifttt.com) / [Zapier](https://zapier.com/) – For declaring using *RSS-to-Slack* recipes or similar. 249 | - [@github_releases_notify_bot](https://telegram.me/github_releases_notify_bot) – Telegram bot to receive release notifications. 250 | 251 | #### Self-Hosted 252 | 253 | - [tom.js.org](http://tom.js.org/) – A tiny microservice for sending notifications using multiple channels (Slack/Twitter/Telegram/Email). 254 | -------------------------------------------------------------------------------- /bin/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict' 4 | 5 | const { red } = require('picocolors') 6 | const fs = require('fs-extra') 7 | const path = require('path') 8 | 9 | const rootPkg = require('../package.json') 10 | 11 | require('update-notifier')({ pkg: rootPkg }).notify() 12 | 13 | const cli = require('meow')({ 14 | pkg: rootPkg, 15 | help: fs.readFileSync(path.resolve(__dirname, '..', 'README.md'), 'utf-8'), 16 | flags: { 17 | cwd: { 18 | type: 'string', 19 | default: process.cwd() 20 | } 21 | } 22 | }) 23 | 24 | const processError = error => 25 | console.log(red(error.message || error)) || process.exit(1) 26 | 27 | require('./install')(cli.flags).catch(processError) 28 | -------------------------------------------------------------------------------- /bin/install.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict' 4 | 5 | const { white, red, gray } = require('picocolors') 6 | const { get, forEach, set } = require('lodash') 7 | const jsonFuture = require('json-future') 8 | const link = require('terminal-link') 9 | const fs = require('fs-extra') 10 | const path = require('path') 11 | 12 | const rootPkg = require('../package.json') 13 | 14 | require('update-notifier')({ pkg: rootPkg }).notify() 15 | 16 | const processError = error => 17 | console.log(red(error.message || error)) || process.exit(1) 18 | 19 | module.exports = async ({ cwd } = {}) => { 20 | const pkgPath = path.join(cwd, 'package.json') 21 | 22 | if (!fs.existsSync(pkgPath)) { 23 | return processError({ 24 | message: 'First, you need to initialize `package.json`.' 25 | }) 26 | } 27 | 28 | const pkg = require(pkgPath) 29 | 30 | forEach( 31 | [ 32 | 'commitlint.extends', 33 | 'devDependencies', 34 | 'lint-staged', 35 | 'nano-staged', 36 | 'scripts.contributors', 37 | 'scripts.postinstall', 38 | 'scripts.postrelease', 39 | 'scripts.prerelease', 40 | 'scripts.release:github', 41 | 'scripts.release:tags', 42 | 'scripts.release', 43 | 'scripts.test', 44 | 'scripts.update:check', 45 | 'scripts.update', 46 | 'simple-git-hooks' 47 | ], 48 | key => { 49 | const value = get(rootPkg, key) 50 | set(pkg, key, value) 51 | } 52 | ) 53 | 54 | jsonFuture.save(pkgPath, pkg) 55 | 56 | await Promise.all([fs.copy(path.resolve(__dirname, '../.github'), '.github')]) 57 | 58 | console.log() 59 | console.log( 60 | gray( 61 | ` ${white( 62 | link( 63 | 'automate-release', 64 | 'https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/' 65 | ) 66 | )} installed 🎉.` 67 | ) 68 | ) 69 | console.log() 70 | console.log( 71 | gray( 72 | ` Remember to setup on ${white( 73 | link( 74 | 'GitHub', 75 | 'https://docs.github.com/en/actions/reference/encrypted-secrets' 76 | ) 77 | )}:` 78 | ) 79 | ) 80 | console.log() 81 | console.log( 82 | gray( 83 | ` - \`${white( 84 | link( 85 | 'GIT_USERNAME', 86 | 'https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git' 87 | ) 88 | )}\`` 89 | ) 90 | ) 91 | console.log( 92 | gray( 93 | ` - \`${white( 94 | link( 95 | 'GIT_EMAIL', 96 | 'https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address' 97 | ) 98 | )}\`` 99 | ) 100 | ) 101 | console.log( 102 | gray( 103 | ` - \`${white( 104 | link('NPM_TOKEN', 'https://github.com/bahmutov/ci-publish#how-to-use') 105 | )}\`` 106 | ) 107 | ) 108 | console.log() 109 | 110 | console.log(gray(' And write permissions for GitHub Actions:\n')) 111 | 112 | console.log( 113 | gray( 114 | ' - Actions > General > Workflow Permissions > Read and write permissions\n' 115 | ) 116 | ) 117 | 118 | console.log(gray(` Run \`${white('npm install')}\` to finish it.`)) 119 | } 120 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Automate Release – No more manual work in your software releases. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 115 |
116 | 117 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /media/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kikobeats/automate-release/d8b9d9e74487956e6d783b1eedc4e4989743076c/media/banner.jpg -------------------------------------------------------------------------------- /media/headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kikobeats/automate-release/d8b9d9e74487956e6d783b1eedc4e4989743076c/media/headline.png -------------------------------------------------------------------------------- /media/headline.svg: -------------------------------------------------------------------------------- 1 | headlineCreated with Sketch.AUTOMATE RELEASE -------------------------------------------------------------------------------- /media/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kikobeats/automate-release/d8b9d9e74487956e6d783b1eedc4e4989743076c/media/logo.jpg -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kikobeats/automate-release/d8b9d9e74487956e6d783b1eedc4e4989743076c/media/logo.png -------------------------------------------------------------------------------- /media/logo.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kikobeats/automate-release/d8b9d9e74487956e6d783b1eedc4e4989743076c/media/logo.sketch -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "automate-release", 3 | "description": "No more manual work in your software releases.", 4 | "homepage": "https://github.com/kikobeats/automate-release", 5 | "version": "2.0.40", 6 | "main": "index.js", 7 | "bin": { 8 | "automate-release": "bin/index.js" 9 | }, 10 | "author": { 11 | "email": "josefrancisco.verdu@gmail.com", 12 | "name": "Kiko Beats" 13 | }, 14 | "contributors": [ 15 | { 16 | "name": "Andreas Treubert", 17 | "email": "berti92@users.noreply.github.com" 18 | }, 19 | { 20 | "name": "Joseba Legarreta", 21 | "email": "josebalega@gmail.com" 22 | } 23 | ], 24 | "repository": { 25 | "type": "git", 26 | "url": "git+https://github.com/kikobeats/automate-release.git" 27 | }, 28 | "bugs": { 29 | "url": "https://github.com/kikobeats/automate-release/issues" 30 | }, 31 | "keywords": [ 32 | "automate", 33 | "automatic", 34 | "changelog", 35 | "commitlint", 36 | "conventional", 37 | "release", 38 | "standard-version" 39 | ], 40 | "dependencies": { 41 | "fs-extra": "~11.3.0", 42 | "json-future": "~2.2.4", 43 | "lodash": "~4.17.19", 44 | "meow": "~9.0.0", 45 | "picocolors": "~1.1.0", 46 | "terminal-link": "~2.1.1", 47 | "update-notifier": "~5.1.0" 48 | }, 49 | "devDependencies": { 50 | "@commitlint/cli": "latest", 51 | "@commitlint/config-conventional": "latest", 52 | "@ksmithut/prettier-standard": "latest", 53 | "ava": "latest", 54 | "c8": "latest", 55 | "ci-publish": "latest", 56 | "finepack": "latest", 57 | "git-authors-cli": "latest", 58 | "github-generate-release": "latest", 59 | "nano-staged": "latest", 60 | "simple-git-hooks": "latest", 61 | "standard": "latest", 62 | "standard-markdown": "latest", 63 | "standard-version": "latest" 64 | }, 65 | "files": [ 66 | "README.md", 67 | "bin" 68 | ], 69 | "scripts": { 70 | "contributors": "(npx git-authors-cli && npx finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true", 71 | "lint": "standard-markdown && standard", 72 | "postrelease": "npm run release:tags && npm run release:github && (ci-publish || npm publish --access=public)", 73 | "pretest": "npm run lint", 74 | "release": "standard-version -a", 75 | "release:github": "github-generate-release", 76 | "release:tags": "git push --follow-tags origin HEAD:master", 77 | "test": "c8 ava" 78 | }, 79 | "license": "MIT", 80 | "commitlint": { 81 | "extends": [ 82 | "@commitlint/config-conventional" 83 | ], 84 | "rules": { 85 | "body-max-line-length": [ 86 | 0 87 | ] 88 | } 89 | }, 90 | "nano-staged": { 91 | "*.js": [ 92 | "prettier-standard", 93 | "standard --fix" 94 | ], 95 | "*.md": [ 96 | "standard-markdown" 97 | ], 98 | "package.json": [ 99 | "finepack" 100 | ] 101 | }, 102 | "simple-git-hooks": { 103 | "commit-msg": "npx commitlint --edit", 104 | "pre-commit": "npx nano-staged" 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /test/install.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const install = require('../bin/install') 4 | const test = require('ava') 5 | 6 | test("throw an error if package.json doesn't exist", async t => { 7 | const error = await t.throwsAsync(install()) 8 | t.is(error.name, 'TypeError') 9 | }) 10 | --------------------------------------------------------------------------------