Skip to content

Commit c688655

Browse files
authored
feat: Initial version (#1)
1 parent aa09de7 commit c688655

File tree

9 files changed

+1209
-2
lines changed

9 files changed

+1209
-2
lines changed

.github/workflows/release.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Release
2+
on:
3+
push:
4+
branches:
5+
- main
6+
7+
jobs:
8+
release:
9+
name: release
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
- uses: actions/setup-node@v2
14+
with:
15+
node-version: 12
16+
- uses: actions/cache@v2
17+
with:
18+
path: ~/.npm
19+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
20+
restore-keys: |
21+
${{ runner.os }}-node-
22+
- run: npm ci
23+
- run: npx semantic-release
24+
env:
25+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

.github/workflows/test.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Test
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
types: [opened, synchronize]
8+
9+
jobs:
10+
test_matrix:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
node_version: ["12", "14"]
15+
16+
steps:
17+
- uses: actions/checkout@v2
18+
- name: Use Node.js ${{ matrix.node_version }}
19+
uses: actions/setup-node@v2
20+
with:
21+
node-version: ${{ matrix.node_version }}
22+
- uses: actions/cache@v2
23+
with:
24+
path: ~/.npm
25+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
26+
restore-keys: |
27+
${{ runner.os }}-node-
28+
- run: npm ci
29+
- run: npm test
30+
31+
# The "test" step can be required in branch protection and does not
32+
# change each time the test matrix changes.
33+
test:
34+
runs-on: ubuntu-latest
35+
needs: test_matrix
36+
steps:
37+
- run: echo ok

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

README.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,46 @@
1-
# 🚧 WORK IN PROGRESS. See [#1](https://github.com/gr2m/octoherd-script-bump-node-version-in-workflows/pull/1) | [Preview](https://github.com/gr2m/octoherd-script-bump-node-version-in-workflows/tree/initial-version)
2-
31
# octoherd-script-bump-node-version-in-workflows
42

53
> Octoherd script to set the node-version input for actions/setup-node to the latest LTS major version
64
5+
[![@latest](https://img.shields.io/npm/v/octoherd-script-bump-node-version-in-workflows.svg)](https://www.npmjs.com/package/octoherd-script-bump-node-version-in-workflows)
6+
[![Build Status](https://github.com/gr2m/octoherd-script-bump-node-version-in-workflows/workflows/Test/badge.svg)](https://github.com/gr2m/octoherd-script-bump-node-version-in-workflows/actions?query=workflow%3ATest+branch%3Amain)
7+
8+
## Usage
9+
10+
Note: You **must** set a custom token for this script because it requires the `workflow` scope. [Create a token here](https://github.com/settings/tokens/new?scopes=workflow,repo&description=octoherd-script-bump-node-version-in-workflows)
11+
12+
Minimal usage
13+
14+
```js
15+
npx octoherd-script-bump-node-version-in-workflows -T ghp_0123456789abcdefghjklmnopqrstuvwxyzA
16+
```
17+
18+
Pass all options as CLI flags to avoid user prompts
19+
20+
```js
21+
npx octoherd-script-bump-node-version-in-workflows \
22+
-T ghp_0123456789abcdefghjklmnopqrstuvwxyzA \
23+
-R "gr2m/*" \
24+
--version 16 \
25+
--workflow release.yml
26+
```
27+
28+
The script uses [`js-yaml`](https://github.com/nodeca/js-yaml), so the updated YAML code might also include **formatting changes**. Unfortunately the parsing and then searializing using `js-yaml` **removes all comments**. But the script will only update a file if a node-version was actually changed.
29+
30+
If `node-version` is set to a value which includes a `${{ ... }}` placeholder then it's not updated.
31+
32+
I run the script against all [@octokit repositories](https://github.com/orgs/octokit/repositories) so I'm fairly confident it doesn't break anything.
33+
34+
## Options
35+
36+
| option | type | description |
37+
| ---------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
38+
| `--version` | number | Defaults to latest Node LTS major version |
39+
| `--workflow` | string | workflow file name or pattern to only update a subset of workflows. [matcher](https://github.com/sindresorhus/matcher#usage) is used for matching. Defaults to `*` |
40+
| `--octoherd-token`, `-T` | string | A personal access token ([create](https://github.com/settings/tokens/new?scopes=repo)). Script will create one if option is not set |
41+
| `--octoherd-repos`, `-R` | array of strings | One or multiple space-separated repositories in the form of `repo-owner/repo-name`. `repo-owner/*` will find all repositories for one owner. `*` will find all repositories the user has access to. Will prompt for repositories if not set |
42+
| `--octoherd-bypass-confirms` | boolean | Bypass prompts to confirm mutating requests |
43+
744
## Contributing
845

946
See [CONTRIBUTING.md](CONTRIBUTING.md)

cli.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env node
2+
3+
import { script } from "./script.js";
4+
import { run } from "@octoherd/cli/run";
5+
6+
run(script);

0 commit comments

Comments
 (0)