@@ -23241,24 +23241,52 @@ function resolveInstallationTarget(enterprise, owner, repositories, core) {
2324123241 );
2324223242 return { type: "owner", owner };
2324323243 }
23244- const parsedOwner = owner || String(process.env.GITHUB_REPOSITORY_OWNER );
23244+ const target = normalizeRepositoryTarget( owner, repositories );
2324523245 if (!owner) {
2324623246 core.info(
23247- `No 'owner' input provided. Using default owner '${parsedOwner }' to create token for the following repositories:${repositories.map((repo) => `
23248- - ${parsedOwner }/${repo}`).join("")}`
23247+ `No 'owner' input provided. Using default owner '${target.owner }' to create token for the following repositories:${target. repositories.map((repo) => `
23248+ - ${target.owner }/${repo}`).join("")}`
2324923249 );
2325023250 } else {
2325123251 core.info(
23252- `Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:${repositories.map((repo) => `
23253- - ${parsedOwner }/${repo}`).join("")}`
23252+ `Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:${target. repositories.map((repo) => `
23253+ - ${target.owner }/${repo}`).join("")}`
2325423254 );
2325523255 }
2325623256 return {
2325723257 type: "repository",
23258+ owner: target.owner,
23259+ repositories: target.repositories
23260+ };
23261+ }
23262+ function normalizeRepositoryTarget(owner, repositories) {
23263+ const parsedOwner = owner || String(process.env.GITHUB_REPOSITORY_OWNER);
23264+ const parsedRepositories = repositories.map(parseRepositoryInput);
23265+ const mismatchedRepository = parsedRepositories.find(
23266+ (repository) => repository.owner && repository.owner.toLowerCase() !== parsedOwner.toLowerCase()
23267+ );
23268+ if (mismatchedRepository) {
23269+ throw new Error(
23270+ `Repository '${mismatchedRepository.input}' includes owner '${mismatchedRepository.owner}', which does not match the resolved owner '${parsedOwner}'.`
23271+ );
23272+ }
23273+ return {
2325823274 owner: parsedOwner,
23259- repositories
23275+ repositories: parsedRepositories.map((repository) => repository.name)
2326023276 };
2326123277}
23278+ function parseRepositoryInput(input) {
23279+ const parts = input.split("/");
23280+ if (parts.length === 1 && parts[0]) {
23281+ return { input, owner: "", name: parts[0] };
23282+ }
23283+ if (parts.length === 2 && parts[0] && parts[1]) {
23284+ return { input, owner: parts[0], name: parts[1] };
23285+ }
23286+ throw new Error(
23287+ `Invalid repository '${input}'. Expected 'repository' or 'owner/repository'.`
23288+ );
23289+ }
2326223290function getTokenRetryDescription(target) {
2326323291 switch (target.type) {
2326423292 case "enterprise":
0 commit comments