bingo 0.5.3 → 0.5.5
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/lib/cli/createInitialCommit.d.ts +2 -2
- package/lib/cli/createInitialCommit.d.ts.map +1 -1
- package/lib/cli/createInitialCommit.js +2 -2
- package/lib/cli/createInitialCommit.js.map +1 -1
- package/lib/cli/createInitialCommit.test.js +7 -10
- package/lib/cli/createInitialCommit.test.js.map +1 -1
- package/lib/cli/loggers/logStartText.js +1 -1
- package/lib/cli/loggers/logStartText.js.map +1 -1
- package/lib/cli/prompts/promptForOptions.d.ts +20 -0
- package/lib/cli/prompts/promptForOptions.d.ts.map +1 -0
- package/lib/cli/prompts/promptForOptions.js +38 -0
- package/lib/cli/prompts/promptForOptions.js.map +1 -0
- package/lib/cli/prompts/promptForOwner.d.ts +2 -0
- package/lib/cli/prompts/promptForOwner.d.ts.map +1 -0
- package/lib/cli/prompts/promptForOwner.js +2 -0
- package/lib/cli/prompts/promptForOwner.js.map +1 -0
- package/lib/cli/prompts/promptForSchema.d.ts +3 -0
- package/lib/cli/prompts/promptForSchema.d.ts.map +1 -0
- package/lib/cli/prompts/promptForSchema.js +42 -0
- package/lib/cli/prompts/promptForSchema.js.map +1 -0
- package/lib/cli/prompts/validators.d.ts.map +1 -1
- package/lib/cli/runTemplateCLI.d.ts.map +1 -1
- package/lib/cli/runTemplateCLI.js +2 -1
- package/lib/cli/runTemplateCLI.js.map +1 -1
- package/lib/cli/setup/createRepositoryOnGitHub.d.ts +10 -2
- package/lib/cli/setup/createRepositoryOnGitHub.d.ts.map +1 -1
- package/lib/cli/setup/createRepositoryOnGitHub.js +24 -35
- package/lib/cli/setup/createRepositoryOnGitHub.js.map +1 -1
- package/lib/cli/setup/createRepositoryOnGitHub.test.js +90 -68
- package/lib/cli/setup/createRepositoryOnGitHub.test.js.map +1 -1
- package/lib/cli/setup/createTrackingBranches.d.ts +2 -2
- package/lib/cli/setup/createTrackingBranches.d.ts.map +1 -1
- package/lib/cli/setup/createTrackingBranches.js +4 -6
- package/lib/cli/setup/createTrackingBranches.js.map +1 -1
- package/lib/cli/setup/getOwner.d.ts +2 -0
- package/lib/cli/setup/getOwner.d.ts.map +1 -0
- package/lib/cli/setup/getOwner.js +2 -0
- package/lib/cli/setup/getOwner.js.map +1 -0
- package/lib/cli/setup/getRepositoryLocator.d.ts +2 -2
- package/lib/cli/setup/getRepositoryLocator.d.ts.map +1 -1
- package/lib/cli/setup/getRepositoryLocator.js +12 -7
- package/lib/cli/setup/getRepositoryLocator.js.map +1 -1
- package/lib/cli/setup/runModeSetup.d.ts +1 -2
- package/lib/cli/setup/runModeSetup.d.ts.map +1 -1
- package/lib/cli/setup/runModeSetup.js +31 -17
- package/lib/cli/setup/runModeSetup.js.map +1 -1
- package/lib/cli/transition/runModeTransition.d.ts.map +1 -1
- package/lib/cli/transition/runModeTransition.js +4 -1
- package/lib/cli/transition/runModeTransition.js.map +1 -1
- package/lib/cli/transition/runModeTransition.test.js +2 -2
- package/lib/cli/transition/runModeTransition.test.js.map +1 -1
- package/lib/config/createConfig.d.ts +9 -0
- package/lib/config/createConfig.d.ts.map +1 -0
- package/lib/config/createConfig.js +4 -0
- package/lib/config/createConfig.js.map +1 -0
- package/lib/config/types.d.ts +8 -0
- package/lib/config/types.d.ts.map +1 -0
- package/lib/config/types.js +2 -0
- package/lib/config/types.js.map +1 -0
- package/lib/creators/createTemplate.d.ts.map +1 -1
- package/lib/creators/createTemplate.js +7 -1
- package/lib/creators/createTemplate.js.map +1 -1
- package/lib/creators/createTemplate.test.d.ts +2 -0
- package/lib/creators/createTemplate.test.d.ts.map +1 -0
- package/lib/creators/createTemplate.test.js +20 -0
- package/lib/creators/createTemplate.test.js.map +1 -0
- package/lib/options.d.ts +14 -0
- package/lib/options.d.ts.map +1 -0
- package/lib/options.js +2 -0
- package/lib/options.js.map +1 -0
- package/lib/predicates/isCreatedConfig.d.ts +2 -3
- package/lib/predicates/isCreatedConfig.d.ts.map +1 -1
- package/lib/predicates/isCreatedConfig.js.map +1 -1
- package/lib/predicates/isCreatedConfig.test.js +7 -6
- package/lib/predicates/isCreatedConfig.test.js.map +1 -1
- package/package.json +8 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SystemRunner } from "bingo-systems";
|
|
2
2
|
export interface CreateInitialCommitSettings {
|
|
3
3
|
amend?: boolean;
|
|
4
|
-
|
|
4
|
+
push: boolean;
|
|
5
5
|
}
|
|
6
|
-
export declare function createInitialCommit(runner: SystemRunner, { amend,
|
|
6
|
+
export declare function createInitialCommit(runner: SystemRunner, { amend, push }: CreateInitialCommitSettings): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=createInitialCommit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInitialCommit.d.ts","sourceRoot":"","sources":["../../src/cli/createInitialCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"createInitialCommit.d.ts","sourceRoot":"","sources":["../../src/cli/createInitialCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,YAAY,EACpB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,2BAA2B,iBAS5C"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export async function createInitialCommit(runner, { amend,
|
|
1
|
+
export async function createInitialCommit(runner, { amend, push }) {
|
|
2
2
|
for (const command of [
|
|
3
3
|
`git add -A`,
|
|
4
4
|
`git commit --message feat:\\ initialized\\ repo\\ ✨ ${amend ? "--amend " : ""}--no-gpg-sign`,
|
|
5
|
-
...(
|
|
5
|
+
...(push ? [`git push -u origin main --force`] : []),
|
|
6
6
|
]) {
|
|
7
7
|
await runner(command);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInitialCommit.js","sourceRoot":"","sources":["../../src/cli/createInitialCommit.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,MAAoB,EACpB,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"createInitialCommit.js","sourceRoot":"","sources":["../../src/cli/createInitialCommit.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,MAAoB,EACpB,EAAE,KAAK,EAAE,IAAI,EAA+B;IAE5C,KAAK,MAAM,OAAO,IAAI;QACrB,YAAY;QACZ,uDAAuD,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe;QAC7F,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,EAAE,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACF,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { createInitialCommit } from "./createInitialCommit.js";
|
|
|
3
3
|
describe("createInitialCommit", () => {
|
|
4
4
|
test("runs without --amend when amend is falsy", async () => {
|
|
5
5
|
const runner = vi.fn();
|
|
6
|
-
await createInitialCommit(runner);
|
|
6
|
+
await createInitialCommit(runner, { push: false });
|
|
7
7
|
expect(runner.mock.calls).toMatchInlineSnapshot(`
|
|
8
8
|
[
|
|
9
9
|
[
|
|
@@ -12,15 +12,12 @@ describe("createInitialCommit", () => {
|
|
|
12
12
|
[
|
|
13
13
|
"git commit --message feat:\\ initialized\\ repo\\ ✨ --no-gpg-sign",
|
|
14
14
|
],
|
|
15
|
-
[
|
|
16
|
-
"git push -u origin main --force",
|
|
17
|
-
],
|
|
18
15
|
]
|
|
19
16
|
`);
|
|
20
17
|
});
|
|
21
18
|
test("runs with --amend when amend is true", async () => {
|
|
22
19
|
const runner = vi.fn();
|
|
23
|
-
await createInitialCommit(runner, { amend: true });
|
|
20
|
+
await createInitialCommit(runner, { amend: true, push: false });
|
|
24
21
|
expect(runner.mock.calls).toMatchInlineSnapshot(`
|
|
25
22
|
[
|
|
26
23
|
[
|
|
@@ -29,15 +26,12 @@ describe("createInitialCommit", () => {
|
|
|
29
26
|
[
|
|
30
27
|
"git commit --message feat:\\ initialized\\ repo\\ ✨ --amend --no-gpg-sign",
|
|
31
28
|
],
|
|
32
|
-
[
|
|
33
|
-
"git push -u origin main --force",
|
|
34
|
-
],
|
|
35
29
|
]
|
|
36
30
|
`);
|
|
37
31
|
});
|
|
38
|
-
test("
|
|
32
|
+
test("pushes to the remote when push is true", async () => {
|
|
39
33
|
const runner = vi.fn();
|
|
40
|
-
await createInitialCommit(runner, {
|
|
34
|
+
await createInitialCommit(runner, { push: true });
|
|
41
35
|
expect(runner.mock.calls).toMatchInlineSnapshot(`
|
|
42
36
|
[
|
|
43
37
|
[
|
|
@@ -46,6 +40,9 @@ describe("createInitialCommit", () => {
|
|
|
46
40
|
[
|
|
47
41
|
"git commit --message feat:\\ initialized\\ repo\\ ✨ --no-gpg-sign",
|
|
48
42
|
],
|
|
43
|
+
[
|
|
44
|
+
"git push -u origin main --force",
|
|
45
|
+
],
|
|
49
46
|
]
|
|
50
47
|
`);
|
|
51
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInitialCommit.test.js","sourceRoot":"","sources":["../../src/cli/createInitialCommit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"createInitialCommit.test.js","sourceRoot":"","sources":["../../src/cli/createInitialCommit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;GAS/C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;GAS/C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;GAY/C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -6,7 +6,7 @@ export function logStartText(mode, from, type, offline) {
|
|
|
6
6
|
` ${chalk.green(from)}`,
|
|
7
7
|
].join("\n"));
|
|
8
8
|
if (offline) {
|
|
9
|
-
prompts.log.message("--offline enabled. You'll need to git push any changes manually
|
|
9
|
+
prompts.log.message(`${chalk.blue("--offline")} enabled. You'll need to git push any changes manually.`);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=logStartText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logStartText.js","sourceRoot":"","sources":["../../../src/cli/loggers/logStartText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,UAAU,YAAY,CAC3B,IAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,OAA4B;IAE5B,OAAO,CAAC,GAAG,CAAC,IAAI,CACf;QACC,uBAAuB,IAAI,cAAc,IAAI,GAAG;QAChD,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAClB,
|
|
1
|
+
{"version":3,"file":"logStartText.js","sourceRoot":"","sources":["../../../src/cli/loggers/logStartText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,UAAU,YAAY,CAC3B,IAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,OAA4B;IAE5B,OAAO,CAAC,GAAG,CAAC,IAAI,CACf;QACC,uBAAuB,IAAI,cAAc,IAAI,GAAG;QAChD,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAClB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,yDAAyD,CACnF,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AnyShape, InferredObject } from "../../options.js";
|
|
2
|
+
import { SystemContext } from "../../types/system.js";
|
|
3
|
+
import { Template } from "../../types/templates.js";
|
|
4
|
+
export type PromptedOptions<Options extends object> = PromptedOptionsCancelled<Options> | PromptedOptionsProduced<Options>;
|
|
5
|
+
export interface PromptedOptionsCancelled<Options extends object> {
|
|
6
|
+
cancelled: true;
|
|
7
|
+
prompted: Partial<Options>;
|
|
8
|
+
}
|
|
9
|
+
export interface PromptedOptionsProduced<Options extends object> {
|
|
10
|
+
cancelled: false;
|
|
11
|
+
completed: Options;
|
|
12
|
+
prompted: Partial<Options>;
|
|
13
|
+
}
|
|
14
|
+
export interface PromptForOptionsSettings<OptionsShape extends AnyShape> {
|
|
15
|
+
existing: Partial<InferredObject<OptionsShape>>;
|
|
16
|
+
offline?: boolean;
|
|
17
|
+
system: SystemContext;
|
|
18
|
+
}
|
|
19
|
+
export declare function promptForOptions<OptionsShape extends AnyShape = AnyShape>(template: Template<OptionsShape>, { existing, offline, system }: PromptForOptionsSettings<OptionsShape>): Promise<PromptedOptions<InferredObject<OptionsShape>>>;
|
|
20
|
+
//# sourceMappingURL=promptForOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/promptForOptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,MAAM,IAC/C,wBAAwB,CAAC,OAAO,CAAC,GACjC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEpC,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,MAAM;IAC/D,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS,MAAM;IAC9D,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB,CAAC,YAAY,SAAS,QAAQ;IACtE,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACrC,YAAY,SAAS,QAAQ,GAAG,QAAQ,EAExC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,wBAAwB,CAAC,YAAY,CAAC,GACnE,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAwCxD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { prepareOptions } from "../../preparation/prepareOptions.js";
|
|
3
|
+
import { getSchemaDefaultValue } from "../../utils/getSchemaDefaultValue.js";
|
|
4
|
+
import { promptForSchema } from "./promptForSchema.js";
|
|
5
|
+
export async function promptForOptions(template, { existing, offline, system }) {
|
|
6
|
+
const { directory } = system;
|
|
7
|
+
const completed = {
|
|
8
|
+
directory,
|
|
9
|
+
...existing,
|
|
10
|
+
...(await prepareOptions(template, {
|
|
11
|
+
...system,
|
|
12
|
+
existing: { ...existing, directory },
|
|
13
|
+
offline,
|
|
14
|
+
})),
|
|
15
|
+
};
|
|
16
|
+
const prompted = {};
|
|
17
|
+
for (const [key, schema] of Object.entries(template.options)) {
|
|
18
|
+
const defaultValue = getSchemaDefaultValue(schema);
|
|
19
|
+
if ((schema.isOptional() && defaultValue === undefined) ||
|
|
20
|
+
completed[key] !== undefined) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const produced = await promptForSchema(key, schema, defaultValue);
|
|
24
|
+
if (prompts.isCancel(produced)) {
|
|
25
|
+
return { cancelled: true, prompted };
|
|
26
|
+
}
|
|
27
|
+
prompted[key] = produced;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
cancelled: false,
|
|
31
|
+
completed: {
|
|
32
|
+
...completed,
|
|
33
|
+
...prompted,
|
|
34
|
+
},
|
|
35
|
+
prompted,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=promptForOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForOptions.js","sourceRoot":"","sources":["../../../src/cli/prompts/promptForOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAuBvD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAGrC,QAAgC,EAChC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAA0C;IAIrE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,MAAM,SAAS,GAA6B;QAC3C,SAAS;QACT,GAAG,QAAQ;QACX,GAAG,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE;YAClC,GAAG,MAAM;YACT,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE;YACpC,OAAO;SACP,CAAC,CAAC;KACH,CAAC;IACF,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACnD,IACC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,YAAY,KAAK,SAAS,CAAC;YACnD,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAC3B,CAAC;YACF,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtC,CAAC;QAEA,QAA6B,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAChD,CAAC;IAED,OAAO;QACN,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE;YACV,GAAG,SAAS;YACZ,GAAG,QAAQ;SACA;QACZ,QAAQ;KACR,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForOwner.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/promptForOwner.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForOwner.js","sourceRoot":"","sources":["../../../src/cli/prompts/promptForOwner.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForSchema.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/promptForSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAMzB,wBAAsB,eAAe,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,YAAY,EAAE,OAAO,oBA+CrB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
import { validateNumber, validatorFromSchema } from "./validators.js";
|
|
4
|
+
export async function promptForSchema(key, schema, defaultValue) {
|
|
5
|
+
const def = schema._def;
|
|
6
|
+
const message = schema.description
|
|
7
|
+
? `What will the ${schema.description} be? (--${key})`
|
|
8
|
+
: `What will the --${key} be?`;
|
|
9
|
+
let value;
|
|
10
|
+
while (value === undefined || value === "") {
|
|
11
|
+
switch (def.typeName) {
|
|
12
|
+
case z.ZodFirstPartyTypeKind.ZodBoolean: {
|
|
13
|
+
value = await prompts.confirm({
|
|
14
|
+
initialValue: defaultValue,
|
|
15
|
+
message,
|
|
16
|
+
});
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
case z.ZodFirstPartyTypeKind.ZodNumber:
|
|
20
|
+
value = Number(await prompts.text({
|
|
21
|
+
message,
|
|
22
|
+
placeholder: defaultValue,
|
|
23
|
+
validate: validateNumber,
|
|
24
|
+
}));
|
|
25
|
+
break;
|
|
26
|
+
// TODO: Handle numeric literals, unions, ...
|
|
27
|
+
default: {
|
|
28
|
+
const text = await prompts.text({
|
|
29
|
+
message,
|
|
30
|
+
placeholder: defaultValue,
|
|
31
|
+
validate: validatorFromSchema(schema),
|
|
32
|
+
});
|
|
33
|
+
if (prompts.isCancel(text)) {
|
|
34
|
+
return text;
|
|
35
|
+
}
|
|
36
|
+
return schema.parse(text);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=promptForSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForSchema.js","sourceRoot":"","sources":["../../../src/cli/prompts/promptForSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAItE,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,GAAW,EACX,MAAoB,EACpB,YAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAc,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW;QACjC,CAAC,CAAC,iBAAiB,MAAM,CAAC,WAAW,WAAW,GAAG,GAAG;QACtD,CAAC,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAChC,IAAI,KAAc,CAAC;IAEnB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC5C,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzC,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;oBAC7B,YAAY,EAAE,YAAuB;oBACrC,OAAO;iBACP,CAAC,CAAC;gBACH,MAAM;YACP,CAAC;YAED,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;gBACrC,KAAK,GAAG,MAAM,CACb,MAAM,OAAO,CAAC,IAAI,CAAC;oBAClB,OAAO;oBACP,WAAW,EAAE,YAAsB;oBACnC,QAAQ,EAAE,cAAc;iBACxB,CAAC,CACF,CAAC;gBACF,MAAM;YAEP,6CAA6C;YAE7C,OAAO,CAAC,CAAC,CAAC;gBACT,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC/B,OAAO;oBACP,WAAW,EAAE,YAAsB;oBACnC,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC;iBACrC,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC;gBACb,CAAC;gBAED,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qGAMjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,+CAI3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qGAMjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,+CAI3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,IAC/C,OAAO,MAAM,wBAKrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTemplateCLI.d.ts","sourceRoot":"","sources":["../../src/cli/runTemplateCLI.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runTemplateCLI.d.ts","sourceRoot":"","sources":["../../src/cli/runTemplateCLI.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACN,kBAAkB,EAElB,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAsB,cAAc,CACnC,YAAY,SAAS,QAAQ,EAC7B,WAAW,EAEX,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,EAC7C,2BAA2B,CAAC,EAAE,kBAAkB,sBAgChD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as prompts from "@clack/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
import { packageData } from "../packageData.js";
|
|
3
4
|
import { runInsideClackDisplay, } from "./display/runInsideClackDisplay.js";
|
|
4
5
|
import { getTemplatePackageData } from "./getTemplatePackageData.js";
|
|
@@ -25,7 +26,7 @@ export async function runTemplateCLI(template, providedTemplatePackageData) {
|
|
|
25
26
|
}
|
|
26
27
|
return await runInsideClackDisplay(templatePackageData, async (display) => {
|
|
27
28
|
if (template.about?.repository) {
|
|
28
|
-
prompts.log.info(`Learn more on:\n https://github.com/${template.about.repository.owner}/${template.about.repository.repository}`);
|
|
29
|
+
prompts.log.info(`Learn more on:\n ${chalk.blue(`https://github.com/${template.about.repository.owner}/${template.about.repository.repository}`)}`);
|
|
29
30
|
}
|
|
30
31
|
return await runCLI({
|
|
31
32
|
args,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTemplateCLI.js","sourceRoot":"","sources":["../../src/cli/runTemplateCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"runTemplateCLI.js","sourceRoot":"","sources":["../../src/cli/runTemplateCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAEN,qBAAqB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAInC,QAA6C,EAC7C,2BAAgD;IAEhD,MAAM,mBAAmB,GACxB,2BAA2B,IAAI,CAAC,MAAM,sBAAsB,EAAE,CAAC,CAAC;IAEjE,IAAI,mBAAmB,YAAY,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,IAAI,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,SAAS,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,qBAAqB,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzE,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CACf,qBAAqB,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,CAClI,CAAC;QACH,CAAC;QAED,OAAO,MAAM,MAAM,CAAC;YACnB,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,QAAQ;YACR,MAAM;SACN,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import { SystemRunner } from "bingo-systems";
|
|
1
2
|
import { Octokit } from "octokit";
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
3
|
+
import { ClackDisplay } from "../display/createClackDisplay.js";
|
|
4
|
+
export interface PartialRepositoryLocator {
|
|
5
|
+
owner?: string;
|
|
6
|
+
repository: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RepositoryLocator extends PartialRepositoryLocator {
|
|
9
|
+
owner: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function createRepositoryOnGitHub(display: ClackDisplay, { owner: requestedOwner, repository }: PartialRepositoryLocator, octokit: Octokit, runner: SystemRunner, template?: RepositoryLocator): Promise<Error | RepositoryLocator | undefined>;
|
|
4
12
|
//# sourceMappingURL=createRepositoryOnGitHub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRepositoryOnGitHub.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"createRepositoryOnGitHub.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE,MAAM,WAAW,wBAAwB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IAClE,KAAK,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,YAAY,EACrB,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,wBAAwB,EAC/D,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,KAAK,GAAG,iBAAiB,GAAG,SAAS,CAAC,CAqChD"}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { newGitHubRepository } from "new-github-repository";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { runSpinnerTask } from "../display/runSpinnerTask.js";
|
|
4
|
+
import { promptForOptionSchema } from "../prompts/promptForOptionSchema.js";
|
|
5
|
+
export async function createRepositoryOnGitHub(display, { owner: requestedOwner, repository }, octokit, runner, template) {
|
|
6
|
+
const owner = requestedOwner ??
|
|
7
|
+
stdoutIfNotError(await runner("gh config get user -h github.com")) ??
|
|
8
|
+
(await promptForOptionSchema("owner", z.string(), "GitHub organization or user the repository is underneath", undefined));
|
|
9
|
+
if (!isStringLike(owner)) {
|
|
10
|
+
return new Error(`To run with --mode setup, --owner must be a string-like, not ${typeof owner}.`);
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (currentUser.data.login === target.owner) {
|
|
13
|
-
await octokit.rest.repos.createForAuthenticatedUser({
|
|
14
|
-
name: target.repository,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
await octokit.rest.repos.createInOrg({
|
|
19
|
-
name: target.repository,
|
|
20
|
-
org: target.owner,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
12
|
+
if (!isStringLike(repository)) {
|
|
13
|
+
return new Error(`To run with --mode setup, --repository must be a string-like, not ${typeof repository}.`);
|
|
23
14
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// but we can approximate that by polling for whether labels are created.
|
|
27
|
-
// https://github.com/JoshuaKGoldberg/bingo/issues/243
|
|
28
|
-
// On the off chance the repository's organization has no default labels,
|
|
29
|
-
// we only retry up to 10 times.
|
|
30
|
-
for (let i = 0; i < 10; i += 1) {
|
|
31
|
-
const response = await octokit.request("GET /repos/{owner}/{repo}/labels", {
|
|
32
|
-
owner: target.owner,
|
|
33
|
-
repo: target.repository,
|
|
34
|
-
});
|
|
35
|
-
if (response.data.length) {
|
|
36
|
-
break;
|
|
37
|
-
}
|
|
15
|
+
if (typeof owner !== "string") {
|
|
16
|
+
return undefined;
|
|
38
17
|
}
|
|
18
|
+
const error = await runSpinnerTask(display, "Creating repository on GitHub", "Created repository on GitHub", async () => {
|
|
19
|
+
await newGitHubRepository({ octokit, owner, repository, template });
|
|
20
|
+
});
|
|
21
|
+
return error ? undefined : { owner, repository };
|
|
22
|
+
}
|
|
23
|
+
function isStringLike(value) {
|
|
24
|
+
return ["boolean", "number", "string", "undefined"].includes(typeof value);
|
|
25
|
+
}
|
|
26
|
+
function stdoutIfNotError(value) {
|
|
27
|
+
return value instanceof Error ? undefined : value.stdout;
|
|
39
28
|
}
|
|
40
29
|
//# sourceMappingURL=createRepositoryOnGitHub.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRepositoryOnGitHub.js","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createRepositoryOnGitHub.js","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAW5E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAAqB,EACrB,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAA4B,EAC/D,OAAgB,EAChB,MAAoB,EACpB,QAA4B;IAE5B,MAAM,KAAK,GACV,cAAc;QACd,gBAAgB,CAAC,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAClE,CAAC,MAAM,qBAAqB,CAC3B,OAAO,EACP,CAAC,CAAC,MAAM,EAAE,EACV,0DAA0D,EAC1D,SAAS,CACT,CAAC,CAAC;IAEJ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,KAAK,CACf,gEAAgE,OAAO,KAAK,GAAG,CAC/E,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,KAAK,CACf,qEAAqE,OAAO,UAAU,GAAG,CACzF,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,cAAc,CACjC,OAAO,EACP,+BAA+B,EAC/B,8BAA8B,EAC9B,KAAK,IAAI,EAAE;QACV,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC,CACD,CAAC;IAEF,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA0B;IACnD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,CAAC"}
|
|
@@ -1,81 +1,103 @@
|
|
|
1
1
|
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
import { createRepositoryOnGitHub } from "./createRepositoryOnGitHub.js";
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const mockRequest = vi.fn();
|
|
9
|
-
const createMockOctokit = () => ({
|
|
10
|
-
request: mockRequest,
|
|
11
|
-
rest: {
|
|
12
|
-
repos: {
|
|
13
|
-
createForAuthenticatedUser: mockCreateForAuthenticatedUser,
|
|
14
|
-
createInOrg: mockCreateInOrg,
|
|
15
|
-
createUsingTemplate: mockCreateUsingTemplate,
|
|
16
|
-
},
|
|
17
|
-
users: {
|
|
18
|
-
getAuthenticated: mockGetAuthenticated,
|
|
19
|
-
},
|
|
4
|
+
vi.mock("@clack/prompts");
|
|
5
|
+
const mockNewGitHubRepository = vi.fn();
|
|
6
|
+
vi.mock("new-github-repository", () => ({
|
|
7
|
+
get newGitHubRepository() {
|
|
8
|
+
return mockNewGitHubRepository;
|
|
20
9
|
},
|
|
21
|
-
});
|
|
10
|
+
}));
|
|
11
|
+
const mockPromptForOptionSchema = vi.fn();
|
|
12
|
+
vi.mock("../prompts/promptForOptionSchema.js", () => ({
|
|
13
|
+
get promptForOptionSchema() {
|
|
14
|
+
return mockPromptForOptionSchema;
|
|
15
|
+
},
|
|
16
|
+
}));
|
|
17
|
+
const display = {
|
|
18
|
+
dumpItems: vi.fn(),
|
|
19
|
+
item: vi.fn(),
|
|
20
|
+
log: vi.fn(),
|
|
21
|
+
spinner: {
|
|
22
|
+
message: vi.fn(),
|
|
23
|
+
start: vi.fn(),
|
|
24
|
+
stop: vi.fn(),
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
const mockOctokit = {};
|
|
22
28
|
describe("createRepositoryOnGitHub", () => {
|
|
23
|
-
it("
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
32
|
-
expect(mockCreateUsingTemplate).toHaveBeenCalledWith({
|
|
33
|
-
name: options.repository,
|
|
34
|
-
owner: options.owner,
|
|
35
|
-
template_owner: template.owner,
|
|
36
|
-
template_repo: template.repository,
|
|
37
|
-
});
|
|
29
|
+
it("returns an error when owner is not a string-like", async () => {
|
|
30
|
+
const mockRunner = vi.fn();
|
|
31
|
+
const actual = await createRepositoryOnGitHub(display,
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
{ owner: { invalid: true }, repository: "mock-repository" }, mockOctokit, mockRunner);
|
|
34
|
+
expect(actual).toEqual(new Error(`To run with --mode setup, --owner must be a string-like, not object.`));
|
|
35
|
+
expect(mockRunner).not.toHaveBeenCalled();
|
|
36
|
+
expect(mockPromptForOptionSchema).not.toHaveBeenCalled();
|
|
37
|
+
expect(mockNewGitHubRepository).not.toHaveBeenCalled();
|
|
38
38
|
});
|
|
39
|
-
it("
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
expect(
|
|
48
|
-
|
|
39
|
+
it("returns an error when repository is not a string-like", async () => {
|
|
40
|
+
const mockRunner = vi.fn();
|
|
41
|
+
const actual = await createRepositoryOnGitHub(display,
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
{ owner: "mock-owner", repository: { invalid: true } }, mockOctokit, mockRunner);
|
|
44
|
+
expect(actual).toEqual(new Error(`To run with --mode setup, --repository must be a string-like, not object.`));
|
|
45
|
+
expect(mockRunner).not.toHaveBeenCalled();
|
|
46
|
+
expect(mockPromptForOptionSchema).not.toHaveBeenCalled();
|
|
47
|
+
expect(mockNewGitHubRepository).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
it("returns a repository locator from a requested owner and repository when both are provided", async () => {
|
|
50
|
+
const owner = "mock-owner";
|
|
51
|
+
const repository = "mock-repository";
|
|
52
|
+
const mockRunner = vi.fn();
|
|
53
|
+
const actual = await createRepositoryOnGitHub(display, { owner, repository }, mockOctokit, mockRunner);
|
|
54
|
+
expect(actual).toEqual({ owner, repository });
|
|
55
|
+
expect(mockRunner).not.toHaveBeenCalled();
|
|
56
|
+
expect(mockPromptForOptionSchema).not.toHaveBeenCalled();
|
|
57
|
+
expect(mockNewGitHubRepository).toHaveBeenCalledWith({
|
|
58
|
+
octokit: mockOctokit,
|
|
59
|
+
owner,
|
|
60
|
+
repository,
|
|
61
|
+
template: undefined,
|
|
49
62
|
});
|
|
50
|
-
expect(mockCreateInOrg).not.toHaveBeenCalled();
|
|
51
|
-
expect(mockCreateUsingTemplate).not.toHaveBeenCalled();
|
|
52
63
|
});
|
|
53
|
-
it("
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
await createRepositoryOnGitHub(
|
|
58
|
-
expect(
|
|
59
|
-
expect(
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
it("returns a repository locator for the gh user when owner is undefined, gh retrieves a user, and creation succeeds", async () => {
|
|
65
|
+
const owner = "mock-owner";
|
|
66
|
+
const repository = "mock-repository";
|
|
67
|
+
const mockRunner = vi.fn().mockResolvedValue({ stdout: owner });
|
|
68
|
+
const actual = await createRepositoryOnGitHub(display, { owner: undefined, repository }, mockOctokit, mockRunner);
|
|
69
|
+
expect(actual).toEqual({ owner, repository });
|
|
70
|
+
expect(mockRunner).toHaveBeenCalledWith("gh config get user -h github.com");
|
|
71
|
+
expect(mockPromptForOptionSchema).not.toHaveBeenCalled();
|
|
72
|
+
expect(mockNewGitHubRepository).toHaveBeenCalledWith({
|
|
73
|
+
octokit: mockOctokit,
|
|
74
|
+
owner,
|
|
75
|
+
repository,
|
|
76
|
+
template: undefined,
|
|
62
77
|
});
|
|
63
|
-
expect(mockCreateUsingTemplate).not.toHaveBeenCalled();
|
|
64
78
|
});
|
|
65
|
-
it("
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
expect(
|
|
79
|
+
it("returns a repository locator for the prompted user when owner is undefined, gh errors, and creation succeeds", async () => {
|
|
80
|
+
const owner = "mock-owner";
|
|
81
|
+
const repository = "mock-repository";
|
|
82
|
+
const mockRunner = vi.fn().mockResolvedValue(new Error("Oh no!"));
|
|
83
|
+
mockPromptForOptionSchema.mockResolvedValueOnce(owner);
|
|
84
|
+
const actual = await createRepositoryOnGitHub(display, { owner: undefined, repository }, mockOctokit, mockRunner);
|
|
85
|
+
expect(actual).toEqual({ owner, repository });
|
|
86
|
+
expect(mockRunner).toHaveBeenCalledWith("gh config get user -h github.com");
|
|
87
|
+
expect(mockPromptForOptionSchema).toHaveBeenCalledWith("owner", expect.any(z.ZodString), expect.any(String), undefined);
|
|
88
|
+
expect(mockNewGitHubRepository).toHaveBeenCalledWith({
|
|
89
|
+
octokit: mockOctokit,
|
|
90
|
+
owner,
|
|
91
|
+
repository,
|
|
92
|
+
template: undefined,
|
|
93
|
+
});
|
|
73
94
|
});
|
|
74
|
-
it("
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
95
|
+
it("returns undefined when creating a repository errors", async () => {
|
|
96
|
+
const owner = "mock-owner";
|
|
97
|
+
const repository = "mock-repository";
|
|
98
|
+
mockNewGitHubRepository.mockRejectedValueOnce(new Error("Oh no!"));
|
|
99
|
+
const actual = await createRepositoryOnGitHub(display, { owner, repository }, mockOctokit, vi.fn());
|
|
100
|
+
expect(actual).toBeUndefined();
|
|
79
101
|
});
|
|
80
102
|
});
|
|
81
103
|
//# sourceMappingURL=createRepositoryOnGitHub.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRepositoryOnGitHub.test.js","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"createRepositoryOnGitHub.test.js","sourceRoot":"","sources":["../../../src/cli/setup/createRepositoryOnGitHub.test.ts"],"names":[],"mappings":"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"}
|