| 1 | /** |
| 2 | * "Set up code scanning": commits the starter workflow on a new branch as |
| 3 | * the person asking and opens it as their pull request, then goes to it. |
| 4 | * It changes the repository's workflows: Maintain, as settings do. |
| 5 | */ |
| 6 | import { redirect } from "react-router"; |
| 7 | |
| 8 | import type { Route } from "./+types/security-code-setup"; |
| 9 | import { refusal } from "../../lib/access.server"; |
| 10 | import { setupCodeScanning } from "../../lib/security-suite.server"; |
| 11 | import { assertSameOrigin, requireUser } from "../../lib/session.server"; |
| 12 | |
| 13 | export async function action({ request, params, context }: Route.ActionArgs) { |
| 14 | assertSameOrigin(request); |
| 15 | const user = requireUser(context, request); |
| 16 | const refused = await refusal(context, params, "manage_settings"); |
| 17 | if (refused) return { error: refused }; |
| 18 | const opened = await setupCodeScanning(user, { namespace: params.owner, name: params.repo }); |
| 19 | if (!opened.ok) return { error: opened.message }; |
| 20 | throw redirect(`/${params.owner}/${params.repo}/pull/${opened.number}`); |
| 21 | } |
| 22 | |
| 23 | export async function loader({ params }: Route.LoaderArgs) { |
| 24 | throw redirect(`/${params.owner}/${params.repo}/security/code-scanning`); |
| 25 | } |