| 343 | } |
| 344 | |
| 345 | async function runRepoCreate(client: ArtifactClient, args: string[]): Promise<ArtifactsCLIResult> { |
| 346 | const parsed = parseFlags(args, { |
| 347 | description: { kind: "value" }, |
| 348 | "default-branch": { kind: "value" }, |
| 349 | "read-only": { kind: "bool" }, |
| 350 | }); |
| 351 | if ("error" in parsed) return argvError("repo create", parsed.error); |
| 352 | const name = parsed.positional[0]; |
| 353 | if (name === undefined) return argvError("repo create", "missing <name>"); |
| 354 | if (parsed.positional.length > 1) { |
| 355 | return argvError("repo create", `unexpected argument '${parsed.positional[1]}'`); |
| 356 | } |
| 357 | try { |
| 358 | const result = await client.create(name, { |
| 359 | description: parsed.flags.description as string | undefined, |
| 360 | setDefaultBranch: parsed.flags["default-branch"] as string | undefined, |
| 361 | readOnly: parsed.flags["read-only"] === true, |
| 362 | }); |
| 363 | return ok(json(result)); |
| 364 | } catch (cause) { |
| 365 | return mapError("repo create", cause); |
| 366 | } |
| 367 | } |
| 368 | |
| 369 | async function runRepoGet(client: ArtifactClient, args: string[]): Promise<ArtifactsCLIResult> { |
| 370 | const parsed = parseFlags(args, {}); |