Skip to content

Commit 441a282

Browse files
committed
Package feature
1 parent b932e14 commit 441a282

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

dist/index.js

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4665,13 +4665,15 @@ var fs = __webpack_require__(747);
46654665
const core = __webpack_require__(470);
46664666

46674667
const MAX_ARGS = 50;
4668+
const namedArgPattern = /^(?<name>[a-zA-Z0-9_]+)=(?<value>[^\s]+)$/;
46684669

46694670
const commandDefaults = Object.freeze({
46704671
permission: "write",
46714672
issue_type: "both",
46724673
allow_edits: false,
46734674
repository: process.env.GITHUB_REPOSITORY,
4674-
event_type_suffix: "-command"
4675+
event_type_suffix: "-command",
4676+
named_args: false
46754677
});
46764678

46774679
function toBool(input, defaultVal) {
@@ -4695,6 +4697,7 @@ function getInputs() {
46954697
allowEdits: core.getInput("allow-edits"),
46964698
repository: core.getInput("repository"),
46974699
eventTypeSuffix: core.getInput("event-type-suffix"),
4700+
namedArgs: core.getInput("named-args"),
46984701
config: core.getInput("config"),
46994702
configFromFile: core.getInput("config-from-file")
47004703
};
@@ -4738,6 +4741,7 @@ function getCommandsConfigFromInputs(inputs) {
47384741
cmd.event_type_suffix = inputs.eventTypeSuffix
47394742
? inputs.eventTypeSuffix
47404743
: cmd.event_type_suffix;
4744+
cmd.named_args = toBool(inputs.namedArgs, cmd.named_args);
47414745
config.push(cmd);
47424746
}
47434747
return config;
@@ -4759,6 +4763,7 @@ function getCommandsConfigFromJson(json) {
47594763
cmd.event_type_suffix = jc.event_type_suffix
47604764
? jc.event_type_suffix
47614765
: cmd.event_type_suffix;
4766+
cmd.named_args = toBool(jc.named_args, cmd.named_args);
47624767
config.push(cmd);
47634768
}
47644769
return config;
@@ -4817,16 +4822,30 @@ async function addReaction(octokit, repo, commentId, reaction) {
48174822
}
48184823
}
48194824

4820-
function getSlashCommandPayload(commentWords) {
4825+
function getSlashCommandPayload(commentWords, namedArgs) {
48214826
var payload = {
48224827
command: commentWords[0],
48234828
args: ""
48244829
};
48254830
if (commentWords.length > 1) {
48264831
const argWords = commentWords.slice(1, MAX_ARGS + 1);
48274832
payload.args = argWords.join(" ");
4828-
for (var i = 0; i < argWords.length; i++) {
4829-
payload[`arg${i + 1}`] = argWords[i];
4833+
// Parse named and unnamed args
4834+
var unnamedCount = 1;
4835+
var unnamedArgs = [];
4836+
for (var argWord of argWords) {
4837+
if (namedArgs && namedArgPattern.test(argWord)) {
4838+
const { groups: { name, value } } = namedArgPattern.exec(argWord);
4839+
payload[`${name}`] = value;
4840+
} else {
4841+
unnamedArgs.push(argWord)
4842+
payload[`arg${unnamedCount}`] = argWord;
4843+
unnamedCount += 1;
4844+
}
4845+
}
4846+
// Add a string of only the unnamed args
4847+
if (namedArgs && unnamedArgs.length > 0) {
4848+
payload["unnamed_args"] = unnamedArgs.join(" ");
48304849
}
48314850
}
48324851
return payload;
@@ -8049,10 +8068,8 @@ async function run() {
80498068
core.info(`Command '${commentWords[0]}' to be dispatched.`);
80508069

80518070
// Define payload
8052-
const slashCommandPayload = getSlashCommandPayload(commentWords);
8053-
core.debug(`Slash command payload: ${inspect(slashCommandPayload)}`);
80548071
var clientPayload = {
8055-
slash_command: slashCommandPayload,
8072+
slash_command: {},
80568073
github: github.context
80578074
};
80588075

@@ -8067,6 +8084,15 @@ async function run() {
80678084

80688085
// Dispatch for each matching configuration
80698086
for (const cmd of configMatches) {
8087+
// Generate slash command payload
8088+
clientPayload.slash_command = getSlashCommandPayload(
8089+
commentWords,
8090+
cmd.named_args
8091+
);
8092+
core.debug(
8093+
`Slash command payload: ${inspect(clientPayload.slash_command)}`
8094+
);
8095+
// Dispatch the command
80708096
const dispatchRepo = cmd.repository.split("/");
80718097
const eventType = cmd.command + cmd.event_type_suffix;
80728098
await octokit.repos.createDispatchEvent({

0 commit comments

Comments
 (0)