From c8a274200cfb06fea0d522c04510758b95f4a073 Mon Sep 17 00:00:00 2001 From: Gabriel Moreira Date: Sat, 26 Oct 2024 17:41:51 +0200 Subject: [PATCH 1/3] feat: add --example none option to skip example app creation --- .../create-react-native-library/src/index.ts | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/create-react-native-library/src/index.ts b/packages/create-react-native-library/src/index.ts index b9a1ff86..51d6a50c 100644 --- a/packages/create-react-native-library/src/index.ts +++ b/packages/create-react-native-library/src/index.ts @@ -160,6 +160,11 @@ const EXAMPLE_CHOICES = [ value: 'expo', description: 'managed expo project with web support', }, + { + title: 'None', + value: 'none', + description: 'no example app will be created', + }, ] as const; const NEWARCH_DESCRIPTION = 'requires new arch (experimental)'; @@ -933,12 +938,16 @@ async function create(_argv: yargs.Arguments) { ); } else { const platforms = { - ios: { name: 'iOS', color: 'cyan' }, - android: { name: 'Android', color: 'green' }, + ...(example === 'none' + ? {} + : { + ios: { name: 'iOS', colorize: kleur.cyan }, + android: { name: 'Android', colorize: kleur.green }, + }), ...(example === 'expo' - ? ({ web: { name: 'Web', color: 'blue' } } as const) + ? { web: { name: 'Web', colorize: kleur.blue } } : null), - } as const; + }; console.log( dedent(` @@ -949,8 +958,8 @@ async function create(_argv: yargs.Arguments) { ${kleur.gray('$')} yarn ${Object.entries(platforms) .map( - ([script, { name, color }]) => ` - ${kleur[color](`Run the example app on ${kleur.bold(name)}`)}${kleur.gray( + ([script, { name, colorize }]) => ` + ${colorize(`Run the example app on ${kleur.bold(name)}`)}${kleur.gray( ':' )} From c72fdd4f3f2cd5460ad4b6c73089c03d7353629e Mon Sep 17 00:00:00 2001 From: Gabriel Moreira Date: Sat, 26 Oct 2024 17:45:01 +0200 Subject: [PATCH 2/3] feat: add --replace-directory option to overwrite existing directory --- packages/create-react-native-library/src/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/create-react-native-library/src/index.ts b/packages/create-react-native-library/src/index.ts index 51d6a50c..d21f8b35 100644 --- a/packages/create-react-native-library/src/index.ts +++ b/packages/create-react-native-library/src/index.ts @@ -81,6 +81,7 @@ type ArgName = | 'languages' | 'type' | 'local' + | 'replace-directory' | 'example' | 'react-native-version'; @@ -258,6 +259,10 @@ const args: Record = { type: 'string', choices: EXAMPLE_CHOICES.map(({ value }) => value), }, + 'replace-directory': { + description: 'Replaces the directory if it already exists.', + type: 'boolean', + }, }; // FIXME: fix the type @@ -324,7 +329,7 @@ async function create(_argv: yargs.Arguments) { folder = path.join(process.cwd(), answers.folder); } - if (await fs.pathExists(folder)) { + if (!argv.replaceDirectory && (await fs.pathExists(folder))) { console.log( `A folder already exists at ${kleur.blue( folder From 9fac75cde37a2a40d7e903ec9707b1c8e23828d9 Mon Sep 17 00:00:00 2001 From: Gabriel Moreira Date: Sat, 26 Oct 2024 17:46:42 +0200 Subject: [PATCH 3/3] feat: add --skip-git option to disable git commands during generation --- packages/create-react-native-library/src/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/create-react-native-library/src/index.ts b/packages/create-react-native-library/src/index.ts index d21f8b35..223679e9 100644 --- a/packages/create-react-native-library/src/index.ts +++ b/packages/create-react-native-library/src/index.ts @@ -81,6 +81,7 @@ type ArgName = | 'languages' | 'type' | 'local' + | 'skip-git' | 'replace-directory' | 'example' | 'react-native-version'; @@ -259,6 +260,10 @@ const args: Record = { type: 'string', choices: EXAMPLE_CHOICES.map(({ value }) => value), }, + 'skip-git': { + description: 'Skip git actions', + type: 'boolean', + }, 'replace-directory': { description: 'Replaces the directory if it already exists.', type: 'boolean', @@ -858,6 +863,7 @@ async function create(_argv: yargs.Arguments) { try { isInGitRepo = + !argv.skipGit && (await spawn('git', ['rev-parse', '--is-inside-work-tree'])) === 'true'; } catch (e) { // Ignore error