mirror of
				https://github.com/softprops/action-gh-release.git
				synced 2025-11-03 21:29:24 +00:00 
			
		
		
		
	Compare commits
	
		
			17 Commits
		
	
	
		
			retry-api
			...
			ncc-packag
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e6a400341a | ||
| 
						 | 
					5733db0089 | ||
| 
						 | 
					7060560593 | ||
| 
						 | 
					7b2fd2c223 | ||
| 
						 | 
					e7bba17971 | ||
| 
						 | 
					03caddd29a | ||
| 
						 | 
					62eba970e0 | ||
| 
						 | 
					7a7960d4c7 | ||
| 
						 | 
					d651ef48cb | ||
| 
						 | 
					37ae175992 | ||
| 
						 | 
					d31b44251d | ||
| 
						 | 
					0e414c630a | ||
| 
						 | 
					9a2319ecaf | ||
| 
						 | 
					7363c39621 | ||
| 
						 | 
					742de9953a | ||
| 
						 | 
					56b4c8a8ef | ||
| 
						 | 
					723bed634e | 
							
								
								
									
										20
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							@@ -8,19 +8,19 @@ jobs:
 | 
				
			|||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      # https://github.com/actions/checkout
 | 
					      # https://github.com/actions/checkout
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@master
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          fetch-depth: 1
 | 
					 | 
				
			||||||
      - name: Install
 | 
					      - name: Install
 | 
				
			||||||
        run: npm ci
 | 
					        run: npm ci
 | 
				
			||||||
      - name: Build
 | 
					      - name: Build
 | 
				
			||||||
        run: npm run build
 | 
					        run: npm run build
 | 
				
			||||||
      - name: Test
 | 
					      - name: Test
 | 
				
			||||||
        run: npm run test
 | 
					        run: npm run test
 | 
				
			||||||
      - name: "check for uncommitted changes"
 | 
					      - name: Format
 | 
				
			||||||
        # Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
 | 
					        run: npm run fmtcheck
 | 
				
			||||||
        run: |
 | 
					      # - name: "check for uncommitted changes"
 | 
				
			||||||
          git diff --exit-code --stat -- . ':!node_modules' \
 | 
					      #   # Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
 | 
				
			||||||
          || (echo "##[error] found changed files after build. please 'npm run build && npm run format'" \
 | 
					      #   run: |
 | 
				
			||||||
                  "and check in all changes" \
 | 
					      #     git diff --exit-code --stat -- . ':!node_modules' \
 | 
				
			||||||
              && exit 1)
 | 
					      #     || (echo "##[error] found changed files after build. please 'npm run build && npm run fmt'" \
 | 
				
			||||||
 | 
					      #             "and check in all changes" \
 | 
				
			||||||
 | 
					      #         && exit 1)
 | 
				
			||||||
