@agi-ventures-canada/hackathon-cli 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/activate-round.mjs +18 -0
- package/dist/_chunks/activate-round.mjs.map +1 -0
- package/dist/_chunks/buckets.mjs +56 -0
- package/dist/_chunks/buckets.mjs.map +1 -0
- package/dist/_chunks/calculate-results.mjs +18 -0
- package/dist/_chunks/calculate-results.mjs.map +1 -0
- package/dist/_chunks/create.mjs +1 -1
- package/dist/_chunks/create.mjs.map +1 -1
- package/dist/_chunks/create6.mjs +29 -38
- package/dist/_chunks/create6.mjs.map +1 -1
- package/dist/_chunks/create7.mjs +63 -0
- package/dist/_chunks/create7.mjs.map +1 -0
- package/dist/_chunks/criteria-create.mjs +9 -22
- package/dist/_chunks/criteria-create.mjs.map +1 -1
- package/dist/_chunks/criteria-list.mjs +4 -0
- package/dist/_chunks/criteria-list.mjs.map +1 -1
- package/dist/_chunks/criteria-update.mjs +13 -5
- package/dist/_chunks/criteria-update.mjs.map +1 -1
- package/dist/_chunks/delete5.mjs +8 -8
- package/dist/_chunks/delete5.mjs.map +1 -1
- package/dist/_chunks/delete6.mjs +22 -0
- package/dist/_chunks/delete6.mjs.map +1 -0
- package/dist/_chunks/get5.mjs +42 -0
- package/dist/_chunks/get5.mjs.map +1 -0
- package/dist/_chunks/levels-add.mjs +53 -0
- package/dist/_chunks/levels-add.mjs.map +1 -0
- package/dist/_chunks/levels-delete.mjs +53 -0
- package/dist/_chunks/levels-delete.mjs.map +1 -0
- package/dist/_chunks/levels-list.mjs +39 -0
- package/dist/_chunks/levels-list.mjs.map +1 -0
- package/dist/_chunks/levels-update.mjs +61 -0
- package/dist/_chunks/levels-update.mjs.map +1 -0
- package/dist/_chunks/list6.mjs +22 -19
- package/dist/_chunks/list6.mjs.map +1 -1
- package/dist/_chunks/list7.mjs +40 -0
- package/dist/_chunks/list7.mjs.map +1 -0
- package/dist/_chunks/track-assign.mjs +37 -0
- package/dist/_chunks/track-assign.mjs.map +1 -0
- package/dist/_chunks/track-unassign.mjs +49 -0
- package/dist/_chunks/track-unassign.mjs.map +1 -0
- package/dist/_chunks/update-round.mjs +49 -0
- package/dist/_chunks/update-round.mjs.map +1 -0
- package/dist/_chunks/update5.mjs +41 -48
- package/dist/_chunks/update5.mjs.map +1 -1
- package/dist/_chunks/update6.mjs +56 -0
- package/dist/_chunks/update6.mjs.map +1 -0
- package/dist/cli.mjs +154 -86
- package/dist/cli.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/_chunks/hackathons-delete.mjs +0 -26
- package/dist/_chunks/hackathons-delete.mjs.map +0 -1
- package/dist/_chunks/hackathons-get.mjs +0 -34
- package/dist/_chunks/hackathons-get.mjs.map +0 -1
- package/dist/_chunks/hackathons-list.mjs +0 -64
- package/dist/_chunks/hackathons-list.mjs.map +0 -1
- package/dist/_chunks/hackathons-update.mjs +0 -73
- package/dist/_chunks/hackathons-update.mjs.map +0 -1
- package/dist/_chunks/scenarios-list.mjs +0 -24
- package/dist/_chunks/scenarios-list.mjs.map +0 -1
- package/dist/_chunks/scenarios-run.mjs +0 -23
- package/dist/_chunks/scenarios-run.mjs.map +0 -1
- package/dist/_chunks/stats.mjs +0 -37
- package/dist/_chunks/stats.mjs.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
|
+
//#region src/commands/tracks/activate-round.ts
|
|
3
|
+
async function runTracksActivateRound(client, hackathonId, trackId, roundId, options) {
|
|
4
|
+
if (!trackId || !roundId) {
|
|
5
|
+
console.error("Usage: hackathon tracks activate-round <hackathon-id> <track-id> <round-id>");
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
const result = await client.post(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/activate`, {});
|
|
9
|
+
if (options.json) {
|
|
10
|
+
console.log(formatJson(result));
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
console.log(formatSuccess("Round activated"));
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { runTracksActivateRound };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=activate-round.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate-round.mjs","names":[],"sources":["../../src/commands/tracks/activate-round.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\nexport async function runTracksActivateRound(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n roundId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!trackId || !roundId) {\n console.error(\"Usage: hackathon tracks activate-round <hackathon-id> <track-id> <round-id>\")\n process.exit(1)\n }\n\n const result = await client.post<{ success: boolean }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/activate`,\n {}\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(\"Round activated\"))\n}\n"],"mappings":";;AAGA,eAAsB,uBACpB,QACA,aACA,SACA,SACA,SACe;AACf,KAAI,CAAC,WAAW,CAAC,SAAS;AACxB,UAAQ,MAAM,8EAA8E;AAC5F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,KAC1B,6BAA6B,YAAY,gBAAgB,QAAQ,UAAU,QAAQ,YACnF,EAAE,CACH;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
|
+
//#region src/commands/tracks/buckets.ts
|
|
3
|
+
function parseOptions(args) {
|
|
4
|
+
const options = {};
|
|
5
|
+
const buckets = [];
|
|
6
|
+
let currentLabel = "";
|
|
7
|
+
let currentDesc = "";
|
|
8
|
+
for (let i = 0; i < args.length; i++) switch (args[i]) {
|
|
9
|
+
case "--json":
|
|
10
|
+
options.json = true;
|
|
11
|
+
break;
|
|
12
|
+
case "--bucket":
|
|
13
|
+
if (currentLabel) buckets.push({
|
|
14
|
+
level: buckets.length + 1,
|
|
15
|
+
label: currentLabel,
|
|
16
|
+
description: currentDesc || void 0
|
|
17
|
+
});
|
|
18
|
+
currentLabel = args[++i];
|
|
19
|
+
currentDesc = "";
|
|
20
|
+
break;
|
|
21
|
+
case "--bucket-desc":
|
|
22
|
+
currentDesc = args[++i];
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
if (currentLabel) buckets.push({
|
|
26
|
+
level: buckets.length + 1,
|
|
27
|
+
label: currentLabel,
|
|
28
|
+
description: currentDesc || void 0
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
buckets,
|
|
32
|
+
options
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function runTracksBuckets(client, hackathonId, trackId, roundId, args) {
|
|
36
|
+
if (!trackId || !roundId) {
|
|
37
|
+
console.error("Usage: hackathon tracks buckets <hackathon-id> <track-id> <round-id> --bucket <label> [--bucket-desc <desc>] ...");
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const { buckets, options } = parseOptions(args);
|
|
41
|
+
if (buckets.length < 2) {
|
|
42
|
+
console.error("Error: at least 2 buckets are required (use --bucket <label> for each)");
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
const result = await client.put(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/buckets`, { buckets });
|
|
46
|
+
if (options.json) {
|
|
47
|
+
console.log(formatJson(result));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
console.log(formatSuccess(`Saved ${result.buckets.length} bucket definitions`));
|
|
51
|
+
for (const b of result.buckets) console.log(` ${b.level}. ${b.label}${b.description ? ` — ${b.description}` : ""}`);
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { runTracksBuckets };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=buckets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.mjs","names":[],"sources":["../../src/commands/tracks/buckets.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { BucketDef } from \"../../types.js\"\n\ninterface BucketsOptions {\n json?: boolean\n}\n\nfunction parseOptions(args: string[]): { buckets: Array<{ level: number; label: string; description?: string }>; options: BucketsOptions } {\n const options: BucketsOptions = {}\n const buckets: Array<{ level: number; label: string; description?: string }> = []\n let currentLabel = \"\"\n let currentDesc = \"\"\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--json\":\n options.json = true\n break\n case \"--bucket\": {\n if (currentLabel) {\n buckets.push({ level: buckets.length + 1, label: currentLabel, description: currentDesc || undefined })\n }\n currentLabel = args[++i]\n currentDesc = \"\"\n break\n }\n case \"--bucket-desc\":\n currentDesc = args[++i]\n break\n }\n }\n if (currentLabel) {\n buckets.push({ level: buckets.length + 1, label: currentLabel, description: currentDesc || undefined })\n }\n\n return { buckets, options }\n}\n\nexport async function runTracksBuckets(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n roundId: string,\n args: string[]\n): Promise<void> {\n if (!trackId || !roundId) {\n console.error(\"Usage: hackathon tracks buckets <hackathon-id> <track-id> <round-id> --bucket <label> [--bucket-desc <desc>] ...\")\n process.exit(1)\n }\n\n const { buckets, options } = parseOptions(args)\n\n if (buckets.length < 2) {\n console.error(\"Error: at least 2 buckets are required (use --bucket <label> for each)\")\n process.exit(1)\n }\n\n const result = await client.put<{ buckets: BucketDef[] }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/buckets`,\n { buckets }\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Saved ${result.buckets.length} bucket definitions`))\n for (const b of result.buckets) {\n console.log(` ${b.level}. ${b.label}${b.description ? ` — ${b.description}` : \"\"}`)\n }\n}\n"],"mappings":";;AAQA,SAAS,aAAa,MAAqH;CACzI,MAAM,UAA0B,EAAE;CAClC,MAAM,UAAyE,EAAE;CACjF,IAAI,eAAe;CACnB,IAAI,cAAc;AAElB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO;AACf;EACF,KAAK;AACH,OAAI,aACF,SAAQ,KAAK;IAAE,OAAO,QAAQ,SAAS;IAAG,OAAO;IAAc,aAAa,eAAe,KAAA;IAAW,CAAC;AAEzG,kBAAe,KAAK,EAAE;AACtB,iBAAc;AACd;EAEF,KAAK;AACH,iBAAc,KAAK,EAAE;AACrB;;AAGN,KAAI,aACF,SAAQ,KAAK;EAAE,OAAO,QAAQ,SAAS;EAAG,OAAO;EAAc,aAAa,eAAe,KAAA;EAAW,CAAC;AAGzG,QAAO;EAAE;EAAS;EAAS;;AAG7B,eAAsB,iBACpB,QACA,aACA,SACA,SACA,MACe;AACf,KAAI,CAAC,WAAW,CAAC,SAAS;AACxB,UAAQ,MAAM,mHAAmH;AACjI,UAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,SAAS,YAAY,aAAa,KAAK;AAE/C,KAAI,QAAQ,SAAS,GAAG;AACtB,UAAQ,MAAM,yEAAyE;AACvF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,IAC1B,6BAA6B,YAAY,gBAAgB,QAAQ,UAAU,QAAQ,WACnF,EAAE,SAAS,CACZ;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,SAAS,OAAO,QAAQ,OAAO,qBAAqB,CAAC;AAC/E,MAAK,MAAM,KAAK,OAAO,QACrB,SAAQ,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,cAAc,MAAM,EAAE,gBAAgB,KAAK"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
|
+
//#region src/commands/tracks/calculate-results.ts
|
|
3
|
+
async function runTracksCalculateResults(client, hackathonId, trackId, roundId, options) {
|
|
4
|
+
if (!trackId || !roundId) {
|
|
5
|
+
console.error("Usage: hackathon tracks calculate-results <hackathon-id> <track-id> <round-id>");
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
const result = await client.post(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/calculate-results`, {});
|
|
9
|
+
if (options.json) {
|
|
10
|
+
console.log(formatJson(result));
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
console.log(formatSuccess(`Calculated results for ${result.resultsCount} submissions`));
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { runTracksCalculateResults };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=calculate-results.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-results.mjs","names":[],"sources":["../../src/commands/tracks/calculate-results.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\nexport async function runTracksCalculateResults(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n roundId: string,\n options: { json?: boolean }\n): Promise<void> {\n if (!trackId || !roundId) {\n console.error(\"Usage: hackathon tracks calculate-results <hackathon-id> <track-id> <round-id>\")\n process.exit(1)\n }\n\n const result = await client.post<{ success: boolean; resultsCount: number }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}/calculate-results`,\n {}\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Calculated results for ${result.resultsCount} submissions`))\n}\n"],"mappings":";;AAGA,eAAsB,0BACpB,QACA,aACA,SACA,SACA,SACe;AACf,KAAI,CAAC,WAAW,CAAC,SAAS;AACxB,UAAQ,MAAM,iFAAiF;AAC/F,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,KAC1B,6BAA6B,YAAY,gBAAgB,QAAQ,UAAU,QAAQ,qBACnF,EAAE,CACH;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,0BAA0B,OAAO,aAAa,cAAc,CAAC"}
|
package/dist/_chunks/create.mjs
CHANGED
|
@@ -28,7 +28,7 @@ async function runHackathonsCreate(client, args) {
|
|
|
28
28
|
let slug = options.slug;
|
|
29
29
|
let description = options.description;
|
|
30
30
|
if (options.fromUrl) {
|
|
31
|
-
const hackathon = await client.post("/api/dashboard/import/
|
|
31
|
+
const hackathon = await client.post("/api/dashboard/import/url", {
|
|
32
32
|
url: options.fromUrl,
|
|
33
33
|
name,
|
|
34
34
|
description
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.mjs","names":[],"sources":["../../src/commands/hackathons/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface CreateOptions {\n name?: string\n slug?: string\n description?: string\n fromUrl?: string\n json?: boolean\n}\n\ninterface ImportedHackathonResponse {\n id: string\n name: string\n slug: string\n}\n\nexport function parseCreateOptions(args: string[]): CreateOptions {\n const options: CreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--slug\":\n options.slug = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--from-url\":\n options.fromUrl = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runHackathonsCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseCreateOptions(args)\n\n let name = options.name\n let slug = options.slug\n let description = options.description\n\n if (options.fromUrl) {\n const hackathon = await client.post<ImportedHackathonResponse>(\"/api/dashboard/import/
|
|
1
|
+
{"version":3,"file":"create.mjs","names":[],"sources":["../../src/commands/hackathons/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { Hackathon } from \"../../types.js\"\n\ninterface CreateOptions {\n name?: string\n slug?: string\n description?: string\n fromUrl?: string\n json?: boolean\n}\n\ninterface ImportedHackathonResponse {\n id: string\n name: string\n slug: string\n}\n\nexport function parseCreateOptions(args: string[]): CreateOptions {\n const options: CreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--slug\":\n options.slug = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--from-url\":\n options.fromUrl = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runHackathonsCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseCreateOptions(args)\n\n let name = options.name\n let slug = options.slug\n let description = options.description\n\n if (options.fromUrl) {\n const hackathon = await client.post<ImportedHackathonResponse>(\"/api/dashboard/import/url\", {\n url: options.fromUrl,\n name,\n description,\n })\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Imported hackathon \"${hackathon.name}\" (${hackathon.id})`))\n return\n }\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Hackathon name:\", validate: (v: string) => (v ? undefined : \"Name is required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n if (!slug && process.stdout.isTTY) {\n const suggested = name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\")\n const result = await p.text({ message: \"Slug:\", initialValue: suggested })\n if (p.isCancel(result)) return\n slug = result\n }\n\n if (!description && process.stdout.isTTY) {\n const result = await p.text({ message: \"Description (optional):\" })\n if (!p.isCancel(result)) description = result || undefined\n }\n\n const hackathon = await client.post<Hackathon>(\"/api/dashboard/hackathons\", {\n name,\n slug,\n description,\n })\n\n if (options.json) {\n console.log(formatJson(hackathon))\n return\n }\n\n console.log(formatSuccess(`Created hackathon \"${hackathon.name}\" (${hackathon.id})`))\n}\n"],"mappings":";;;AAmBA,SAAgB,mBAAmB,MAA+B;CAChE,MAAM,UAAyB,EAAE;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,UAAU,KAAK,EAAE;AACzB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,oBACpB,QACA,MACe;CACf,MAAM,UAAU,mBAAmB,KAAK;CAExC,IAAI,OAAO,QAAQ;CACnB,IAAI,OAAO,QAAQ;CACnB,IAAI,cAAc,QAAQ;AAE1B,KAAI,QAAQ,SAAS;EACnB,MAAM,YAAY,MAAM,OAAO,KAAgC,6BAA6B;GAC1F,KAAK,QAAQ;GACb;GACA;GACD,CAAC;AAEF,MAAI,QAAQ,MAAM;AAChB,WAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,UAAQ,IAAI,cAAc,uBAAuB,UAAU,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC;AACtF;;AAGF,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAmB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAqB,CAAC;AAC1H,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,YAAY,KAAK,aAAa,CAAC,QAAQ,eAAe,IAAI,CAAC,QAAQ,UAAU,GAAG;EACtF,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAS,cAAc;GAAW,CAAC;AAC1E,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,eAAe,QAAQ,OAAO,OAAO;EACxC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,2BAA2B,CAAC;AACnE,MAAI,CAAC,EAAE,SAAS,OAAO,CAAE,eAAc,UAAU,KAAA;;CAGnD,MAAM,YAAY,MAAM,OAAO,KAAgB,6BAA6B;EAC1E;EACA;EACA;EACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,UAAU,CAAC;AAClC;;AAGF,SAAQ,IAAI,cAAc,sBAAsB,UAAU,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC"}
|
package/dist/_chunks/create6.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
//#region src/commands/
|
|
4
|
-
function
|
|
5
|
-
const trimmed = input.trim();
|
|
6
|
-
if (!trimmed) return trimmed;
|
|
7
|
-
if (/^https?:\/\//i.test(trimmed)) return trimmed;
|
|
8
|
-
return `https://${trimmed}`;
|
|
9
|
-
}
|
|
10
|
-
function parseWebhookCreateOptions(args) {
|
|
3
|
+
//#region src/commands/tracks/create.ts
|
|
4
|
+
function parseOptions(args) {
|
|
11
5
|
const options = {};
|
|
12
6
|
for (let i = 0; i < args.length; i++) switch (args[i]) {
|
|
13
|
-
case "--
|
|
14
|
-
options.
|
|
7
|
+
case "--name":
|
|
8
|
+
options.name = args[++i];
|
|
9
|
+
break;
|
|
10
|
+
case "--description":
|
|
11
|
+
options.description = args[++i];
|
|
12
|
+
break;
|
|
13
|
+
case "--intent":
|
|
14
|
+
options.intent = args[++i];
|
|
15
15
|
break;
|
|
16
|
-
case "--
|
|
17
|
-
options.
|
|
16
|
+
case "--style":
|
|
17
|
+
options.style = args[++i];
|
|
18
18
|
break;
|
|
19
19
|
case "--json":
|
|
20
20
|
options.json = true;
|
|
@@ -22,42 +22,33 @@ function parseWebhookCreateOptions(args) {
|
|
|
22
22
|
}
|
|
23
23
|
return options;
|
|
24
24
|
}
|
|
25
|
-
async function
|
|
26
|
-
const options =
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
if (!url && process.stdout.isTTY) {
|
|
25
|
+
async function runTracksCreate(client, hackathonId, args) {
|
|
26
|
+
const options = parseOptions(args);
|
|
27
|
+
let name = options.name;
|
|
28
|
+
if (!name && process.stdout.isTTY) {
|
|
30
29
|
const result = await p.text({
|
|
31
|
-
message: "
|
|
30
|
+
message: "Track name:",
|
|
32
31
|
validate: (v) => v ? void 0 : "Required"
|
|
33
32
|
});
|
|
34
33
|
if (p.isCancel(result)) return;
|
|
35
|
-
|
|
34
|
+
name = result;
|
|
36
35
|
}
|
|
37
|
-
if (!
|
|
38
|
-
console.error("Error: --
|
|
36
|
+
if (!name) {
|
|
37
|
+
console.error("Error: --name is required");
|
|
39
38
|
process.exit(1);
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
const webhook = await client.post("/api/v1/webhooks", {
|
|
47
|
-
url: normalizeUrl(url),
|
|
48
|
-
events
|
|
49
|
-
});
|
|
40
|
+
const body = { name };
|
|
41
|
+
if (options.description) body.description = options.description;
|
|
42
|
+
if (options.intent) body.intent = options.intent;
|
|
43
|
+
if (options.style) body.style = options.style;
|
|
44
|
+
const track = await client.post(`/api/dashboard/hackathons/${hackathonId}/prize-tracks`, body);
|
|
50
45
|
if (options.json) {
|
|
51
|
-
console.log(formatJson(
|
|
46
|
+
console.log(formatJson(track));
|
|
52
47
|
return;
|
|
53
48
|
}
|
|
54
|
-
console.log(formatSuccess(`Created
|
|
55
|
-
if (webhook.signingSecret) {
|
|
56
|
-
console.log(formatWarning("Save this signing secret — it won't be shown again:"));
|
|
57
|
-
console.log(webhook.signingSecret);
|
|
58
|
-
}
|
|
49
|
+
console.log(formatSuccess(`Created track "${track.name}" (${track.id})`));
|
|
59
50
|
}
|
|
60
51
|
//#endregion
|
|
61
|
-
export {
|
|
52
|
+
export { runTracksCreate };
|
|
62
53
|
|
|
63
54
|
//# sourceMappingURL=create6.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create6.mjs","names":[],"sources":["../../src/commands/
|
|
1
|
+
{"version":3,"file":"create6.mjs","names":[],"sources":["../../src/commands/tracks/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface TrackCreateOptions {\n name?: string\n description?: string\n intent?: string\n style?: string\n json?: boolean\n}\n\nfunction parseOptions(args: string[]): TrackCreateOptions {\n const options: TrackCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--intent\":\n options.intent = args[++i]\n break\n case \"--style\":\n options.style = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runTracksCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Track name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const body: Record<string, unknown> = { name }\n if (options.description) body.description = options.description\n if (options.intent) body.intent = options.intent\n if (options.style) body.style = options.style\n\n const track = await client.post<{ id: string; name: string; intent: string }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(track))\n return\n }\n\n console.log(formatSuccess(`Created track \"${track.name}\" (${track.id})`))\n}\n"],"mappings":";;;AAYA,SAAS,aAAa,MAAoC;CACxD,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,aAAa,KAAK;CAElC,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAe,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AAC9G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAgC,EAAE,MAAM;AAC9C,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,OAAQ,MAAK,SAAS,QAAQ;AAC1C,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;CAExC,MAAM,QAAQ,MAAM,OAAO,KACzB,6BAA6B,YAAY,gBACzC,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,MAAM,CAAC;AAC9B;;AAGF,SAAQ,IAAI,cAAc,kBAAkB,MAAM,KAAK,KAAK,MAAM,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { a as formatWarning, n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
//#region src/commands/webhooks/create.ts
|
|
4
|
+
function normalizeUrl(input) {
|
|
5
|
+
const trimmed = input.trim();
|
|
6
|
+
if (!trimmed) return trimmed;
|
|
7
|
+
if (/^https?:\/\//i.test(trimmed)) return trimmed;
|
|
8
|
+
return `https://${trimmed}`;
|
|
9
|
+
}
|
|
10
|
+
function parseWebhookCreateOptions(args) {
|
|
11
|
+
const options = {};
|
|
12
|
+
for (let i = 0; i < args.length; i++) switch (args[i]) {
|
|
13
|
+
case "--url":
|
|
14
|
+
options.url = args[++i];
|
|
15
|
+
break;
|
|
16
|
+
case "--events":
|
|
17
|
+
options.events = args[++i]?.split(",").map((s) => s.trim());
|
|
18
|
+
break;
|
|
19
|
+
case "--json":
|
|
20
|
+
options.json = true;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
return options;
|
|
24
|
+
}
|
|
25
|
+
async function runWebhooksCreate(client, args) {
|
|
26
|
+
const options = parseWebhookCreateOptions(args);
|
|
27
|
+
let url = options.url;
|
|
28
|
+
let events = options.events;
|
|
29
|
+
if (!url && process.stdout.isTTY) {
|
|
30
|
+
const result = await p.text({
|
|
31
|
+
message: "Webhook URL:",
|
|
32
|
+
validate: (v) => v ? void 0 : "Required"
|
|
33
|
+
});
|
|
34
|
+
if (p.isCancel(result)) return;
|
|
35
|
+
url = result;
|
|
36
|
+
}
|
|
37
|
+
if (!url) {
|
|
38
|
+
console.error("Error: --url is required");
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
if (!events?.length && process.stdout.isTTY) {
|
|
42
|
+
const result = await p.text({ message: "Events (comma-separated):" });
|
|
43
|
+
if (p.isCancel(result)) return;
|
|
44
|
+
events = result.split(",").map((s) => s.trim());
|
|
45
|
+
}
|
|
46
|
+
const webhook = await client.post("/api/v1/webhooks", {
|
|
47
|
+
url: normalizeUrl(url),
|
|
48
|
+
events
|
|
49
|
+
});
|
|
50
|
+
if (options.json) {
|
|
51
|
+
console.log(formatJson(webhook));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
console.log(formatSuccess(`Created webhook ${webhook.id}`));
|
|
55
|
+
if (webhook.signingSecret) {
|
|
56
|
+
console.log(formatWarning("Save this signing secret — it won't be shown again:"));
|
|
57
|
+
console.log(webhook.signingSecret);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { runWebhooksCreate };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=create7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create7.mjs","names":[],"sources":["../../src/commands/webhooks/create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess, formatWarning } from \"../../output.js\"\nimport type { Webhook } from \"../../types.js\"\n\ninterface WebhookCreateOptions {\n url?: string\n events?: string[]\n json?: boolean\n}\n\nfunction normalizeUrl(input: string): string {\n const trimmed = input.trim()\n if (!trimmed) return trimmed\n if (/^https?:\\/\\//i.test(trimmed)) return trimmed\n return `https://${trimmed}`\n}\n\nexport function parseWebhookCreateOptions(args: string[]): WebhookCreateOptions {\n const options: WebhookCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--url\":\n options.url = args[++i]\n break\n case \"--events\":\n options.events = args[++i]?.split(\",\").map((s) => s.trim())\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runWebhooksCreate(\n client: OatmealClient,\n args: string[]\n): Promise<void> {\n const options = parseWebhookCreateOptions(args)\n\n let url = options.url\n let events = options.events\n\n if (!url && process.stdout.isTTY) {\n const result = await p.text({ message: \"Webhook URL:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n url = result\n }\n\n if (!url) {\n console.error(\"Error: --url is required\")\n process.exit(1)\n }\n\n if (!events?.length && process.stdout.isTTY) {\n const result = await p.text({ message: \"Events (comma-separated):\" })\n if (p.isCancel(result)) return\n events = result.split(\",\").map((s: string) => s.trim())\n }\n\n const webhook = await client.post<Webhook>(\"/api/v1/webhooks\", {\n url: normalizeUrl(url),\n events,\n })\n\n if (options.json) {\n console.log(formatJson(webhook))\n return\n }\n\n console.log(formatSuccess(`Created webhook ${webhook.id}`))\n if (webhook.signingSecret) {\n console.log(formatWarning(\"Save this signing secret — it won't be shown again:\"))\n console.log(webhook.signingSecret)\n }\n}\n"],"mappings":";;;AAWA,SAAS,aAAa,OAAuB;CAC3C,MAAM,UAAU,MAAM,MAAM;AAC5B,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,gBAAgB,KAAK,QAAQ,CAAE,QAAO;AAC1C,QAAO,WAAW;;AAGpB,SAAgB,0BAA0B,MAAsC;CAC9E,MAAM,UAAgC,EAAE;AACxC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,MAAM,KAAK,EAAE;AACrB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAC3D;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,MACe;CACf,MAAM,UAAU,0BAA0B,KAAK;CAE/C,IAAI,MAAM,QAAQ;CAClB,IAAI,SAAS,QAAQ;AAErB,KAAI,CAAC,OAAO,QAAQ,OAAO,OAAO;EAChC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAgB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AAC/G,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,QAAM;;AAGR,KAAI,CAAC,KAAK;AACR,UAAQ,MAAM,2BAA2B;AACzC,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,OAAO;EAC3C,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,6BAA6B,CAAC;AACrE,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,WAAS,OAAO,MAAM,IAAI,CAAC,KAAK,MAAc,EAAE,MAAM,CAAC;;CAGzD,MAAM,UAAU,MAAM,OAAO,KAAc,oBAAoB;EAC7D,KAAK,aAAa,IAAI;EACtB;EACD,CAAC;AAEF,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,QAAQ,CAAC;AAChC;;AAGF,SAAQ,IAAI,cAAc,mBAAmB,QAAQ,KAAK,CAAC;AAC3D,KAAI,QAAQ,eAAe;AACzB,UAAQ,IAAI,cAAc,sDAAsD,CAAC;AACjF,UAAQ,IAAI,QAAQ,cAAc"}
|
|
@@ -16,6 +16,9 @@ function parseCriteriaCreateOptions(args) {
|
|
|
16
16
|
case "--weight":
|
|
17
17
|
options.weight = parseFloat(args[++i]);
|
|
18
18
|
break;
|
|
19
|
+
case "--category":
|
|
20
|
+
options.category = args[++i];
|
|
21
|
+
break;
|
|
19
22
|
case "--json":
|
|
20
23
|
options.json = true;
|
|
21
24
|
break;
|
|
@@ -25,8 +28,6 @@ function parseCriteriaCreateOptions(args) {
|
|
|
25
28
|
async function runCriteriaCreate(client, hackathonId, args) {
|
|
26
29
|
const options = parseCriteriaCreateOptions(args);
|
|
27
30
|
let name = options.name;
|
|
28
|
-
let maxScore = options.maxScore;
|
|
29
|
-
let weight = options.weight;
|
|
30
31
|
if (!name && process.stdout.isTTY) {
|
|
31
32
|
const result = await p.text({
|
|
32
33
|
message: "Criteria name:",
|
|
@@ -39,31 +40,17 @@ async function runCriteriaCreate(client, hackathonId, args) {
|
|
|
39
40
|
console.error("Error: --name is required");
|
|
40
41
|
process.exit(1);
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
initialValue: "10"
|
|
46
|
-
});
|
|
47
|
-
if (p.isCancel(result)) return;
|
|
48
|
-
maxScore = parseInt(result, 10);
|
|
49
|
-
}
|
|
50
|
-
if (maxScore !== void 0 && (isNaN(maxScore) || maxScore <= 0)) {
|
|
51
|
-
console.error("Error: --max-score must be a positive integer");
|
|
43
|
+
const category = options.category ?? "core";
|
|
44
|
+
if (category !== "core" && category !== "bonus") {
|
|
45
|
+
console.error("Error: --category must be 'core' or 'bonus'");
|
|
52
46
|
process.exit(1);
|
|
53
47
|
}
|
|
54
|
-
if (weight === void 0 && process.stdout.isTTY) {
|
|
55
|
-
const result = await p.text({
|
|
56
|
-
message: "Weight:",
|
|
57
|
-
initialValue: "1"
|
|
58
|
-
});
|
|
59
|
-
if (p.isCancel(result)) return;
|
|
60
|
-
weight = parseFloat(result);
|
|
61
|
-
}
|
|
62
48
|
const criteria = await client.post(`/api/dashboard/hackathons/${hackathonId}/judging/criteria`, {
|
|
63
49
|
name,
|
|
64
50
|
description: options.description,
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
category,
|
|
52
|
+
...options.maxScore !== void 0 && { maxScore: options.maxScore },
|
|
53
|
+
...options.weight !== void 0 && { weight: options.weight }
|
|
67
54
|
});
|
|
68
55
|
if (options.json) {
|
|
69
56
|
console.log(formatJson(criteria));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria-create.mjs","names":[],"sources":["../../src/commands/judging/criteria-create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaCreateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaCreateOptions(args: string[]): CriteriaCreateOptions {\n const options: CriteriaCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseCriteriaCreateOptions(args)\n\n let name = options.name\n
|
|
1
|
+
{"version":3,"file":"criteria-create.mjs","names":[],"sources":["../../src/commands/judging/criteria-create.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaCreateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n category?: \"core\" | \"bonus\"\n json?: boolean\n}\n\nexport function parseCriteriaCreateOptions(args: string[]): CriteriaCreateOptions {\n const options: CriteriaCreateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--category\":\n options.category = args[++i] as \"core\" | \"bonus\"\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaCreate(\n client: OatmealClient,\n hackathonId: string,\n args: string[]\n): Promise<void> {\n const options = parseCriteriaCreateOptions(args)\n\n let name = options.name\n\n if (!name && process.stdout.isTTY) {\n const result = await p.text({ message: \"Criteria name:\", validate: (v: string) => (v ? undefined : \"Required\") })\n if (p.isCancel(result)) return\n name = result\n }\n\n if (!name) {\n console.error(\"Error: --name is required\")\n process.exit(1)\n }\n\n const category = options.category ?? \"core\"\n\n if (category !== \"core\" && category !== \"bonus\") {\n console.error(\"Error: --category must be 'core' or 'bonus'\")\n process.exit(1)\n }\n\n const criteria = await client.post<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`,\n {\n name,\n description: options.description,\n category,\n ...(options.maxScore !== undefined && { maxScore: options.maxScore }),\n ...(options.weight !== undefined && { weight: options.weight }),\n }\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Created criteria \"${criteria.name}\" (${criteria.id})`))\n}\n"],"mappings":";;;AAcA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,WAAW,KAAK,EAAE;AAC1B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,MACe;CACf,MAAM,UAAU,2BAA2B,KAAK;CAEhD,IAAI,OAAO,QAAQ;AAEnB,KAAI,CAAC,QAAQ,QAAQ,OAAO,OAAO;EACjC,MAAM,SAAS,MAAM,EAAE,KAAK;GAAE,SAAS;GAAkB,WAAW,MAAe,IAAI,KAAA,IAAY;GAAa,CAAC;AACjH,MAAI,EAAE,SAAS,OAAO,CAAE;AACxB,SAAO;;AAGT,KAAI,CAAC,MAAM;AACT,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,QAAQ,YAAY;AAErC,KAAI,aAAa,UAAU,aAAa,SAAS;AAC/C,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,KAC5B,6BAA6B,YAAY,oBACzC;EACE;EACA,aAAa,QAAQ;EACrB;EACA,GAAI,QAAQ,aAAa,KAAA,KAAa,EAAE,UAAU,QAAQ,UAAU;EACpE,GAAI,QAAQ,WAAW,KAAA,KAAa,EAAE,QAAQ,QAAQ,QAAA;EACvD,CACF;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria-list.mjs","names":[],"sources":["../../src/commands/judging/criteria-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\nexport async function runCriteriaList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ criteria: JudgingCriteria[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.criteria?.length) {\n console.log(\"No judging criteria found.\")\n return\n }\n\n console.log(\n formatTable(data.criteria, [\n { key: \"name\", label: \"Name\" },\n { key: \"maxScore\", label: \"Max Score\" },\n { key: \"weight\", label: \"Weight\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,mBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,6BAA6B;AACzC;;AAGF,SAAQ,IACN,YAAY,KAAK,UAAU;EACzB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAY,OAAO;GAAa;EACvC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
|
|
1
|
+
{"version":3,"file":"criteria-list.mjs","names":[],"sources":["../../src/commands/judging/criteria-list.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatTable } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\nexport async function runCriteriaList(\n client: OatmealClient,\n hackathonId: string,\n options: { json?: boolean }\n): Promise<void> {\n const data = await client.get<{ criteria: JudgingCriteria[] }>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria`\n )\n\n if (options.json) {\n console.log(formatJson(data))\n return\n }\n\n if (!data.criteria?.length) {\n console.log(\"No judging criteria found.\")\n return\n }\n\n console.log(\n formatTable(data.criteria, [\n { key: \"name\", label: \"Name\" },\n { key: \"category\", label: \"Category\" },\n { key: \"maxScore\", label: \"Max Score\" },\n { key: \"weight\", label: \"Weight\" },\n { key: \"description\", label: \"Description\" },\n ])\n )\n}\n"],"mappings":";;AAIA,eAAsB,gBACpB,QACA,aACA,SACe;CACf,MAAM,OAAO,MAAM,OAAO,IACxB,6BAA6B,YAAY,mBAC1C;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,KAAK,CAAC;AAC7B;;AAGF,KAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,UAAQ,IAAI,6BAA6B;AACzC;;AAGF,SAAQ,IACN,YAAY,KAAK,UAAU;EACzB;GAAE,KAAK;GAAQ,OAAO;GAAQ;EAC9B;GAAE,KAAK;GAAY,OAAO;GAAY;EACtC;GAAE,KAAK;GAAY,OAAO;GAAa;EACvC;GAAE,KAAK;GAAU,OAAO;GAAU;EAClC;GAAE,KAAK;GAAe,OAAO;;EAC9B,CAAC,CACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
1
|
+
import { a as formatWarning, n as formatJson, r as formatSuccess } from "../cli.mjs";
|
|
2
2
|
//#region src/commands/judging/criteria-update.ts
|
|
3
3
|
function parseCriteriaUpdateOptions(args) {
|
|
4
4
|
const options = {};
|
|
@@ -15,6 +15,9 @@ function parseCriteriaUpdateOptions(args) {
|
|
|
15
15
|
case "--weight":
|
|
16
16
|
options.weight = parseFloat(args[++i]);
|
|
17
17
|
break;
|
|
18
|
+
case "--category":
|
|
19
|
+
options.category = args[++i];
|
|
20
|
+
break;
|
|
18
21
|
case "--json":
|
|
19
22
|
options.json = true;
|
|
20
23
|
break;
|
|
@@ -23,15 +26,20 @@ function parseCriteriaUpdateOptions(args) {
|
|
|
23
26
|
}
|
|
24
27
|
async function runCriteriaUpdate(client, hackathonId, criteriaId, args) {
|
|
25
28
|
if (!criteriaId) {
|
|
26
|
-
console.error("Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--
|
|
29
|
+
console.error("Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--category ...]");
|
|
27
30
|
process.exit(1);
|
|
28
31
|
}
|
|
29
32
|
const options = parseCriteriaUpdateOptions(args);
|
|
33
|
+
if (options.maxScore !== void 0) console.warn(formatWarning("--max-score is deprecated and has no effect in rubric mode"));
|
|
34
|
+
if (options.weight !== void 0) console.warn(formatWarning("--weight is deprecated and has no effect in rubric mode"));
|
|
35
|
+
if (options.category !== void 0 && options.category !== "core" && options.category !== "bonus") {
|
|
36
|
+
console.error("Error: --category must be 'core' or 'bonus'");
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
30
39
|
const body = {};
|
|
31
40
|
if (options.name) body.name = options.name;
|
|
32
|
-
if (options.description) body.description = options.description;
|
|
33
|
-
if (options.
|
|
34
|
-
if (options.weight !== void 0) body.weight = options.weight;
|
|
41
|
+
if (options.description !== void 0) body.description = options.description;
|
|
42
|
+
if (options.category !== void 0) body.category = options.category;
|
|
35
43
|
if (Object.keys(body).length === 0) {
|
|
36
44
|
console.error("Error: provide at least one field to update");
|
|
37
45
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria-update.mjs","names":[],"sources":["../../src/commands/judging/criteria-update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaUpdateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n json?: boolean\n}\n\nexport function parseCriteriaUpdateOptions(args: string[]): CriteriaUpdateOptions {\n const options: CriteriaUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaUpdate(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n args: string[]\n): Promise<void> {\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--
|
|
1
|
+
{"version":3,"file":"criteria-update.mjs","names":[],"sources":["../../src/commands/judging/criteria-update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess, formatWarning } from \"../../output.js\"\nimport type { JudgingCriteria } from \"../../types.js\"\n\ninterface CriteriaUpdateOptions {\n name?: string\n description?: string\n maxScore?: number\n weight?: number\n category?: \"core\" | \"bonus\"\n json?: boolean\n}\n\nexport function parseCriteriaUpdateOptions(args: string[]): CriteriaUpdateOptions {\n const options: CriteriaUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--max-score\":\n options.maxScore = parseInt(args[++i], 10)\n break\n case \"--weight\":\n options.weight = parseFloat(args[++i])\n break\n case \"--category\":\n options.category = args[++i] as \"core\" | \"bonus\"\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runCriteriaUpdate(\n client: OatmealClient,\n hackathonId: string,\n criteriaId: string,\n args: string[]\n): Promise<void> {\n if (!criteriaId) {\n console.error(\"Usage: hackathon judging criteria update <hackathon-id> <criteria-id> [--name ...] [--category ...]\")\n process.exit(1)\n }\n\n const options = parseCriteriaUpdateOptions(args)\n\n if (options.maxScore !== undefined) {\n console.warn(formatWarning(\"--max-score is deprecated and has no effect in rubric mode\"))\n }\n\n if (options.weight !== undefined) {\n console.warn(formatWarning(\"--weight is deprecated and has no effect in rubric mode\"))\n }\n\n if (options.category !== undefined && options.category !== \"core\" && options.category !== \"bonus\") {\n console.error(\"Error: --category must be 'core' or 'bonus'\")\n process.exit(1)\n }\n\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.description !== undefined) body.description = options.description\n if (options.category !== undefined) body.category = options.category\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update\")\n process.exit(1)\n }\n\n const criteria = await client.patch<JudgingCriteria>(\n `/api/dashboard/hackathons/${hackathonId}/judging/criteria/${criteriaId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(criteria))\n return\n }\n\n console.log(formatSuccess(`Updated criteria \"${criteria.name}\"`))\n}\n"],"mappings":";;AAaA,SAAgB,2BAA2B,MAAuC;CAChF,MAAM,UAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAG;AAC1C;EACF,KAAK;AACH,WAAQ,SAAS,WAAW,KAAK,EAAE,GAAG;AACtC;EACF,KAAK;AACH,WAAQ,WAAW,KAAK,EAAE;AAC1B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,kBACpB,QACA,aACA,YACA,MACe;AACf,KAAI,CAAC,YAAY;AACf,UAAQ,MAAM,sGAAsG;AACpH,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,2BAA2B,KAAK;AAEhD,KAAI,QAAQ,aAAa,KAAA,EACvB,SAAQ,KAAK,cAAc,6DAA6D,CAAC;AAG3F,KAAI,QAAQ,WAAW,KAAA,EACrB,SAAQ,KAAK,cAAc,0DAA0D,CAAC;AAGxF,KAAI,QAAQ,aAAa,KAAA,KAAa,QAAQ,aAAa,UAAU,QAAQ,aAAa,SAAS;AACjG,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,gBAAgB,KAAA,EAAW,MAAK,cAAc,QAAQ;AAClE,KAAI,QAAQ,aAAa,KAAA,EAAW,MAAK,WAAW,QAAQ;AAE5D,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,WAAW,MAAM,OAAO,MAC5B,6BAA6B,YAAY,oBAAoB,cAC7D,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,SAAS,CAAC;AACjC;;AAGF,SAAQ,IAAI,cAAc,qBAAqB,SAAS,KAAK,GAAG,CAAC"}
|
package/dist/_chunks/delete5.mjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { r as formatSuccess } from "../cli.mjs";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
//#region src/commands/
|
|
4
|
-
async function
|
|
5
|
-
if (!
|
|
6
|
-
console.error("Usage: hackathon
|
|
3
|
+
//#region src/commands/tracks/delete.ts
|
|
4
|
+
async function runTracksDelete(client, hackathonId, trackId, options) {
|
|
5
|
+
if (!trackId) {
|
|
6
|
+
console.error("Usage: hackathon tracks delete <hackathon-id> <track-id>");
|
|
7
7
|
process.exit(1);
|
|
8
8
|
}
|
|
9
9
|
if (!options.yes) {
|
|
10
|
-
const confirm = await p.confirm({ message: `Delete
|
|
10
|
+
const confirm = await p.confirm({ message: `Delete track ${trackId}? This removes all rounds, buckets, and responses.` });
|
|
11
11
|
if (p.isCancel(confirm) || !confirm) {
|
|
12
12
|
p.log.info("Cancelled.");
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
await client.delete(`/api/
|
|
17
|
-
console.log(formatSuccess(`Deleted
|
|
16
|
+
await client.delete(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`);
|
|
17
|
+
console.log(formatSuccess(`Deleted track ${trackId}`));
|
|
18
18
|
}
|
|
19
19
|
//#endregion
|
|
20
|
-
export {
|
|
20
|
+
export { runTracksDelete };
|
|
21
21
|
|
|
22
22
|
//# sourceMappingURL=delete5.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete5.mjs","names":[],"sources":["../../src/commands/
|
|
1
|
+
{"version":3,"file":"delete5.mjs","names":[],"sources":["../../src/commands/tracks/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runTracksDelete(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!trackId) {\n console.error(\"Usage: hackathon tracks delete <hackathon-id> <track-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete track ${trackId}? This removes all rounds, buckets, and responses.` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`)\n console.log(formatSuccess(`Deleted track ${trackId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,gBACpB,QACA,aACA,SACA,SACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,2DAA2D;AACzE,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,gBAAgB,QAAQ,qDAAqD,CAAC;AACzH,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,6BAA6B,YAAY,gBAAgB,UAAU;AACvF,SAAQ,IAAI,cAAc,iBAAiB,UAAU,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { r as formatSuccess } from "../cli.mjs";
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
//#region src/commands/webhooks/delete.ts
|
|
4
|
+
async function runWebhooksDelete(client, webhookId, options) {
|
|
5
|
+
if (!webhookId) {
|
|
6
|
+
console.error("Usage: hackathon webhooks delete <webhook-id>");
|
|
7
|
+
process.exit(1);
|
|
8
|
+
}
|
|
9
|
+
if (!options.yes) {
|
|
10
|
+
const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` });
|
|
11
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
12
|
+
p.log.info("Cancelled.");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
await client.delete(`/api/v1/webhooks/${webhookId}`);
|
|
17
|
+
console.log(formatSuccess(`Deleted webhook ${webhookId}`));
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { runWebhooksDelete };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=delete6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete6.mjs","names":[],"sources":["../../src/commands/webhooks/delete.ts"],"sourcesContent":["import * as p from \"@clack/prompts\"\nimport type { OatmealClient } from \"../../client.js\"\nimport { formatSuccess } from \"../../output.js\"\n\nexport async function runWebhooksDelete(\n client: OatmealClient,\n webhookId: string,\n options: { yes?: boolean }\n): Promise<void> {\n if (!webhookId) {\n console.error(\"Usage: hackathon webhooks delete <webhook-id>\")\n process.exit(1)\n }\n\n if (!options.yes) {\n const confirm = await p.confirm({ message: `Delete webhook ${webhookId}?` })\n if (p.isCancel(confirm) || !confirm) {\n p.log.info(\"Cancelled.\")\n return\n }\n }\n\n await client.delete(`/api/v1/webhooks/${webhookId}`)\n console.log(formatSuccess(`Deleted webhook ${webhookId}`))\n}\n"],"mappings":";;;AAIA,eAAsB,kBACpB,QACA,WACA,SACe;AACf,KAAI,CAAC,WAAW;AACd,UAAQ,MAAM,gDAAgD;AAC9D,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,QAAQ,KAAK;EAChB,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,kBAAkB,UAAU,IAAI,CAAC;AAC5E,MAAI,EAAE,SAAS,QAAQ,IAAI,CAAC,SAAS;AACnC,KAAE,IAAI,KAAK,aAAa;AACxB;;;AAIJ,OAAM,OAAO,OAAO,oBAAoB,YAAY;AACpD,SAAQ,IAAI,cAAc,mBAAmB,YAAY,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { n as formatJson, t as formatDetail } from "../cli.mjs";
|
|
2
|
+
//#region src/commands/tracks/get.ts
|
|
3
|
+
async function runTracksGet(client, hackathonId, trackId, options) {
|
|
4
|
+
if (!trackId) {
|
|
5
|
+
console.error("Usage: hackathon tracks get <hackathon-id> <track-id>");
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
const track = await client.get(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`);
|
|
9
|
+
if (options.json) {
|
|
10
|
+
console.log(formatJson(track));
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
console.log(formatDetail([
|
|
14
|
+
{
|
|
15
|
+
label: "ID",
|
|
16
|
+
value: track.id
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: "Name",
|
|
20
|
+
value: track.name
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: "Description",
|
|
24
|
+
value: track.description ?? void 0
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: "Intent",
|
|
28
|
+
value: track.intent
|
|
29
|
+
}
|
|
30
|
+
]));
|
|
31
|
+
if (track.rounds.length > 0) {
|
|
32
|
+
console.log(`\nRounds (${track.rounds.length}):`);
|
|
33
|
+
for (const round of track.rounds) {
|
|
34
|
+
console.log(` ${round.name} — ${round.style ?? "no style"} [${round.status}]`);
|
|
35
|
+
if (round.buckets.length > 0) for (const b of round.buckets) console.log(` ${b.level}. ${b.label}${b.description ? ` — ${b.description}` : ""}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { runTracksGet };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=get5.mjs.map
|