feat: allow repositories input to be comma or newline-separated (#169)
Resolves https://github.com/actions/create-github-app-token/issues/106 - Fixes the parsing to cope with whitespace in the input string. - Allows the input to be comma or newline-separated. (I've done this for all array-type inputs in my own actions, but I'm happy to remove this if you only want to support comma-separated.) - Added tests for parsing comma and newline-separated inputs.
This commit is contained in:
Vendored
+16
-14
@@ -39700,33 +39700,35 @@ async function pRetry(input, options) {
|
||||
// lib/main.js
|
||||
async function main(appId2, privateKey2, owner2, repositories2, core3, createAppAuth2, request2, skipTokenRevoke2) {
|
||||
let parsedOwner = "";
|
||||
let parsedRepositoryNames = "";
|
||||
if (!owner2 && !repositories2) {
|
||||
[parsedOwner, parsedRepositoryNames] = String(
|
||||
let parsedRepositoryNames = [];
|
||||
if (!owner2 && repositories2.length === 0) {
|
||||
const [owner3, repo] = String(
|
||||
process.env.GITHUB_REPOSITORY
|
||||
).split("/");
|
||||
parsedOwner = owner3;
|
||||
parsedRepositoryNames = [repo];
|
||||
core3.info(
|
||||
`owner and repositories not set, creating token for the current repository ("${parsedRepositoryNames}")`
|
||||
`owner and repositories not set, creating token for the current repository ("${repo}")`
|
||||
);
|
||||
}
|
||||
if (owner2 && !repositories2) {
|
||||
if (owner2 && repositories2.length === 0) {
|
||||
parsedOwner = owner2;
|
||||
core3.info(
|
||||
`repositories not set, creating token for all repositories for given owner "${owner2}"`
|
||||
);
|
||||
}
|
||||
if (!owner2 && repositories2) {
|
||||
if (!owner2 && repositories2.length > 0) {
|
||||
parsedOwner = String(process.env.GITHUB_REPOSITORY_OWNER);
|
||||
parsedRepositoryNames = repositories2;
|
||||
core3.info(
|
||||
`owner not set, creating owner for given repositories "${repositories2}" in current owner ("${parsedOwner}")`
|
||||
`owner not set, creating owner for given repositories "${repositories2.join(",")}" in current owner ("${parsedOwner}")`
|
||||
);
|
||||
}
|
||||
if (owner2 && repositories2) {
|
||||
if (owner2 && repositories2.length > 0) {
|
||||
parsedOwner = owner2;
|
||||
parsedRepositoryNames = repositories2;
|
||||
core3.info(
|
||||
`owner and repositories set, creating token for repositories "${repositories2}" owned by "${owner2}"`
|
||||
`owner and repositories set, creating token for repositories "${repositories2.join(",")}" owned by "${owner2}"`
|
||||
);
|
||||
}
|
||||
const auth5 = createAppAuth2({
|
||||
@@ -39735,11 +39737,11 @@ async function main(appId2, privateKey2, owner2, repositories2, core3, createApp
|
||||
request: request2
|
||||
});
|
||||
let authentication, installationId, appSlug;
|
||||
if (parsedRepositoryNames) {
|
||||
if (parsedRepositoryNames.length > 0) {
|
||||
({ authentication, installationId, appSlug } = await pRetry(() => getTokenFromRepository(request2, auth5, parsedOwner, parsedRepositoryNames), {
|
||||
onFailedAttempt: (error) => {
|
||||
core3.info(
|
||||
`Failed to create token for "${parsedRepositoryNames}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
`Failed to create token for "${parsedRepositoryNames.join(",")}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
);
|
||||
},
|
||||
retries: 3
|
||||
@@ -39789,7 +39791,7 @@ async function getTokenFromOwner(request2, auth5, parsedOwner) {
|
||||
async function getTokenFromRepository(request2, auth5, parsedOwner, parsedRepositoryNames) {
|
||||
const response = await request2("GET /repos/{owner}/{repo}/installation", {
|
||||
owner: parsedOwner,
|
||||
repo: parsedRepositoryNames.split(",")[0],
|
||||
repo: parsedRepositoryNames[0],
|
||||
request: {
|
||||
hook: auth5.hook
|
||||
}
|
||||
@@ -39797,7 +39799,7 @@ async function getTokenFromRepository(request2, auth5, parsedOwner, parsedReposi
|
||||
const authentication = await auth5({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
repositoryNames: parsedRepositoryNames.split(",")
|
||||
repositoryNames: parsedRepositoryNames
|
||||
});
|
||||
const installationId = response.data.id;
|
||||
const appSlug = response.data["app_slug"];
|
||||
@@ -39847,7 +39849,7 @@ if (!privateKey) {
|
||||
throw new Error("Input required and not supplied: private-key");
|
||||
}
|
||||
var owner = import_core2.default.getInput("owner");
|
||||
var repositories = import_core2.default.getInput("repositories");
|
||||
var repositories = import_core2.default.getInput("repositories").split(/[\n,]+/).map((s) => s.trim()).filter((x) => x !== "");
|
||||
var skipTokenRevoke = Boolean(
|
||||
import_core2.default.getInput("skip-token-revoke") || import_core2.default.getInput("skip_token_revoke")
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user