diff --git a/README.md b/README.md index 95d9668..1db5411 100644 --- a/README.md +++ b/README.md @@ -1,117 +1,15 @@
-# Create a JavaScript Action using TypeScript +# Validates Gradle Wrapper JARs -Use this template to bootstrap the creation of a JavaScript action.:rocket: +This action validates the checksums of [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) JAR files present in the source tree and fails if unknown Gradle Wrapper JAR files are found. -This template includes compilication support, tests, a validation workflow, publishing, and versioning guidance. +## Usage -If you are new, there's also a simpler introduction. See the [Hello World JavaScript Action](https://github.com/actions/hello-world-javascript-action) - -## Create an action from this template - -Click the `Use this Template` and provide the new repo details for your action - -## Code in Master - -Install the dependencies -```bash -$ npm install -``` - -Build the typescript -```bash -$ npm run build -``` - -Run the tests :heavy_check_mark: -```bash -$ npm test - - PASS ./index.test.js - ✓ throws invalid number (3ms) - ✓ wait 500 ms (504ms) - ✓ test runs (95ms) - -... -``` - -## Change action.yml - -The action.yml contains defines the inputs and output for your action. - -Update the action.yml with your name, description, inputs and outputs for your action. - -See the [documentation](https://help.github.com/en/articles/metadata-syntax-for-github-actions) - -## Change the Code - -Most toolkit and CI/CD operations involve async operations so the action is run in an async function. - -```javascript -import * as core from '@actions/core'; -... - -async function run() { - try { - ... - } - catch (error) { - core.setFailed(error.message); - } -} - -run() -``` - -See the [toolkit documentation](https://github.com/actions/toolkit/blob/master/README.md#packages) for the various packages. - -## Publish to a distribution branch - -Actions are run from GitHub repos. We will create a releases branch and only checkin production modules (core in this case). - -Comment out node_modules in .gitignore and create a releases/v1 branch -```bash -# comment out in distribution branches -# node_modules/ -``` - -```bash -$ git checkout -b releases/v1 -$ git commit -a -m "prod dependencies" -``` - -```bash -$ npm prune --production -$ git add node_modules -$ git commit -a -m "prod dependencies" -$ git push origin releases/v1 -``` - -Your action is now published! :rocket: - -See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) - -## Validate - -You can now validate the action by referencing the releases/v1 branch +Simply add this action to your workflow **before** running any Gradle build: ```yaml -uses: actions/typescript-action@releases/v1 -with: - milliseconds: 1000 -``` - -See the [actions tab](https://github.com/actions/javascript-action/actions) for runs of this action! :rocket: - -## Usage: - -After testing you can [create a v1 tag](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) to reference the stable and tested action - -```yaml -uses: actions/typescript-action@v1 -with: - milliseconds: 1000 +uses: eskatos/gradle-wrapper-check@releases/v1 ``` diff --git a/__tests__/validate.test.ts b/__tests__/validate.test.ts index 8e4f359..647d366 100644 --- a/__tests__/validate.test.ts +++ b/__tests__/validate.test.ts @@ -9,6 +9,9 @@ test('validates wrapper jars', async () => { ) expect(invalidWrapperJars.length).toBe(1) expect(invalidWrapperJars[0]).toEqual( - '__tests__/data/invalid/gradle-wrapper.jar' + new validate.InvalidWrapperJar( + '__tests__/data/invalid/gradle-wrapper.jar', + 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' + ) ) }) diff --git a/dist/index.js b/dist/index.js index 8de39e8..ebba283 100644 --- a/dist/index.js +++ b/dist/index.js @@ -344,7 +344,8 @@ function run() { const allowChecksums = core.getInput('allow-checksums').split(','); const invalidWrapperJars = yield validate.findInvalidWrapperJars(path.resolve('.'), allowSnapshots, allowChecksums); if (invalidWrapperJars.length > 0) { - core.setFailed(`Invalid wrapper jars ${invalidWrapperJars}`); + const list = invalidWrapperJars.map(invalid => `${invalid.checksum} ${invalid.path}`); + core.setFailed(`Found unknown Gradle Wrapper JAR files\n${list.join('\n- ')}`); } } catch (error) { @@ -953,7 +954,7 @@ function findInvalidWrapperJars(gitRepoRoot, allowSnapshots, allowChecksums) { for (const wrapperJar of wrapperJars) { const sha = yield hash.sha256File(wrapperJar); if (!validChecksums.includes(sha)) { - invalidWrapperJars.push(wrapperJar); + invalidWrapperJars.push(new InvalidWrapperJar(wrapperJar, sha)); } } return invalidWrapperJars; @@ -962,6 +963,13 @@ function findInvalidWrapperJars(gitRepoRoot, allowSnapshots, allowChecksums) { }); } exports.findInvalidWrapperJars = findInvalidWrapperJars; +class InvalidWrapperJar { + constructor(path, checksum) { + this.path = path; + this.checksum = checksum; + } +} +exports.InvalidWrapperJar = InvalidWrapperJar; /***/ }), diff --git a/src/main.ts b/src/main.ts index cccc911..18abe2c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,7 +13,12 @@ export async function run(): Promise