create-backpack-app 0.1.10 → 0.1.11

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/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import H from"chalk";import{Command as V}from"commander";import p from"inquirer";var L=/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,y=e=>{let t=e.split("/"),o=t.findIndex(l=>l.startsWith("@")),a=t[t.length-1];return t.findIndex(l=>l.startsWith("@"))!==-1&&(a=t.slice(o).join("/")),e==="."||L.test(a??"")?!0:"App name must consist of only lowercase alphanumeric characters, '-', and '_'"},f=e=>!0,d=e=>!0;var m={"Storyblok NextJS Backpack Boilerplate":"git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git","NextJS Backpack Boilerplate":"git@github.com:ef-global/nextjs-backpack-boilerplate.git","ReactJS Backpack Boilerplate":"git@github.com:ef-global/reactjs-backpack-boilerplate.git"},h=[{name:"Storyblok NextJS Backpack Boilerplate",value:m["Storyblok NextJS Backpack Boilerplate"]},{name:"NextJS Backpack Boilerplate",value:m["NextJS Backpack Boilerplate"]},{name:"ReactJS Backpack Boilerplate",value:m["ReactJS Backpack Boilerplate"]}],x=[{name:"components",checked:!0},{name:"datasources",checked:!0},{name:"roles",checked:!0},{name:"content",checked:!1}];var w=async()=>{let{appName:e}=await p.prompt({name:"appName",type:"input",message:"What will your project be called?",default:"new-backpack-app",validate:y,transformer:t=>t.trim()});return e},S=async()=>{let{spaceId:e}=await p.prompt({name:"spaceId",type:"input",message:"Insert your space id",default:"00000",validate:f,transformer:t=>t.trim()});return e},I=async()=>{let{OAuthToken:e}=await p.prompt({name:"OAuthToken",type:"input",message:"Insert your OAuthToken",default:"00000",validate:d,transformer:t=>t.trim()});return e};var T=async()=>{let{inWorkshop:e}=await p.prompt({type:"confirm",name:"inWorkshop",message:"Are you in workshop?",default:!1});return e},v=async()=>{let{areYouSure:e}=await p.prompt({type:"confirm",name:"areYouSure",message:"Is all the answers correct?",default:!1});return e},M=async()=>{let{install:e}=await p.prompt({type:"confirm",name:"install",message:"Do you want to run auto configuration (packages install, syncing components, initializing project)?",default:!0});return e},P=async()=>{let{templateUrl:e}=await p.prompt({type:"list",name:"templateUrl",message:"Select template",choices:h});return e},A=async()=>{let{sbMigFeatures:e}=await p.prompt({type:"checkbox",name:"sbMigFeatures",message:"What would you like to sync initially ?",choices:x});return e};import{execa as r}from"execa";import s from"ora";import{rimraf as D}from"rimraf";import u from"path";import{fileURLToPath as G}from"url";import z from"fs-extra";var i=async e=>{e.stdout.pipe(process.stdout),e.stderr.pipe(process.stderr);try{let{stdout:t}=await e;return t}catch(t){console.log(t)}},c=()=>{let e=process.env.npm_config_user_agent;return e&&e.startsWith("yarn")?"yarn":"npm"},C=async(e,t)=>{let o=s("Cloning repo").start(),a=r(`git clone ${e} ${t}`,{shell:!0});return await i(a),o.stop(),a},g=async e=>{let t=s("Cleaning").start(),o=await D(`${e}/.git`);return t.stop(),o},N=async e=>{let t=s("Initializing GIT").start(),o=r(`cd ${e} && git init`,{shell:!0});return await i(o),t.stop(),o},O=async(e,t,o)=>{let a=s("Initializing storyblok project").start(),l=r(`cd ${e} && sb-mig init project --spaceId=${t} --oauthToken=${o}`,{shell:!0});return await i(l),a.stop(),l},j=async e=>{let t=s("Installing dependencies").start(),o=c();console.log("This is current user package manage: "),console.log(o);let a=r(`cd ${e} && ${o} install`,{shell:!0});return await i(a),t.stop(),a},$=async e=>{let t=s("Syncing schemas").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:components:all`,{shell:!0});return await i(a),t.stop(),a},B=async e=>{let t=s("Syncing datasources").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:datasources:all`,{shell:!0});return await i(a),t.stop(),a},R=async e=>{let t=s("Syncing roles").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:roles:all`,{shell:!0});return await i(a),t.stop(),a},U=async e=>{let t=s("Syncing content").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:contents:all:yes`,{shell:!0});return await i(a),t.stop(),a},F=async e=>{let t=s("Creating Local HTTPs").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} create:https`,{shell:!0});return await i(a),t.stop(),a},_=G(import.meta.url),Y=u.dirname(_),E=u.join(Y,"../"),J=()=>{let e=u.join(E,"package.json");return z.readJSONSync(e).version??"1.0.0"};var k=async e=>{let{templateUrl:t,sbMigFeatures:o,spaceId:a="",OAuthToken:l="",appName:n,inWorkshop:b=!1}=e;if(await C(t,n),b||(await g(n),await N(n)),b||await g(n),e.install&&await j(n),t==="git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git"&&e.install)try{console.log("you've selecvted storyblok-nextjs-backpack-boilerplate"),await O(n,a,l),await F(n),o.includes("components")&&await $(n),o.includes("datasources")&&await B(n),o.includes("roles")&&await R(n),o.includes("content")&&await U(n)}catch(W){console.log("error happened..."),console.log(W)}};var q=async()=>{let e={},t=new V().name("create-backpack-app");if(t.description("A CLI for creating projects with @ef-global/backpack").argument("[dir]","The name of the application, as well as the name of the directory to create").option("--appName <appName>","Name of your application",!1).option("--inWorkshop","Pass it if you are in the workshop",!1).option("--templateUrl <template>","Template you would like to use (storyblok, nextjs, reactjs)","reactjs").option("--spaceId <spaceId>","Space ID for Storyblok",!1).option("--OAuthToken <token>","OAuth Token for Storyblok",!1).option("--sbMigFeatures <sbMigFeatures...>","What would you would like to sync with sb-mig automatically (components, roles, datasources, content)",[]).option("--noGit","Explicitly tell the CLI to not initialize a new git repo in the project",!1).option("--install","Explicitly tell the CLI to not run all the auto syncing and install",!1).option("--dryRun","Dry Run command",!1).version(J(),"-v, --version","Display the version number").addHelpText("afterAll","Done").parse(process.argv),process.argv.length>2)e={...t.opts()},e.dryRun?console.log("CLI Options passed to execute",e):await k(e);else{e.appName=await w(),console.log(" "),e.inWorkshop=await T(),console.log(" "),e.templateUrl=await P(),console.log(" "),e.install=await M(),console.log(" "),e.templateUrl==="git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git"&&e.install&&(console.log("you've selecvted storyblok-nextjs-backpack-boilerplate"),e.sbMigFeatures=await A(),console.log(" "),e.spaceId=await S(),console.log(" "),e.OAuthToken=await I(),console.log(" ")),console.log("cliOptions to run cli command with: ",{cliOptions:e});let o=await v();console.log(" "),o||(console.log(H.red("Aborting creation...")),process.exit(1)),await k(e)}};q().catch(e=>{console.log("Aborting installation..."),e instanceof Error||console.log("An unknown error has occurred. Please open an issue on github with the below:"),console.log(e),process.exit(1)});
2
+ import H from"chalk";import{Command as V}from"commander";import p from"inquirer";var L=/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,y=e=>{let t=e.split("/"),o=t.findIndex(l=>l.startsWith("@")),a=t[t.length-1];return t.findIndex(l=>l.startsWith("@"))!==-1&&(a=t.slice(o).join("/")),e==="."||L.test(a??"")?!0:"App name must consist of only lowercase alphanumeric characters, '-', and '_'"},d=e=>!0,f=e=>!0;var m={"Storyblok NextJS Backpack Boilerplate":"git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git","NextJS Backpack Boilerplate":"git@github.com:ef-global/nextjs-backpack-boilerplate.git","ReactJS Backpack Boilerplate":"git@github.com:ef-global/reactjs-backpack-boilerplate.git"},h=[{name:"Storyblok NextJS Backpack Boilerplate",value:m["Storyblok NextJS Backpack Boilerplate"]},{name:"NextJS Backpack Boilerplate",value:m["NextJS Backpack Boilerplate"]},{name:"ReactJS Backpack Boilerplate",value:m["ReactJS Backpack Boilerplate"]}],x=[{name:"components",checked:!0},{name:"datasources",checked:!0},{name:"roles",checked:!0},{name:"content",checked:!1}];var w=async()=>{let{appName:e}=await p.prompt({name:"appName",type:"input",message:"What will your project be called?",default:"new-backpack-app",validate:y,transformer:t=>t.trim()});return e},S=async()=>{let{spaceId:e}=await p.prompt({name:"spaceId",type:"input",message:"Insert your space id",default:"00000",validate:d,transformer:t=>t.trim()});return e},I=async()=>{let{OAuthToken:e}=await p.prompt({name:"OAuthToken",type:"input",message:"Insert your OAuthToken",default:"00000",validate:f,transformer:t=>t.trim()});return e};var T=async()=>{let{inWorkshop:e}=await p.prompt({type:"confirm",name:"inWorkshop",message:"Are you in workshop?",default:!1});return e},v=async()=>{let{areYouSure:e}=await p.prompt({type:"confirm",name:"areYouSure",message:"Is all the answers correct?",default:!0});return e},M=async()=>{let{install:e}=await p.prompt({type:"confirm",name:"install",message:"Do you want to run auto configuration (packages install, syncing components, initializing project)?",default:!0});return e},P=async()=>{let{templateUrl:e}=await p.prompt({type:"list",name:"templateUrl",message:"Select template",choices:h});return e},A=async()=>{let{sbMigFeatures:e}=await p.prompt({type:"checkbox",name:"sbMigFeatures",message:"What would you like to sync initially ?",choices:x});return e};import{execa as r}from"execa";import s from"ora";import{rimraf as D}from"rimraf";import u from"path";import{fileURLToPath as G}from"url";import z from"fs-extra";var i=async e=>{e.stdout.pipe(process.stdout),e.stderr.pipe(process.stderr);try{let{stdout:t}=await e;return t}catch(t){console.log(t)}},c=()=>{let e=process.env.npm_config_user_agent;return e&&e.startsWith("yarn")?"yarn":"npm"},C=async(e,t)=>{let o=s("Cloning repo").start(),a=r(`git clone ${e} ${t}`,{shell:!0});return await i(a),o.stop(),a},g=async e=>{let t=s("Cleaning").start(),o=await D(`${e}/.git`);return t.stop(),o},N=async e=>{let t=s("Initializing GIT").start(),o=r(`cd ${e} && git init`,{shell:!0});return await i(o),t.stop(),o},O=async(e,t,o)=>{let a=s("Initializing storyblok project").start(),l=r(`cd ${e} && sb-mig init project --spaceId=${t} --oauthToken=${o}`,{shell:!0});return await i(l),a.stop(),l},j=async e=>{let t=s("Installing dependencies").start(),o=c();console.log("This is current user package manage: "),console.log(o);let a=r(`cd ${e} && ${o} install`,{shell:!0});return await i(a),t.stop(),a},$=async e=>{let t=s("Syncing schemas").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:components:all`,{shell:!0});return await i(a),t.stop(),a},B=async e=>{let t=s("Syncing datasources").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:datasources:all`,{shell:!0});return await i(a),t.stop(),a},R=async e=>{let t=s("Syncing roles").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:roles:all`,{shell:!0});return await i(a),t.stop(),a},U=async e=>{let t=s("Syncing content").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} sync:contents:all:yes`,{shell:!0});return await i(a),t.stop(),a},F=async e=>{let t=s("Creating Local HTTPs").start(),o=c(),a=r(`cd ${e} && ${o==="npm"?`${o} run`:o} create:https`,{shell:!0});return await i(a),t.stop(),a},_=G(import.meta.url),Y=u.dirname(_),E=u.join(Y,"../"),J=()=>{let e=u.join(E,"package.json");return z.readJSONSync(e).version??"1.0.0"};var k=async e=>{let{templateUrl:t,sbMigFeatures:o,spaceId:a="",OAuthToken:l="",appName:n,inWorkshop:b=!1}=e;if(await C(t,n),b||(await g(n),await N(n)),b||await g(n),e.install&&await j(n),t==="git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git"&&e.install)try{console.log("you've selecvted storyblok-nextjs-backpack-boilerplate"),await O(n,a,l),await F(n),o.includes("components")&&await $(n),o.includes("datasources")&&await B(n),o.includes("roles")&&await R(n),o.includes("content")&&await U(n)}catch(W){console.log("error happened..."),console.log(W)}};var q=async()=>{let e={},t=new V().name("create-backpack-app");if(t.description("A CLI for creating projects with @ef-global/backpack").argument("[dir]","The name of the application, as well as the name of the directory to create").option("--appName <appName>","Name of your application",!1).option("--inWorkshop","Pass it if you are in the workshop",!1).option("--templateUrl <template>","Template you would like to use (storyblok, nextjs, reactjs)","reactjs").option("--spaceId <spaceId>","Space ID for Storyblok",!1).option("--OAuthToken <token>","OAuth Token for Storyblok",!1).option("--sbMigFeatures <sbMigFeatures...>","What would you would like to sync with sb-mig automatically (components, roles, datasources, content)",[]).option("--noGit","Explicitly tell the CLI to not initialize a new git repo in the project",!1).option("--install","Explicitly tell the CLI to not run all the auto syncing and install",!1).option("--dryRun","Dry Run command",!1).version(J(),"-v, --version","Display the version number").addHelpText("afterAll","Done").parse(process.argv),process.argv.length>2)e={...t.opts()},e.dryRun?console.log("CLI Options passed to execute",e):await k(e);else{e.appName=await w(),console.log(" "),e.inWorkshop=await T(),console.log(" "),e.templateUrl=await P(),console.log(" "),e.install=await M(),console.log(" "),e.templateUrl==="git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git"&&e.install&&(console.log("you've selecvted storyblok-nextjs-backpack-boilerplate"),e.sbMigFeatures=await A(),console.log(" "),e.spaceId=await S(),console.log(" "),e.OAuthToken=await I(),console.log(" ")),console.log("cliOptions to run cli command with: ",{cliOptions:e});let o=await v();console.log(" "),o||(console.log(H.red("Aborting creation...")),process.exit(1)),await k(e)}};q().catch(e=>{console.log("Aborting installation..."),e instanceof Error||console.log("An unknown error has occurred. Please open an issue on github with the below:"),console.log(e),process.exit(1)});
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/prompts.ts","../src/validators.ts","../src/constants.ts","../src/utils.ts","../src/execute.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport {\n promptAppName,\n promptList,\n promptOAuthToken,\n promptSpaceId,\n promptIfInWorkshop, promptSbMigFeatures, promptInstall, promptAreYouSure\n} from \"./prompts.js\";\nimport {execute} from \"./execute.js\";\nimport {TemplateUrls} from \"./constants.js\";\nimport {getVersion} from \"./utils.js\";\n\n\nexport interface CLIOptions {\n appName: string;\n inWorkshop: boolean;\n templateUrl: TemplateUrls;\n spaceId?: string;\n OAuthToken?: string;\n sbMigFeatures: string[];\n install?: boolean;\n dryRun?: boolean;\n}\n\n\nconst main = async () => {\n let cliOptions = {} as CLIOptions;\n\n\n\n\n const program = new Command().name(\"create-backpack-app\");\n\n program\n .description(\"A CLI for creating projects with @ef-global/backpack\")\n .argument(\n \"[dir]\",\n \"The name of the application, as well as the name of the directory to create\",\n )\n .option(\n \"--appName <appName>\",\n \"Name of your application\",\n false,\n )\n .option(\n \"--inWorkshop\",\n \"Pass it if you are in the workshop\",\n false,\n )\n .option(\n \"--templateUrl <template>\",\n \"Template you would like to use (storyblok, nextjs, reactjs)\",\n 'reactjs',\n )\n .option(\n \"--spaceId <spaceId>\",\n \"Space ID for Storyblok\",\n false,\n )\n .option(\n \"--OAuthToken <token>\",\n \"OAuth Token for Storyblok\",\n false,\n )\n .option(\n \"--sbMigFeatures <sbMigFeatures...>\",\n \"What would you would like to sync with sb-mig automatically (components, roles, datasources, content)\",\n [],\n )\n .option(\n \"--noGit\",\n \"Explicitly tell the CLI to not initialize a new git repo in the project\",\n false,\n )\n .option(\n \"--install\",\n \"Explicitly tell the CLI to not run all the auto syncing and install\",\n false,\n )\n .option(\n \"--dryRun\",\n \"Dry Run command\",\n false,\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .addHelpText(\n \"afterAll\",\n `Done`,\n )\n .parse(process.argv);\n\n\n if(process.argv.length > 2) {\n const options = program.opts<CLIOptions>();\n cliOptions = {\n ...options // options needs to be exactly the same as CLIOptions that i'm using in interactive cli\n }\n if(cliOptions['dryRun']) {\n console.log(\"CLI Options passed to execute\", cliOptions)\n } else {\n await execute(cliOptions)\n }\n } else {\n cliOptions['appName'] = await promptAppName();\n console.log(\" \")\n\n cliOptions['inWorkshop'] = await promptIfInWorkshop();\n console.log(\" \")\n\n cliOptions['templateUrl'] = await promptList();\n console.log(\" \")\n\n cliOptions['install'] = await promptInstall();\n console.log(\" \")\n\n if (cliOptions['templateUrl'] === 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' && cliOptions['install']) {\n console.log(\"you've selecvted storyblok-nextjs-backpack-boilerplate\")\n cliOptions['sbMigFeatures'] = await promptSbMigFeatures();\n console.log(\" \")\n\n cliOptions['spaceId'] = await promptSpaceId();\n console.log(\" \")\n\n cliOptions['OAuthToken'] = await promptOAuthToken();\n console.log(\" \");\n }\n\n console.log(\"cliOptions to run cli command with: \", {cliOptions})\n\n const areYouSure = await promptAreYouSure();\n console.log(\" \")\n\n if (!areYouSure) {\n console.log(chalk.red(\"Aborting creation...\"));\n process.exit(1);\n }\n\n await execute(cliOptions)\n }\n}\n\nmain().catch((err) => {\n console.log(\"Aborting installation...\");\n if (err instanceof Error) {\n console.log(err);\n } else {\n console.log(\n \"An unknown error has occurred. Please open an issue on github with the below:\",\n );\n console.log(err);\n }\n process.exit(1);\n});","import inquirer from \"inquirer\";\nimport {validateAppName, validateSpaceId, valdiateOAuthToken} from \"./validators.js\";\nimport {availableSbMigFeatures, availableTemplates, TemplateUrls} from \"./constants.js\";\n\ninterface CliFlags {\n noGit: boolean;\n noInstall: boolean;\n default: boolean;\n importAlias: string;\n}\n\n\ninterface CliResults {\n appName: string;\n spaceId: string;\n OAuthToken: string;\n flags: CliFlags;\n}\n\n\nexport const promptAppName = async (): Promise<string> => {\n const { appName } = await inquirer.prompt<Pick<CliResults, \"appName\">>({\n name: \"appName\",\n type: \"input\",\n message: \"What will your project be called?\",\n default: 'new-backpack-app',\n validate: validateAppName,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return appName;\n};\n\nexport const promptSpaceId = async (): Promise<string> => {\n const { spaceId } = await inquirer.prompt<Pick<CliResults, \"spaceId\">>({\n name: \"spaceId\",\n type: \"input\",\n message: \"Insert your space id\",\n default: '00000',\n validate: validateSpaceId,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return spaceId;\n};\n\nexport const promptOAuthToken = async (): Promise<string> => {\n const { OAuthToken } = await inquirer.prompt<Pick<CliResults, \"OAuthToken\">>({\n name: \"OAuthToken\",\n type: \"input\",\n message: \"Insert your OAuthToken\",\n default: '00000',\n validate: valdiateOAuthToken,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return OAuthToken;\n};\n\nexport const promptContinue = async (): Promise<boolean> => {\n const {doWeContinue} = await inquirer.prompt<{ doWeContinue: boolean }>({\n type: 'confirm',\n name: 'doWeContinue',\n message: 'Do we continue?',\n default: false,\n })\n\n return doWeContinue;\n}\n\nexport const promptInitGit = async (): Promise<boolean> => {\n const {initGit} = await inquirer.prompt<{ initGit: boolean }>({\n type: 'confirm',\n name: 'initGit',\n message: 'Do you want to init new git repository?',\n default: false,\n })\n\n return initGit;\n}\n\nexport const promptIfInWorkshop = async (): Promise<boolean> => {\n const {inWorkshop} = await inquirer.prompt<{ inWorkshop: boolean }>({\n type: 'confirm',\n name: 'inWorkshop',\n message: 'Are you in workshop?',\n default: false,\n })\n\n return inWorkshop;\n}\n\nexport const promptAreYouSure = async (): Promise<boolean> => {\n const {areYouSure} = await inquirer.prompt<{ areYouSure: boolean }>({\n type: 'confirm',\n name: 'areYouSure',\n message: 'Is all the answers correct?',\n default: false,\n })\n\n return areYouSure;\n}\n\nexport const promptInstall = async (): Promise<boolean> => {\n const {install} = await inquirer.prompt<{ install: boolean }>({\n type: 'confirm',\n name: 'install',\n message: 'Do you want to run auto configuration (packages install, syncing components, initializing project)?',\n default: true,\n })\n\n return install;\n}\n\nexport const promptList = async (): Promise<TemplateUrls> => {\n const {templateUrl} = await inquirer.prompt<{ templateUrl: TemplateUrls }>({\n type: 'list',\n name: 'templateUrl',\n message: 'Select template',\n choices: availableTemplates,\n },)\n\n return templateUrl;\n}\n\n\nexport const promptSbMigFeatures = async (): Promise<any> => {\n const {sbMigFeatures} = await inquirer.prompt<{ sbMigFeatures: any }>({\n type: \"checkbox\",\n name: 'sbMigFeatures',\n message: 'What would you like to sync initially ?',\n choices: availableSbMigFeatures,\n },)\n\n return sbMigFeatures;\n}\n\n","const validationRegExp =\n /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/;\n\n//Validate a string against allowed package.json names\nexport const validateAppName = (input: string) => {\n const paths = input.split(\"/\");\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n\n let appName = paths[paths.length - 1];\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n if (input === \".\" || validationRegExp.test(appName ?? \"\")) {\n return true;\n } else {\n return \"App name must consist of only lowercase alphanumeric characters, '-', and '_'\";\n }\n};\n\nexport const validateSpaceId = (input: string) => {\n // TODO: make space id validation\n return true\n};\n\nexport const valdiateOAuthToken = (input: string) => {\n // TODO: make OAuthToken validation\n return true\n};\n\n\n","export type TemplateNames = 'Storyblok NextJS Backpack Boilerplate' | 'NextJS Backpack Boilerplate' | 'ReactJS Backpack Boilerplate';\nexport type TemplateUrls = 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' | 'git@github.com:ef-global/nextjs-backpack-boilerplate.git' | 'git@github.com:ef-global/reactjs-backpack-boilerplate.git';\n\nexport const templates: Record<TemplateNames, TemplateUrls> = {\n 'Storyblok NextJS Backpack Boilerplate': \"git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git\",\n 'NextJS Backpack Boilerplate': \"git@github.com:ef-global/nextjs-backpack-boilerplate.git\",\n 'ReactJS Backpack Boilerplate': \"git@github.com:ef-global/reactjs-backpack-boilerplate.git\",\n} as const\n\n\ninterface TemplateObj {\n name: TemplateNames,\n value: TemplateUrls\n}\n\n\nexport const availableTemplates: TemplateObj[] = [\n {\n name: 'Storyblok NextJS Backpack Boilerplate',\n value: templates['Storyblok NextJS Backpack Boilerplate']\n },\n {\n name: 'NextJS Backpack Boilerplate',\n value: templates['NextJS Backpack Boilerplate']\n },\n {\n name: 'ReactJS Backpack Boilerplate',\n value: templates['ReactJS Backpack Boilerplate']\n }\n]\n\n\nexport type SbMigFeature = 'components' | 'datasources' | 'roles' | 'content';\n\ninterface SbMigFeatures {\n name: SbMigFeature,\n checked: boolean\n}\n\nexport const availableSbMigFeatures: SbMigFeatures[] = [\n {\n name: 'components',\n checked: true,\n },\n {\n name: 'datasources',\n checked: true,\n },\n {\n name: 'roles',\n checked: true,\n },\n {\n name: 'content',\n checked: false,\n },\n]","import type { PackageJson } from \"type-fest\";\nimport {execa} from \"execa\";\nimport ora from \"ora\";\nimport {rimraf} from \"rimraf\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport fs from \"fs-extra\";\nimport {TemplateUrls} from \"./constants.js\";\n\nexport type PackageManager = \"npm\" | \"yarn\";\n\nconst pipeOut = async (result: any) => {\n result.stdout.pipe(process.stdout);\n result.stderr.pipe(process.stderr);\n try {\n const {stdout} = await result;\n\n return stdout\n } catch (e) {\n console.log(e)\n }\n}\n\n\nexport const getUserPkgManager: () => PackageManager = () => {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n};\n\n\nexport const cloneRepo = async (boilerplateUrl: TemplateUrls, nameOfFolder: string) => {\n const spinner = ora('Cloning repo').start();\n\n const result = execa(\n `git clone ${boilerplateUrl} ${nameOfFolder}`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const removeInitialGitDirectory = async (appName: string) => {\n const spinner = ora('Cleaning').start();\n\n const result = await rimraf(`${appName}/.git`)\n\n spinner.stop();\n\n return result\n}\n\nexport const initializeGit = async (appName: string) => {\n const spinner = ora('Initializing GIT').start();\n\n const result = execa(\n `cd ${appName} && git init`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigInit = async (appName: string, spaceId: string, OAuthToken: string) => {\n const spinner = ora('Initializing storyblok project').start();\n\n const result = execa(\n `cd ${appName} && sb-mig init project --spaceId=${spaceId} --oauthToken=${OAuthToken}`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const installDeps = async (appName: string) => {\n const spinner = ora('Installing dependencies').start();\n\n const userPackageManager = getUserPkgManager();\n\n console.log(\"This is current user package manage: \")\n console.log(userPackageManager)\n\n const result = execa(\n `cd ${appName} && ${userPackageManager} install`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\n// \"yarn sync:components:all && yarn sync:contents:all && yarn create:https\"\n\nexport const invokeSbMigSyncComponents = async (appName: string) => {\n const spinner = ora('Syncing schemas').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:components:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncDatasources = async (appName: string) => {\n const spinner = ora('Syncing datasources').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:datasources:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncRoles = async (appName: string) => {\n const spinner = ora('Syncing roles').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:roles:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncContents = async (appName: string) => {\n const spinner = ora('Syncing content').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:contents:all:yes`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const createLocalHTTPS = async (appName: string) => {\n const spinner = ora('Creating Local HTTPs').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} create:https`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\nexport const PKG_ROOT = path.join(distPath, \"../\");\n\nexport const getVersion = () => {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n};","import type {CLIOptions} from \"./index.js\";\nimport {\n cloneRepo, createLocalHTTPS,\n initializeGit,\n installDeps,\n invokeSbMigInit,\n invokeSbMigSyncComponents, invokeSbMigSyncDatasources, invokeSbMigSyncRoles, invokeSbMigSyncContents,\n removeInitialGitDirectory\n} from \"./utils.js\";\n\nexport const execute = async (cliOptions: CLIOptions) => {\n const {\n templateUrl,\n sbMigFeatures,\n spaceId = '',\n OAuthToken = '',\n appName,\n inWorkshop = false\n } = cliOptions\n\n await cloneRepo(templateUrl, appName)\n if(!inWorkshop) {\n await removeInitialGitDirectory(appName)\n await initializeGit(appName)\n }\n if(!inWorkshop) {\n await removeInitialGitDirectory(appName)\n }\n\n if(cliOptions['install']) {\n await installDeps(appName)\n }\n\n if (templateUrl === 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' && cliOptions['install']) {\n try {\n console.log(\"you've selecvted storyblok-nextjs-backpack-boilerplate\")\n await invokeSbMigInit(appName, spaceId, OAuthToken)\n await createLocalHTTPS(appName)\n\n if(sbMigFeatures.includes('components')) {\n await invokeSbMigSyncComponents(appName)\n }\n\n if(sbMigFeatures.includes('datasources')) {\n await invokeSbMigSyncDatasources(appName)\n }\n\n if(sbMigFeatures.includes('roles')) {\n await invokeSbMigSyncRoles(appName)\n }\n\n if(sbMigFeatures.includes('content')) {\n await invokeSbMigSyncContents(appName)\n }\n } catch (e) {\n console.log(\"error happened...\")\n console.log(e)\n }\n }\n}"],"mappings":"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","names":["chalk","Command","inquirer","validationRegExp","validateAppName","input","paths","indexOfDelimiter","p","appName","validateSpaceId","valdiateOAuthToken","templates","availableTemplates","availableSbMigFeatures","promptAppName","appName","inquirer","validateAppName","input","promptSpaceId","spaceId","validateSpaceId","promptOAuthToken","OAuthToken","valdiateOAuthToken","promptIfInWorkshop","inWorkshop","inquirer","promptAreYouSure","areYouSure","promptInstall","install","promptList","templateUrl","availableTemplates","promptSbMigFeatures","sbMigFeatures","availableSbMigFeatures","execa","ora","rimraf","path","fileURLToPath","fs","pipeOut","result","stdout","e","getUserPkgManager","userAgent","cloneRepo","boilerplateUrl","nameOfFolder","spinner","removeInitialGitDirectory","appName","initializeGit","invokeSbMigInit","spaceId","OAuthToken","installDeps","userPackageManager","invokeSbMigSyncComponents","invokeSbMigSyncDatasources","invokeSbMigSyncRoles","invokeSbMigSyncContents","createLocalHTTPS","__filename","distPath","PKG_ROOT","getVersion","packageJsonPath","execute","cliOptions","templateUrl","sbMigFeatures","spaceId","OAuthToken","appName","inWorkshop","cloneRepo","removeInitialGitDirectory","initializeGit","installDeps","invokeSbMigInit","createLocalHTTPS","invokeSbMigSyncComponents","invokeSbMigSyncDatasources","invokeSbMigSyncRoles","invokeSbMigSyncContents","e","main","cliOptions","program","Command","getVersion","execute","promptAppName","promptIfInWorkshop","promptList","promptInstall","promptSbMigFeatures","promptSpaceId","promptOAuthToken","areYouSure","promptAreYouSure","chalk","err"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/prompts.ts","../src/validators.ts","../src/constants.ts","../src/utils.ts","../src/execute.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport {\n promptAppName,\n promptList,\n promptOAuthToken,\n promptSpaceId,\n promptIfInWorkshop, promptSbMigFeatures, promptInstall, promptAreYouSure\n} from \"./prompts.js\";\nimport {execute} from \"./execute.js\";\nimport {TemplateUrls} from \"./constants.js\";\nimport {getVersion} from \"./utils.js\";\n\n\nexport interface CLIOptions {\n appName: string;\n inWorkshop: boolean;\n templateUrl: TemplateUrls;\n spaceId?: string;\n OAuthToken?: string;\n sbMigFeatures: string[];\n install?: boolean;\n dryRun?: boolean;\n}\n\n\nconst main = async () => {\n let cliOptions = {} as CLIOptions;\n\n\n\n\n const program = new Command().name(\"create-backpack-app\");\n\n program\n .description(\"A CLI for creating projects with @ef-global/backpack\")\n .argument(\n \"[dir]\",\n \"The name of the application, as well as the name of the directory to create\",\n )\n .option(\n \"--appName <appName>\",\n \"Name of your application\",\n false,\n )\n .option(\n \"--inWorkshop\",\n \"Pass it if you are in the workshop\",\n false,\n )\n .option(\n \"--templateUrl <template>\",\n \"Template you would like to use (storyblok, nextjs, reactjs)\",\n 'reactjs',\n )\n .option(\n \"--spaceId <spaceId>\",\n \"Space ID for Storyblok\",\n false,\n )\n .option(\n \"--OAuthToken <token>\",\n \"OAuth Token for Storyblok\",\n false,\n )\n .option(\n \"--sbMigFeatures <sbMigFeatures...>\",\n \"What would you would like to sync with sb-mig automatically (components, roles, datasources, content)\",\n [],\n )\n .option(\n \"--noGit\",\n \"Explicitly tell the CLI to not initialize a new git repo in the project\",\n false,\n )\n .option(\n \"--install\",\n \"Explicitly tell the CLI to not run all the auto syncing and install\",\n false,\n )\n .option(\n \"--dryRun\",\n \"Dry Run command\",\n false,\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .addHelpText(\n \"afterAll\",\n `Done`,\n )\n .parse(process.argv);\n\n\n if(process.argv.length > 2) {\n const options = program.opts<CLIOptions>();\n cliOptions = {\n ...options // options needs to be exactly the same as CLIOptions that i'm using in interactive cli\n }\n if(cliOptions['dryRun']) {\n console.log(\"CLI Options passed to execute\", cliOptions)\n } else {\n await execute(cliOptions)\n }\n } else {\n cliOptions['appName'] = await promptAppName();\n console.log(\" \")\n\n cliOptions['inWorkshop'] = await promptIfInWorkshop();\n console.log(\" \")\n\n cliOptions['templateUrl'] = await promptList();\n console.log(\" \")\n\n cliOptions['install'] = await promptInstall();\n console.log(\" \")\n\n if (cliOptions['templateUrl'] === 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' && cliOptions['install']) {\n console.log(\"you've selecvted storyblok-nextjs-backpack-boilerplate\")\n cliOptions['sbMigFeatures'] = await promptSbMigFeatures();\n console.log(\" \")\n\n cliOptions['spaceId'] = await promptSpaceId();\n console.log(\" \")\n\n cliOptions['OAuthToken'] = await promptOAuthToken();\n console.log(\" \");\n }\n\n console.log(\"cliOptions to run cli command with: \", {cliOptions})\n\n const areYouSure = await promptAreYouSure();\n console.log(\" \")\n\n if (!areYouSure) {\n console.log(chalk.red(\"Aborting creation...\"));\n process.exit(1);\n }\n\n await execute(cliOptions)\n }\n}\n\nmain().catch((err) => {\n console.log(\"Aborting installation...\");\n if (err instanceof Error) {\n console.log(err);\n } else {\n console.log(\n \"An unknown error has occurred. Please open an issue on github with the below:\",\n );\n console.log(err);\n }\n process.exit(1);\n});","import inquirer from \"inquirer\";\nimport {validateAppName, validateSpaceId, valdiateOAuthToken} from \"./validators.js\";\nimport {availableSbMigFeatures, availableTemplates, TemplateUrls} from \"./constants.js\";\n\ninterface CliFlags {\n noGit: boolean;\n noInstall: boolean;\n default: boolean;\n importAlias: string;\n}\n\n\ninterface CliResults {\n appName: string;\n spaceId: string;\n OAuthToken: string;\n flags: CliFlags;\n}\n\n\nexport const promptAppName = async (): Promise<string> => {\n const { appName } = await inquirer.prompt<Pick<CliResults, \"appName\">>({\n name: \"appName\",\n type: \"input\",\n message: \"What will your project be called?\",\n default: 'new-backpack-app',\n validate: validateAppName,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return appName;\n};\n\nexport const promptSpaceId = async (): Promise<string> => {\n const { spaceId } = await inquirer.prompt<Pick<CliResults, \"spaceId\">>({\n name: \"spaceId\",\n type: \"input\",\n message: \"Insert your space id\",\n default: '00000',\n validate: validateSpaceId,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return spaceId;\n};\n\nexport const promptOAuthToken = async (): Promise<string> => {\n const { OAuthToken } = await inquirer.prompt<Pick<CliResults, \"OAuthToken\">>({\n name: \"OAuthToken\",\n type: \"input\",\n message: \"Insert your OAuthToken\",\n default: '00000',\n validate: valdiateOAuthToken,\n transformer: (input: string) => {\n return input.trim();\n },\n });\n\n return OAuthToken;\n};\n\nexport const promptContinue = async (): Promise<boolean> => {\n const {doWeContinue} = await inquirer.prompt<{ doWeContinue: boolean }>({\n type: 'confirm',\n name: 'doWeContinue',\n message: 'Do we continue?',\n default: false,\n })\n\n return doWeContinue;\n}\n\nexport const promptInitGit = async (): Promise<boolean> => {\n const {initGit} = await inquirer.prompt<{ initGit: boolean }>({\n type: 'confirm',\n name: 'initGit',\n message: 'Do you want to init new git repository?',\n default: false,\n })\n\n return initGit;\n}\n\nexport const promptIfInWorkshop = async (): Promise<boolean> => {\n const {inWorkshop} = await inquirer.prompt<{ inWorkshop: boolean }>({\n type: 'confirm',\n name: 'inWorkshop',\n message: 'Are you in workshop?',\n default: false,\n })\n\n return inWorkshop;\n}\n\nexport const promptAreYouSure = async (): Promise<boolean> => {\n const {areYouSure} = await inquirer.prompt<{ areYouSure: boolean }>({\n type: 'confirm',\n name: 'areYouSure',\n message: 'Is all the answers correct?',\n default: true,\n })\n\n return areYouSure;\n}\n\nexport const promptInstall = async (): Promise<boolean> => {\n const {install} = await inquirer.prompt<{ install: boolean }>({\n type: 'confirm',\n name: 'install',\n message: 'Do you want to run auto configuration (packages install, syncing components, initializing project)?',\n default: true,\n })\n\n return install;\n}\n\nexport const promptList = async (): Promise<TemplateUrls> => {\n const {templateUrl} = await inquirer.prompt<{ templateUrl: TemplateUrls }>({\n type: 'list',\n name: 'templateUrl',\n message: 'Select template',\n choices: availableTemplates,\n },)\n\n return templateUrl;\n}\n\n\nexport const promptSbMigFeatures = async (): Promise<any> => {\n const {sbMigFeatures} = await inquirer.prompt<{ sbMigFeatures: any }>({\n type: \"checkbox\",\n name: 'sbMigFeatures',\n message: 'What would you like to sync initially ?',\n choices: availableSbMigFeatures,\n },)\n\n return sbMigFeatures;\n}\n\n","const validationRegExp =\n /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/;\n\n//Validate a string against allowed package.json names\nexport const validateAppName = (input: string) => {\n const paths = input.split(\"/\");\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n\n let appName = paths[paths.length - 1];\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n if (input === \".\" || validationRegExp.test(appName ?? \"\")) {\n return true;\n } else {\n return \"App name must consist of only lowercase alphanumeric characters, '-', and '_'\";\n }\n};\n\nexport const validateSpaceId = (input: string) => {\n // TODO: make space id validation\n return true\n};\n\nexport const valdiateOAuthToken = (input: string) => {\n // TODO: make OAuthToken validation\n return true\n};\n\n\n","export type TemplateNames = 'Storyblok NextJS Backpack Boilerplate' | 'NextJS Backpack Boilerplate' | 'ReactJS Backpack Boilerplate';\nexport type TemplateUrls = 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' | 'git@github.com:ef-global/nextjs-backpack-boilerplate.git' | 'git@github.com:ef-global/reactjs-backpack-boilerplate.git';\n\nexport const templates: Record<TemplateNames, TemplateUrls> = {\n 'Storyblok NextJS Backpack Boilerplate': \"git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git\",\n 'NextJS Backpack Boilerplate': \"git@github.com:ef-global/nextjs-backpack-boilerplate.git\",\n 'ReactJS Backpack Boilerplate': \"git@github.com:ef-global/reactjs-backpack-boilerplate.git\",\n} as const\n\n\ninterface TemplateObj {\n name: TemplateNames,\n value: TemplateUrls\n}\n\n\nexport const availableTemplates: TemplateObj[] = [\n {\n name: 'Storyblok NextJS Backpack Boilerplate',\n value: templates['Storyblok NextJS Backpack Boilerplate']\n },\n {\n name: 'NextJS Backpack Boilerplate',\n value: templates['NextJS Backpack Boilerplate']\n },\n {\n name: 'ReactJS Backpack Boilerplate',\n value: templates['ReactJS Backpack Boilerplate']\n }\n]\n\n\nexport type SbMigFeature = 'components' | 'datasources' | 'roles' | 'content';\n\ninterface SbMigFeatures {\n name: SbMigFeature,\n checked: boolean\n}\n\nexport const availableSbMigFeatures: SbMigFeatures[] = [\n {\n name: 'components',\n checked: true,\n },\n {\n name: 'datasources',\n checked: true,\n },\n {\n name: 'roles',\n checked: true,\n },\n {\n name: 'content',\n checked: false,\n },\n]","import type { PackageJson } from \"type-fest\";\nimport {execa} from \"execa\";\nimport ora from \"ora\";\nimport {rimraf} from \"rimraf\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport fs from \"fs-extra\";\nimport {TemplateUrls} from \"./constants.js\";\n\nexport type PackageManager = \"npm\" | \"yarn\";\n\nconst pipeOut = async (result: any) => {\n result.stdout.pipe(process.stdout);\n result.stderr.pipe(process.stderr);\n try {\n const {stdout} = await result;\n\n return stdout\n } catch (e) {\n console.log(e)\n }\n}\n\n\nexport const getUserPkgManager: () => PackageManager = () => {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n};\n\n\nexport const cloneRepo = async (boilerplateUrl: TemplateUrls, nameOfFolder: string) => {\n const spinner = ora('Cloning repo').start();\n\n const result = execa(\n `git clone ${boilerplateUrl} ${nameOfFolder}`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const removeInitialGitDirectory = async (appName: string) => {\n const spinner = ora('Cleaning').start();\n\n const result = await rimraf(`${appName}/.git`)\n\n spinner.stop();\n\n return result\n}\n\nexport const initializeGit = async (appName: string) => {\n const spinner = ora('Initializing GIT').start();\n\n const result = execa(\n `cd ${appName} && git init`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigInit = async (appName: string, spaceId: string, OAuthToken: string) => {\n const spinner = ora('Initializing storyblok project').start();\n\n const result = execa(\n `cd ${appName} && sb-mig init project --spaceId=${spaceId} --oauthToken=${OAuthToken}`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const installDeps = async (appName: string) => {\n const spinner = ora('Installing dependencies').start();\n\n const userPackageManager = getUserPkgManager();\n\n console.log(\"This is current user package manage: \")\n console.log(userPackageManager)\n\n const result = execa(\n `cd ${appName} && ${userPackageManager} install`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\n// \"yarn sync:components:all && yarn sync:contents:all && yarn create:https\"\n\nexport const invokeSbMigSyncComponents = async (appName: string) => {\n const spinner = ora('Syncing schemas').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:components:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncDatasources = async (appName: string) => {\n const spinner = ora('Syncing datasources').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:datasources:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncRoles = async (appName: string) => {\n const spinner = ora('Syncing roles').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:roles:all`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const invokeSbMigSyncContents = async (appName: string) => {\n const spinner = ora('Syncing content').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} sync:contents:all:yes`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nexport const createLocalHTTPS = async (appName: string) => {\n const spinner = ora('Creating Local HTTPs').start();\n\n const userPackageManager = getUserPkgManager();\n\n const result = execa(\n `cd ${appName} && ${userPackageManager === 'npm' ? `${userPackageManager} run` : userPackageManager} create:https`,\n {\n shell: true\n }\n )\n\n await pipeOut(result)\n\n spinner.stop();\n\n return result\n}\n\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\nexport const PKG_ROOT = path.join(distPath, \"../\");\n\nexport const getVersion = () => {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n};","import type {CLIOptions} from \"./index.js\";\nimport {\n cloneRepo, createLocalHTTPS,\n initializeGit,\n installDeps,\n invokeSbMigInit,\n invokeSbMigSyncComponents, invokeSbMigSyncDatasources, invokeSbMigSyncRoles, invokeSbMigSyncContents,\n removeInitialGitDirectory\n} from \"./utils.js\";\n\nexport const execute = async (cliOptions: CLIOptions) => {\n const {\n templateUrl,\n sbMigFeatures,\n spaceId = '',\n OAuthToken = '',\n appName,\n inWorkshop = false\n } = cliOptions\n\n await cloneRepo(templateUrl, appName)\n if(!inWorkshop) {\n await removeInitialGitDirectory(appName)\n await initializeGit(appName)\n }\n if(!inWorkshop) {\n await removeInitialGitDirectory(appName)\n }\n\n if(cliOptions['install']) {\n await installDeps(appName)\n }\n\n if (templateUrl === 'git@github.com:ef-global/storyblok-nextjs-backpack-boilerplate.git' && cliOptions['install']) {\n try {\n console.log(\"you've selecvted storyblok-nextjs-backpack-boilerplate\")\n await invokeSbMigInit(appName, spaceId, OAuthToken)\n await createLocalHTTPS(appName)\n\n if(sbMigFeatures.includes('components')) {\n await invokeSbMigSyncComponents(appName)\n }\n\n if(sbMigFeatures.includes('datasources')) {\n await invokeSbMigSyncDatasources(appName)\n }\n\n if(sbMigFeatures.includes('roles')) {\n await invokeSbMigSyncRoles(appName)\n }\n\n if(sbMigFeatures.includes('content')) {\n await invokeSbMigSyncContents(appName)\n }\n } catch (e) {\n console.log(\"error happened...\")\n console.log(e)\n }\n }\n}"],"mappings":"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","names":["chalk","Command","inquirer","validationRegExp","validateAppName","input","paths","indexOfDelimiter","p","appName","validateSpaceId","valdiateOAuthToken","templates","availableTemplates","availableSbMigFeatures","promptAppName","appName","inquirer","validateAppName","input","promptSpaceId","spaceId","validateSpaceId","promptOAuthToken","OAuthToken","valdiateOAuthToken","promptIfInWorkshop","inWorkshop","inquirer","promptAreYouSure","areYouSure","promptInstall","install","promptList","templateUrl","availableTemplates","promptSbMigFeatures","sbMigFeatures","availableSbMigFeatures","execa","ora","rimraf","path","fileURLToPath","fs","pipeOut","result","stdout","e","getUserPkgManager","userAgent","cloneRepo","boilerplateUrl","nameOfFolder","spinner","removeInitialGitDirectory","appName","initializeGit","invokeSbMigInit","spaceId","OAuthToken","installDeps","userPackageManager","invokeSbMigSyncComponents","invokeSbMigSyncDatasources","invokeSbMigSyncRoles","invokeSbMigSyncContents","createLocalHTTPS","__filename","distPath","PKG_ROOT","getVersion","packageJsonPath","execute","cliOptions","templateUrl","sbMigFeatures","spaceId","OAuthToken","appName","inWorkshop","cloneRepo","removeInitialGitDirectory","initializeGit","installDeps","invokeSbMigInit","createLocalHTTPS","invokeSbMigSyncComponents","invokeSbMigSyncDatasources","invokeSbMigSyncRoles","invokeSbMigSyncContents","e","main","cliOptions","program","Command","getVersion","execute","promptAppName","promptIfInWorkshop","promptList","promptInstall","promptSbMigFeatures","promptSpaceId","promptOAuthToken","areYouSure","promptAreYouSure","chalk","err"]}
@@ -1 +1 @@
1
- {"inputs":{"src/validators.ts":{"bytes":964,"imports":[],"format":"esm"},"src/constants.ts":{"bytes":1696,"imports":[],"format":"esm"},"src/prompts.ts":{"bytes":3868,"imports":[{"path":"inquirer","kind":"import-statement","external":true},{"path":"src/validators.ts","kind":"import-statement","original":"./validators.js"},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"}],"format":"esm"},"src/utils.ts":{"bytes":5426,"imports":[{"path":"execa","kind":"import-statement","external":true},{"path":"ora","kind":"import-statement","external":true},{"path":"rimraf","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"url","kind":"import-statement","external":true},{"path":"fs-extra","kind":"import-statement","external":true},{"path":"./constants.js","kind":"import-statement","external":true}],"format":"esm"},"src/execute.ts":{"bytes":1774,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/index.ts":{"bytes":4356,"imports":[{"path":"chalk","kind":"import-statement","external":true},{"path":"commander","kind":"import-statement","external":true},{"path":"src/prompts.ts","kind":"import-statement","original":"./prompts.js"},{"path":"src/execute.ts","kind":"import-statement","original":"./execute.js"},{"path":"./constants.js","kind":"import-statement","external":true},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":27477},"dist/index.js":{"imports":[{"path":"chalk","kind":"import-statement","external":true},{"path":"commander","kind":"import-statement","external":true},{"path":"inquirer","kind":"import-statement","external":true},{"path":"execa","kind":"import-statement","external":true},{"path":"ora","kind":"import-statement","external":true},{"path":"rimraf","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"url","kind":"import-statement","external":true},{"path":"fs-extra","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":2059},"src/prompts.ts":{"bytesInOutput":1322},"src/validators.ts":{"bytesInOutput":339},"src/constants.ts":{"bytesInOutput":672},"src/utils.ts":{"bytesInOutput":2010},"src/execute.ts":{"bytesInOutput":571}},"bytes":6994}}}
1
+ {"inputs":{"src/validators.ts":{"bytes":964,"imports":[],"format":"esm"},"src/constants.ts":{"bytes":1696,"imports":[],"format":"esm"},"src/prompts.ts":{"bytes":3867,"imports":[{"path":"inquirer","kind":"import-statement","external":true},{"path":"src/validators.ts","kind":"import-statement","original":"./validators.js"},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"}],"format":"esm"},"src/utils.ts":{"bytes":5426,"imports":[{"path":"execa","kind":"import-statement","external":true},{"path":"ora","kind":"import-statement","external":true},{"path":"rimraf","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"url","kind":"import-statement","external":true},{"path":"fs-extra","kind":"import-statement","external":true},{"path":"./constants.js","kind":"import-statement","external":true}],"format":"esm"},"src/execute.ts":{"bytes":1774,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/index.ts":{"bytes":4356,"imports":[{"path":"chalk","kind":"import-statement","external":true},{"path":"commander","kind":"import-statement","external":true},{"path":"src/prompts.ts","kind":"import-statement","original":"./prompts.js"},{"path":"src/execute.ts","kind":"import-statement","original":"./execute.js"},{"path":"./constants.js","kind":"import-statement","external":true},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":27476},"dist/index.js":{"imports":[{"path":"chalk","kind":"import-statement","external":true},{"path":"commander","kind":"import-statement","external":true},{"path":"inquirer","kind":"import-statement","external":true},{"path":"execa","kind":"import-statement","external":true},{"path":"ora","kind":"import-statement","external":true},{"path":"rimraf","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"url","kind":"import-statement","external":true},{"path":"fs-extra","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":2059},"src/prompts.ts":{"bytesInOutput":1322},"src/validators.ts":{"bytesInOutput":339},"src/constants.ts":{"bytesInOutput":672},"src/utils.ts":{"bytesInOutput":2010},"src/execute.ts":{"bytesInOutput":571}},"bytes":6994}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-backpack-app",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "repository": "git@github.com:ef-global/create-backpack.git",
5
5
  "author": "marckraw <marckraw@icloud.com>",
6
6
  "publishConfig": {