@@ -1,3 +1,8 @@
 | 
				
			|||||||
 | 
					## 0.1.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Steps can now access the url of releases with the `url` output of this Action [#28](https://github.com/softprops/action-gh-release/pull/28)
 | 
				
			||||||
 | 
					* Added basic GitHub API retry support to manage API turbulance [#26](https://github.com/softprops/action-gh-release/pull/26)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 0.1.3
 | 
					## 0.1.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Fixed where `with: body_path` was not being used in generated GitHub releases
 | 
					* Fixed where `with: body_path` was not being used in generated GitHub releases
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							@@ -23,10 +23,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<br />
 | 
					<br />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
> **⚠️ Note:** To use this action, you must have access to the [GitHub Actions](https://github.com/features/actions) feature. GitHub Actions are currently only available in public beta. You can [apply for the GitHub Actions beta here](https://github.com/features/actions/signup/).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 🤸 Usage
 | 
					## 🤸 Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 🚥 Limit releases to pushes to tags
 | 
					### 🚥 Limit releases to pushes to tags
 | 
				
			||||||
@@ -77,7 +73,6 @@ jobs:
 | 
				
			|||||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
### ⬆️ Uploading release assets
 | 
					### ⬆️ Uploading release assets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can can configure a number of options for your
 | 
					You can can configure a number of options for your
 | 
				
			||||||
@@ -188,6 +183,17 @@ The following are optional as `step.with` keys
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
💡When providing a `body` and `body_path` at the same time, `body_path` will be attempted first, then falling back on `body` if the path can not be read from.
 | 
					💡When providing a `body` and `body_path` at the same time, `body_path` will be attempted first, then falling back on `body` if the path can not be read from.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### outputs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following outputs can be accessed via `${{ steps.<step-id>.outputs }}` from this action
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| Name        | Type    | Description                                                     |
 | 
				
			||||||
 | 
					|-------------|---------|-----------------------------------------------------------------|
 | 
				
			||||||
 | 
					| `url`       | String  | Github.com URL for the release                                  |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### environment variables
 | 
					#### environment variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following are *required* as `step.env` keys
 | 
					The following are *required* as `step.env` keys
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ outputs:
 | 
				
			|||||||
    description: 'URL to the Release HTML Page'
 | 
					    description: 'URL to the Release HTML Page'
 | 
				
			||||||
runs:
 | 
					runs:
 | 
				
			||||||
  using: 'node12'
 | 
					  using: 'node12'
 | 
				
			||||||
  main: 'lib/main.js'
 | 
					  main: 'dist/index.js'
 | 
				
			||||||
branding:
 | 
					branding:
 | 
				
			||||||
  color: 'green'
 | 
					  color: 'green'
 | 
				
			||||||
  icon: 'package'
 | 
					  icon: 'package'
 | 
				
			||||||
							
								
								
									
										1
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										129
									
								
								lib/github.js
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								lib/github.js
									
									
									
									
									
								
							@@ -1,129 +0,0 @@
 | 
				
			|||||||
"use strict";
 | 
					 | 
				
			||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
					 | 
				
			||||||
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
					 | 
				
			||||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
					 | 
				
			||||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
					 | 
				
			||||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
					 | 
				
			||||||
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
					 | 
				
			||||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
var __asyncValues = (this && this.__asyncValues) || function (o) {
 | 
					 | 
				
			||||||
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
 | 
					 | 
				
			||||||
    var m = o[Symbol.asyncIterator], i;
 | 
					 | 
				
			||||||
    return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
 | 
					 | 
				
			||||||
    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
 | 
					 | 
				
			||||||
    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					 | 
				
			||||||
const util_1 = require("./util");
 | 
					 | 
				
			||||||
const fs_1 = require("fs");
 | 
					 | 
				
			||||||
const mime_1 = require("mime");
 | 
					 | 
				
			||||||
const path_1 = require("path");
 | 
					 | 
				
			||||||
class GitHubReleaser {
 | 
					 | 
				
			||||||
    constructor(github) {
 | 
					 | 
				
			||||||
        this.github = github;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    getReleaseByTag(params) {
 | 
					 | 
				
			||||||
        return this.github.repos.getReleaseByTag(params);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    createRelease(params) {
 | 
					 | 
				
			||||||
        return this.github.repos.createRelease(params);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    allReleases(params) {
 | 
					 | 
				
			||||||
        const updatedParams = Object.assign({ per_page: 100 }, params);
 | 
					 | 
				
			||||||
        return this.github.paginate.iterator(this.github.repos.listReleases.endpoint.merge(updatedParams));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
exports.GitHubReleaser = GitHubReleaser;
 | 
					 | 
				
			||||||
exports.asset = (path) => {
 | 
					 | 
				
			||||||
    return {
 | 
					 | 
				
			||||||
        name: path_1.basename(path),
 | 
					 | 
				
			||||||
        mime: exports.mimeOrDefault(path),
 | 
					 | 
				
			||||||
        size: fs_1.lstatSync(path).size,
 | 
					 | 
				
			||||||
        file: fs_1.readFileSync(path)
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.mimeOrDefault = (path) => {
 | 
					 | 
				
			||||||
    return mime_1.getType(path) || "application/octet-stream";
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.upload = (gh, url, path) => __awaiter(void 0, void 0, void 0, function* () {
 | 
					 | 
				
			||||||
    let { name, size, mime, file } = exports.asset(path);
 | 
					 | 
				
			||||||
    console.log(`⬆️ Uploading ${name}...`);
 | 
					 | 
				
			||||||
    return yield gh.repos.uploadReleaseAsset({
 | 
					 | 
				
			||||||
        url,
 | 
					 | 
				
			||||||
        headers: {
 | 
					 | 
				
			||||||
            "content-length": size,
 | 
					 | 
				
			||||||
            "content-type": mime
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        name,
 | 
					 | 
				
			||||||
        file
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
exports.release = (config, releaser) => __awaiter(void 0, void 0, void 0, function* () {
 | 
					 | 
				
			||||||
    var e_1, _a;
 | 
					 | 
				
			||||||
    const [owner, repo] = config.github_repository.split("/");
 | 
					 | 
				
			||||||
    const tag = config.github_ref.replace("refs/tags/", "");
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
        // you can't get a an existing draft by tag
 | 
					 | 
				
			||||||
        // so we must find one in the list of all releases
 | 
					 | 
				
			||||||
        if (config.input_draft) {
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                for (var _b = __asyncValues(releaser.allReleases({
 | 
					 | 
				
			||||||
                    owner,
 | 
					 | 
				
			||||||
                    repo
 | 
					 | 
				
			||||||
                })), _c; _c = yield _b.next(), !_c.done;) {
 | 
					 | 
				
			||||||
                    const response = _c.value;
 | 
					 | 
				
			||||||
                    let release = response.data.find(release => release.tag_name === tag);
 | 
					 | 
				
			||||||
                    if (release) {
 | 
					 | 
				
			||||||
                        return release;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
 | 
					 | 
				
			||||||
            finally {
 | 
					 | 
				
			||||||
                try {
 | 
					 | 
				
			||||||
                    if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                finally { if (e_1) throw e_1.error; }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        let release = yield releaser.getReleaseByTag({
 | 
					 | 
				
			||||||
            owner,
 | 
					 | 
				
			||||||
            repo,
 | 
					 | 
				
			||||||
            tag
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        return release.data;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    catch (error) {
 | 
					 | 
				
			||||||
        if (error.status === 404) {
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                const tag_name = tag;
 | 
					 | 
				
			||||||
                const name = config.input_name || tag;
 | 
					 | 
				
			||||||
                const body = util_1.releaseBody(config);
 | 
					 | 
				
			||||||
                const draft = config.input_draft;
 | 
					 | 
				
			||||||
                const prerelease = config.input_prerelease;
 | 
					 | 
				
			||||||
                console.log(`👩🏭 Creating new GitHub release for tag ${tag_name}...`);
 | 
					 | 
				
			||||||
                let release = yield releaser.createRelease({
 | 
					 | 
				
			||||||
                    owner,
 | 
					 | 
				
			||||||
                    repo,
 | 
					 | 
				
			||||||
                    tag_name,
 | 
					 | 
				
			||||||
                    name,
 | 
					 | 
				
			||||||
                    body,
 | 
					 | 
				
			||||||
                    draft,
 | 
					 | 
				
			||||||
                    prerelease
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
                return release.data;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (error) {
 | 
					 | 
				
			||||||
                // presume a race with competing metrix runs
 | 
					 | 
				
			||||||
                console.log(`⚠️ GitHub release failed with status: ${error.status}, retrying...`);
 | 
					 | 
				
			||||||
                return exports.release(config, releaser);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
            console.log(`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`);
 | 
					 | 
				
			||||||
            throw error;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
							
								
								
									
										53
									
								
								lib/main.js
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								lib/main.js
									
									
									
									
									
								
							@@ -1,53 +0,0 @@
 | 
				
			|||||||
"use strict";
 | 
					 | 
				
			||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
					 | 
				
			||||||
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
					 | 
				
			||||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
					 | 
				
			||||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
					 | 
				
			||||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
					 | 
				
			||||||
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
					 | 
				
			||||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					 | 
				
			||||||
const util_1 = require("./util");
 | 
					 | 
				
			||||||
const github_1 = require("./github");
 | 
					 | 
				
			||||||
const core_1 = require("@actions/core");
 | 
					 | 
				
			||||||
const github_2 = require("@actions/github");
 | 
					 | 
				
			||||||
const process_1 = require("process");
 | 
					 | 
				
			||||||
function run() {
 | 
					 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            const config = util_1.parseConfig(process_1.env);
 | 
					 | 
				
			||||||
            if (!util_1.isTag(config.github_ref)) {
 | 
					 | 
				
			||||||
                throw new Error(`⚠️ GitHub Releases requires a tag`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            github_2.GitHub.plugin(require("@octokit/plugin-throttling"));
 | 
					 | 
				
			||||||
            const gh = new github_2.GitHub(config.github_token, {
 | 
					 | 
				
			||||||
                onRateLimit: (retryAfter, options) => {
 | 
					 | 
				
			||||||
                    console.warn(`Request quota exhausted for request ${options.method} ${options.url}`);
 | 
					 | 
				
			||||||
                    if (options.request.retryCount === 0) {
 | 
					 | 
				
			||||||
                        // only retries once
 | 
					 | 
				
			||||||
                        console.log(`Retrying after ${retryAfter} seconds!`);
 | 
					 | 
				
			||||||
                        return true;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                onAbuseLimit: (retryAfter, options) => {
 | 
					 | 
				
			||||||
                    // does not retry, only logs a warning
 | 
					 | 
				
			||||||
                    console.warn(`Abuse detected for request ${options.method} ${options.url}`);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            let rel = yield github_1.release(config, new github_1.GitHubReleaser(gh));
 | 
					 | 
				
			||||||
            if (config.input_files) {
 | 
					 | 
				
			||||||
                util_1.paths(config.input_files).forEach((path) => __awaiter(this, void 0, void 0, function* () {
 | 
					 | 
				
			||||||
                    yield github_1.upload(gh, rel.upload_url, path);
 | 
					 | 
				
			||||||
                }));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            console.log(`🎉 Release ready at ${rel.html_url}`);
 | 
					 | 
				
			||||||
            core_1.setOutput("url", rel.html_url);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        catch (error) {
 | 
					 | 
				
			||||||
            core_1.setFailed(error.message);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
run();
 | 
					 | 
				
			||||||
							
								
								
									
										43
									
								
								lib/util.js
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								lib/util.js
									
									
									
									
									
								
							@@ -1,43 +0,0 @@
 | 
				
			|||||||
"use strict";
 | 
					 | 
				
			||||||
var __importStar = (this && this.__importStar) || function (mod) {
 | 
					 | 
				
			||||||
    if (mod && mod.__esModule) return mod;
 | 
					 | 
				
			||||||
    var result = {};
 | 
					 | 
				
			||||||
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
 | 
					 | 
				
			||||||
    result["default"] = mod;
 | 
					 | 
				
			||||||
    return result;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					 | 
				
			||||||
const glob = __importStar(require("glob"));
 | 
					 | 
				
			||||||
const fs_1 = require("fs");
 | 
					 | 
				
			||||||
exports.releaseBody = (config) => {
 | 
					 | 
				
			||||||
    return (config.input_body ||
 | 
					 | 
				
			||||||
        (config.input_body_path &&
 | 
					 | 
				
			||||||
            fs_1.readFileSync(config.input_body_path).toString("utf8")));
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.parseInputFiles = (files) => {
 | 
					 | 
				
			||||||
    return files.split(/\r?\n/).reduce((acc, line) => acc
 | 
					 | 
				
			||||||
        .concat(line.split(","))
 | 
					 | 
				
			||||||
        .filter(pat => pat)
 | 
					 | 
				
			||||||
        .map(pat => pat.trim()), []);
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.parseConfig = (env) => {
 | 
					 | 
				
			||||||
    return {
 | 
					 | 
				
			||||||
        github_token: env.GITHUB_TOKEN || "",
 | 
					 | 
				
			||||||
        github_ref: env.GITHUB_REF || "",
 | 
					 | 
				
			||||||
        github_repository: env.GITHUB_REPOSITORY || "",
 | 
					 | 
				
			||||||
        input_name: env.INPUT_NAME,
 | 
					 | 
				
			||||||
        input_body: env.INPUT_BODY,
 | 
					 | 
				
			||||||
        input_body_path: env.INPUT_BODY_PATH,
 | 
					 | 
				
			||||||
        input_files: exports.parseInputFiles(env.INPUT_FILES || ""),
 | 
					 | 
				
			||||||
        input_draft: env.INPUT_DRAFT === "true",
 | 
					 | 
				
			||||||
        input_prerelease: env.INPUT_PRERELEASE == "true"
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.paths = (patterns) => {
 | 
					 | 
				
			||||||
    return patterns.reduce((acc, pattern) => {
 | 
					 | 
				
			||||||
        return acc.concat(glob.sync(pattern).filter(path => fs_1.lstatSync(path).isFile()));
 | 
					 | 
				
			||||||
    }, []);
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
exports.isTag = (ref) => {
 | 
					 | 
				
			||||||
    return ref.startsWith("refs/tags/");
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
							
								
								
									
										157
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										157
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,20 +1,20 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "action-gh-release",
 | 
					  "name": "action-gh-release",
 | 
				
			||||||
  "version": "0.1.3",
 | 
					  "version": "0.1.4",
 | 
				
			||||||
  "lockfileVersion": 1,
 | 
					  "lockfileVersion": 1,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/core": {
 | 
					    "@actions/core": {
 | 
				
			||||||
      "version": "1.1.0",
 | 
					      "version": "1.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-KKpo3xzo0Zsikni9tbOsEQkxZBGDsYSJZNkTvmo0gPSXrc98TBOcdTvKwwjitjkjHkreTggWdB1ACiAFVgsuzA=="
 | 
					      "integrity": "sha512-ZKdyhlSlyz38S6YFfPnyNgCDZuAF2T0Qv5eHflNWytPS8Qjvz39bZFMry9Bb/dpSnqWcNeav5yM2CTYpJeY+Dw=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@actions/github": {
 | 
					    "@actions/github": {
 | 
				
			||||||
      "version": "1.1.0",
 | 
					      "version": "2.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==",
 | 
					      "integrity": "sha512-sNpZ5dJyJyfJIO5lNYx8r/Gha4Tlm8R0MLO2cBkGdOnAAEn3t1M/MHVcoBhY/VPfjGVe5RNAUPz+6INrViiUPA==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@octokit/graphql": "^2.0.1",
 | 
					        "@octokit/graphql": "^4.3.1",
 | 
				
			||||||
        "@octokit/rest": "^16.15.0"
 | 
					        "@octokit/rest": "^16.15.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -400,10 +400,11 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/endpoint": {
 | 
					    "@octokit/endpoint": {
 | 
				
			||||||
      "version": "5.3.5",
 | 
					      "version": "5.5.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.3.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-f8KqzIrnzPLiezDsZZPB+K8v8YSv6aKFl7eOu59O46lmlW4HagWl1U6NWl6LmT8d1w7NsKBI3paVtzcnRGO1gw==",
 | 
					      "integrity": "sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@octokit/types": "^2.0.0",
 | 
				
			||||||
        "is-plain-object": "^3.0.0",
 | 
					        "is-plain-object": "^3.0.0",
 | 
				
			||||||
        "universal-user-agent": "^4.0.0"
 | 
					        "universal-user-agent": "^4.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
@@ -420,41 +421,35 @@
 | 
				
			|||||||
          "version": "4.0.0",
 | 
					          "version": "4.0.0",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
 | 
				
			||||||
          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
 | 
					          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "universal-user-agent": {
 | 
					 | 
				
			||||||
          "version": "4.0.0",
 | 
					 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
 | 
					 | 
				
			||||||
          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
 | 
					 | 
				
			||||||
          "requires": {
 | 
					 | 
				
			||||||
            "os-name": "^3.1.0"
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/graphql": {
 | 
					    "@octokit/graphql": {
 | 
				
			||||||
      "version": "2.1.3",
 | 
					      "version": "4.3.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-XoXJqL2ondwdnMIW3wtqJWEwcBfKk37jO/rYkoxNPEVeLBDGsGO1TCWggrAlq3keGt/O+C/7VepXnukUxwt5vA==",
 | 
					      "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@octokit/request": "^5.0.0",
 | 
					        "@octokit/request": "^5.3.0",
 | 
				
			||||||
        "universal-user-agent": "^2.0.3"
 | 
					        "@octokit/types": "^2.0.0",
 | 
				
			||||||
 | 
					        "universal-user-agent": "^4.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/plugin-throttling": {
 | 
					    "@octokit/plugin-throttling": {
 | 
				
			||||||
      "version": "2.6.0",
 | 
					      "version": "2.7.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-2.6.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-2.7.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-E0xQrcD36sVEeBhut6j9nWX38vm/1LKMRSUqjvJ/mqGLXfHr4jYMsrR3I/nT2QC0eJL1/SKMt7zxOt7pZiFhDA==",
 | 
					      "integrity": "sha512-08CKNFCpSpmOEAQBn6/MR8zbJgjP4+bplNUJbKlqJSNBHTO1NdsDHzBD4VeFYopOo7rBEySng4WifxNVaQ5bVw==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "bottleneck": "^2.15.3"
 | 
					        "bottleneck": "^2.15.3"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/request": {
 | 
					    "@octokit/request": {
 | 
				
			||||||
      "version": "5.1.0",
 | 
					      "version": "5.3.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-I15T9PwjFs4tbWyhtFU2Kq7WDPidYMvRB7spmxoQRZfxSmiqullG+Nz+KbSmpkfnlvHwTr1e31R5WReFRKMXjg==",
 | 
					      "integrity": "sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@octokit/endpoint": "^5.1.0",
 | 
					        "@octokit/endpoint": "^5.5.0",
 | 
				
			||||||
        "@octokit/request-error": "^1.0.1",
 | 
					        "@octokit/request-error": "^1.0.1",
 | 
				
			||||||
 | 
					        "@octokit/types": "^2.0.0",
 | 
				
			||||||
        "deprecation": "^2.0.0",
 | 
					        "deprecation": "^2.0.0",
 | 
				
			||||||
        "is-plain-object": "^3.0.0",
 | 
					        "is-plain-object": "^3.0.0",
 | 
				
			||||||
        "node-fetch": "^2.3.0",
 | 
					        "node-fetch": "^2.3.0",
 | 
				
			||||||
@@ -474,32 +469,25 @@
 | 
				
			|||||||
          "version": "4.0.0",
 | 
					          "version": "4.0.0",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
 | 
				
			||||||
          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
 | 
					          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "universal-user-agent": {
 | 
					 | 
				
			||||||
          "version": "4.0.0",
 | 
					 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
 | 
					 | 
				
			||||||
          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
 | 
					 | 
				
			||||||
          "requires": {
 | 
					 | 
				
			||||||
            "os-name": "^3.1.0"
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/request-error": {
 | 
					    "@octokit/request-error": {
 | 
				
			||||||
      "version": "1.0.4",
 | 
					      "version": "1.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.0.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig==",
 | 
					      "integrity": "sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@octokit/types": "^2.0.0",
 | 
				
			||||||
        "deprecation": "^2.0.0",
 | 
					        "deprecation": "^2.0.0",
 | 
				
			||||||
        "once": "^1.4.0"
 | 
					        "once": "^1.4.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/rest": {
 | 
					    "@octokit/rest": {
 | 
				
			||||||
      "version": "16.28.9",
 | 
					      "version": "16.36.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.28.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.36.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-IKGnX+Tvzt7XHhs8f4ajqxyJvYAMNX5nWfoJm4CQj8LZToMiaJgutf5KxxpxoC3y5w7JTJpW5rnWnF4TsIvCLA==",
 | 
					      "integrity": "sha512-zoZj7Ya4vWBK4fjTwK2Cnmu7XBB1p9ygSvTk2TthN6DVJXM4hQZQoAiknWFLJWSTix4dnA3vuHtjPZbExYoCZA==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@octokit/request": "^5.0.0",
 | 
					        "@octokit/request": "^5.2.0",
 | 
				
			||||||
        "@octokit/request-error": "^1.0.2",
 | 
					        "@octokit/request-error": "^1.0.2",
 | 
				
			||||||
        "atob-lite": "^2.0.0",
 | 
					        "atob-lite": "^2.0.0",
 | 
				
			||||||
        "before-after-hook": "^2.0.0",
 | 
					        "before-after-hook": "^2.0.0",
 | 
				
			||||||
@@ -511,16 +499,14 @@
 | 
				
			|||||||
        "octokit-pagination-methods": "^1.1.0",
 | 
					        "octokit-pagination-methods": "^1.1.0",
 | 
				
			||||||
        "once": "^1.4.0",
 | 
					        "once": "^1.4.0",
 | 
				
			||||||
        "universal-user-agent": "^4.0.0"
 | 
					        "universal-user-agent": "^4.0.0"
 | 
				
			||||||
      },
 | 
					      }
 | 
				
			||||||
      "dependencies": {
 | 
					    },
 | 
				
			||||||
        "universal-user-agent": {
 | 
					    "@octokit/types": {
 | 
				
			||||||
          "version": "4.0.0",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.2.tgz",
 | 
				
			||||||
          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
 | 
					      "integrity": "sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ==",
 | 
				
			||||||
          "requires": {
 | 
					      "requires": {
 | 
				
			||||||
            "os-name": "^3.1.0"
 | 
					        "@types/node": ">= 8"
 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/babel__core": {
 | 
					    "@types/babel__core": {
 | 
				
			||||||
@@ -607,20 +593,14 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/jest": {
 | 
					    "@types/jest": {
 | 
				
			||||||
      "version": "24.0.18",
 | 
					      "version": "24.0.25",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.25.tgz",
 | 
				
			||||||
      "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
 | 
					      "integrity": "sha512-hnP1WpjN4KbGEK4dLayul6lgtys6FPz0UfxMeMQCv0M+sTnzN3ConfiO72jHgLxl119guHgI8gLqDOrRLsyp2g==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@types/jest-diff": "*"
 | 
					        "jest-diff": "^24.3.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/jest-diff": {
 | 
					 | 
				
			||||||
      "version": "20.0.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "@types/mime": {
 | 
					    "@types/mime": {
 | 
				
			||||||
      "version": "2.0.1",
 | 
					      "version": "2.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
 | 
				
			||||||
@@ -634,10 +614,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/node": {
 | 
					    "@types/node": {
 | 
				
			||||||
      "version": "12.7.4",
 | 
					      "version": "12.12.24",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.24.tgz",
 | 
				
			||||||
      "integrity": "sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==",
 | 
					      "integrity": "sha512-1Ciqv9pqwVtW6FsIUKSZNB82E5Cu1I2bBTj1xuIHXLe/1zYLl3956Nbhg2MzSYHVfl9/rmanjbQIb7LibfCnug=="
 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/stack-utils": {
 | 
					    "@types/stack-utils": {
 | 
				
			||||||
      "version": "1.0.1",
 | 
					      "version": "1.0.1",
 | 
				
			||||||
@@ -660,6 +639,12 @@
 | 
				
			|||||||
      "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
 | 
					      "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@zeit/ncc": {
 | 
				
			||||||
 | 
					      "version": "0.21.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.21.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-RUMdvVK/w78oo+yBjruZltt0kJXYar2un/1bYQ2LuHG7GmFVm+QjxzEmySwREctaJdEnBvlMdUNWd9hXHxEI3g==",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "abab": {
 | 
					    "abab": {
 | 
				
			||||||
      "version": "2.0.1",
 | 
					      "version": "2.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz",
 | 
				
			||||||
@@ -2358,9 +2343,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "glob": {
 | 
					    "glob": {
 | 
				
			||||||
      "version": "7.1.4",
 | 
					      "version": "7.1.6",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
 | 
				
			||||||
      "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
 | 
					      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "fs.realpath": "^1.0.0",
 | 
					        "fs.realpath": "^1.0.0",
 | 
				
			||||||
        "inflight": "^1.0.4",
 | 
					        "inflight": "^1.0.4",
 | 
				
			||||||
@@ -4042,9 +4027,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "prettier": {
 | 
					    "prettier": {
 | 
				
			||||||
      "version": "1.18.2",
 | 
					      "version": "1.19.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
 | 
					      "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "pretty-format": {
 | 
					    "pretty-format": {
 | 
				
			||||||
@@ -4845,9 +4830,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "ts-jest": {
 | 
					    "ts-jest": {
 | 
				
			||||||
      "version": "24.1.0",
 | 
					      "version": "24.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==",
 | 
					      "integrity": "sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "bs-logger": "0.x",
 | 
					        "bs-logger": "0.x",
 | 
				
			||||||
@@ -4904,9 +4889,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "typescript": {
 | 
					    "typescript": {
 | 
				
			||||||
      "version": "3.6.3",
 | 
					      "version": "3.7.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
 | 
					      "integrity": "sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "typescript-formatter": {
 | 
					    "typescript-formatter": {
 | 
				
			||||||
@@ -4943,11 +4928,11 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "universal-user-agent": {
 | 
					    "universal-user-agent": {
 | 
				
			||||||
      "version": "2.1.0",
 | 
					      "version": "4.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==",
 | 
					      "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "os-name": "^3.0.0"
 | 
					        "os-name": "^3.1.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "unset-value": {
 | 
					    "unset-value": {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								package.json
									
									
									
									
									
								
							@@ -1,13 +1,14 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "action-gh-release",
 | 
					  "name": "action-gh-release",
 | 
				
			||||||
  "version": "0.1.3",
 | 
					  "version": "0.1.4",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "description": "GitHub Action for creating GitHub Releases",
 | 
					  "description": "GitHub Action for creating GitHub Releases",
 | 
				
			||||||
  "main": "lib/main.js",
 | 
					  "main": "lib/main.js",
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "build": "tsc",
 | 
					    "build": "ncc build src/main.ts --minify",
 | 
				
			||||||
    "test": "jest",
 | 
					    "test": "jest",
 | 
				
			||||||
    "fmt": "prettier --write 'src/**/*.ts' '__tests__/**/*.ts'"
 | 
					    "fmt": "prettier --write 'src/**/*.ts' '__tests__/**/*.ts'",
 | 
				
			||||||
 | 
					    "fmtcheck": "prettier --check 'src/**/*.ts' '__tests__/**/*.ts'"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "repository": {
 | 
					  "repository": {
 | 
				
			||||||
    "type": "git",
 | 
					    "type": "git",
 | 
				
			||||||
@@ -19,22 +20,23 @@
 | 
				
			|||||||
  "author": "softprops",
 | 
					  "author": "softprops",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/core": "^1.1.0",
 | 
					    "@actions/core": "^1.2.0",
 | 
				
			||||||
    "@actions/github": "^1.1.0",
 | 
					    "@actions/github": "^2.0.0",
 | 
				
			||||||
    "@octokit/plugin-throttling": "^2.6.0",
 | 
					    "@octokit/plugin-throttling": "^2.7.1",
 | 
				
			||||||
    "glob": "^7.1.4",
 | 
					    "glob": "^7.1.6",
 | 
				
			||||||
    "mime": "^2.4.4"
 | 
					    "mime": "^2.4.4"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/glob": "^7.1.1",
 | 
					    "@types/glob": "^7.1.1",
 | 
				
			||||||
    "@types/jest": "^24.0.18",
 | 
					    "@types/jest": "^24.0.25",
 | 
				
			||||||
    "@types/mime": "^2.0.1",
 | 
					    "@types/mime": "^2.0.1",
 | 
				
			||||||
    "@types/node": "^12.7.4",
 | 
					    "@types/node": "^12.12.24",
 | 
				
			||||||
 | 
					    "@zeit/ncc": "^0.21.0",
 | 
				
			||||||
    "jest": "^24.9.0",
 | 
					    "jest": "^24.9.0",
 | 
				
			||||||
    "jest-circus": "^24.9.0",
 | 
					    "jest-circus": "^24.9.0",
 | 
				
			||||||
    "prettier": "1.18.2",
 | 
					    "prettier": "1.19.1",
 | 
				
			||||||
    "ts-jest": "^24.1.0",
 | 
					    "ts-jest": "^24.2.0",
 | 
				
			||||||
    "typescript": "^3.6.3",
 | 
					    "typescript": "^3.7.4",
 | 
				
			||||||
    "typescript-formatter": "^7.2.2"
 | 
					    "typescript-formatter": "^7.2.2"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,6 @@ git checkout -b releases/$1 # If this branch already exists, omit the -b flag
 | 
				
			|||||||
rm -rf node_modules
 | 
					rm -rf node_modules
 | 
				
			||||||
sed -i '/node_modules/d' .gitignore # Bash command that removes node_modules from .gitignore
 | 
					sed -i '/node_modules/d' .gitignore # Bash command that removes node_modules from .gitignore
 | 
				
			||||||
npm install --production
 | 
					npm install --production
 | 
				
			||||||
git add node_modules .gitignore
 | 
					git add node_modules -f .gitignore
 | 
				
			||||||
git commit -m node_modules
 | 
					git commit -m node_modules
 | 
				
			||||||
git push origin releases/$1
 | 
					git push origin releases/$1
 | 
				
			||||||
@@ -12,9 +12,12 @@ export interface ReleaseAsset {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface Release {
 | 
					export interface Release {
 | 
				
			||||||
 | 
					  id: number;
 | 
				
			||||||
  upload_url: string;
 | 
					  upload_url: string;
 | 
				
			||||||
  html_url: string;
 | 
					  html_url: string;
 | 
				
			||||||
  tag_name: string;
 | 
					  tag_name: string;
 | 
				
			||||||
 | 
					  body: string;
 | 
				
			||||||
 | 
					  target_commitish: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface Releaser {
 | 
					export interface Releaser {
 | 
				
			||||||
@@ -34,6 +37,18 @@ export interface Releaser {
 | 
				
			|||||||
    prerelease: boolean | undefined;
 | 
					    prerelease: boolean | undefined;
 | 
				
			||||||
  }): Promise<{ data: Release }>;
 | 
					  }): Promise<{ data: Release }>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  updateRelease(params: {
 | 
				
			||||||
 | 
					    owner: string;
 | 
				
			||||||
 | 
					    repo: string;
 | 
				
			||||||
 | 
					    release_id: number;
 | 
				
			||||||
 | 
					    tag_name: string;
 | 
				
			||||||
 | 
					    target_commitish: string;
 | 
				
			||||||
 | 
					    name: string;
 | 
				
			||||||
 | 
					    body: string | undefined;
 | 
				
			||||||
 | 
					    draft: boolean | undefined;
 | 
				
			||||||
 | 
					    prerelease: boolean | undefined;
 | 
				
			||||||
 | 
					  }): Promise<{ data: Release }>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  allReleases(params: {
 | 
					  allReleases(params: {
 | 
				
			||||||
    owner: string;
 | 
					    owner: string;
 | 
				
			||||||
    repo: string;
 | 
					    repo: string;
 | 
				
			||||||
@@ -66,6 +81,20 @@ export class GitHubReleaser implements Releaser {
 | 
				
			|||||||
    return this.github.repos.createRelease(params);
 | 
					    return this.github.repos.createRelease(params);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  updateRelease(params: {
 | 
				
			||||||
 | 
					    owner: string;
 | 
				
			||||||
 | 
					    repo: string;
 | 
				
			||||||
 | 
					    release_id: number;
 | 
				
			||||||
 | 
					    tag_name: string;
 | 
				
			||||||
 | 
					    target_commitish: string;
 | 
				
			||||||
 | 
					    name: string;
 | 
				
			||||||
 | 
					    body: string | undefined;
 | 
				
			||||||
 | 
					    draft: boolean | undefined;
 | 
				
			||||||
 | 
					    prerelease: boolean | undefined;
 | 
				
			||||||
 | 
					  }): Promise<{ data: Release }> {
 | 
				
			||||||
 | 
					    return this.github.repos.updateRelease(params);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  allReleases(params: {
 | 
					  allReleases(params: {
 | 
				
			||||||
    owner: string;
 | 
					    owner: string;
 | 
				
			||||||
    repo: string;
 | 
					    repo: string;
 | 
				
			||||||
@@ -128,21 +157,41 @@ export const release = async (
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    let release = await releaser.getReleaseByTag({
 | 
					    let existingRelease = await releaser.getReleaseByTag({
 | 
				
			||||||
      owner,
 | 
					      owner,
 | 
				
			||||||
      repo,
 | 
					      repo,
 | 
				
			||||||
      tag
 | 
					      tag
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const release_id = existingRelease.data.id;
 | 
				
			||||||
 | 
					    const target_commitish = existingRelease.data.target_commitish;
 | 
				
			||||||
 | 
					    const tag_name = tag;
 | 
				
			||||||
 | 
					    const name = config.input_name || tag;
 | 
				
			||||||
 | 
					    const body = `${existingRelease.data.body}\n${releaseBody(config)}`;
 | 
				
			||||||
 | 
					    const draft = config.input_draft;
 | 
				
			||||||
 | 
					    const prerelease = config.input_prerelease;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const release = await releaser.updateRelease({
 | 
				
			||||||
 | 
					      owner,
 | 
				
			||||||
 | 
					      repo,
 | 
				
			||||||
 | 
					      release_id,
 | 
				
			||||||
 | 
					      tag_name,
 | 
				
			||||||
 | 
					      target_commitish,
 | 
				
			||||||
 | 
					      name,
 | 
				
			||||||
 | 
					      body,
 | 
				
			||||||
 | 
					      draft,
 | 
				
			||||||
 | 
					      prerelease
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
    return release.data;
 | 
					    return release.data;
 | 
				
			||||||
  } catch (error) {
 | 
					  } catch (error) {
 | 
				
			||||||
    if (error.status === 404) {
 | 
					    if (error.status === 404) {
 | 
				
			||||||
 | 
					      const tag_name = tag;
 | 
				
			||||||
 | 
					      const name = config.input_name || tag;
 | 
				
			||||||
 | 
					      const body = releaseBody(config);
 | 
				
			||||||
 | 
					      const draft = config.input_draft;
 | 
				
			||||||
 | 
					      const prerelease = config.input_prerelease;
 | 
				
			||||||
 | 
					      console.log(`👩🏭 Creating new GitHub release for tag ${tag_name}...`);
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        const tag_name = tag;
 | 
					 | 
				
			||||||
        const name = config.input_name || tag;
 | 
					 | 
				
			||||||
        const body = releaseBody(config);
 | 
					 | 
				
			||||||
        const draft = config.input_draft;
 | 
					 | 
				
			||||||
        const prerelease = config.input_prerelease;
 | 
					 | 
				
			||||||
        console.log(`👩🏭 Creating new GitHub release for tag ${tag_name}...`);
 | 
					 | 
				
			||||||
        let release = await releaser.createRelease({
 | 
					        let release = await releaser.createRelease({
 | 
				
			||||||
          owner,
 | 
					          owner,
 | 
				
			||||||
          repo,
 | 
					          repo,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,11 @@ async function run() {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
    let rel = await release(config, new GitHubReleaser(gh));
 | 
					    let rel = await release(config, new GitHubReleaser(gh));
 | 
				
			||||||
    if (config.input_files) {
 | 
					    if (config.input_files) {
 | 
				
			||||||
      paths(config.input_files).forEach(async path => {
 | 
					      const files = paths(config.input_files);
 | 
				
			||||||
 | 
					      if (files.length == 0) {
 | 
				
			||||||
 | 
					        console.warn(`🤔 ${config.input_files} not include valid file.`);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      files.forEach(async path => {
 | 
				
			||||||
        await upload(gh, rel.upload_url, path);
 | 
					        await upload(gh, rel.upload_url, path);
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user