Skip to content

Commit

Permalink
Add optional env vars to templates
Browse files Browse the repository at this point in the history
  • Loading branch information
Shaun Lloyd committed Nov 29, 2023
1 parent a9aef28 commit 03e1078
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 5 deletions.
49 changes: 49 additions & 0 deletions code/lib/cli/src/sandbox-templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ export type Template = {
* This is used to generate projects which are pushed to https://github.com/storybookjs/sandboxes
*/
script: string;
/**
* Environment variables to set when running the script.
*/
env?: Record<string, unknown>;
/**
* Used to assert various things about the generated template.
* If the template is generated with a different expected framework, it will fail, detecting a possible regression.
Expand Down Expand Up @@ -499,104 +503,149 @@ const internalTemplates = {
'internal/npm/empty/react-vite/default-ts': {
name: 'Empty React + vite (npm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'react-vite-ts',
},
expected: { ...baseTemplates['react-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/pnpm/empty/react-vite/default-ts': {
name: 'Empty React + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'react-vite-ts',
},
expected: { ...baseTemplates['react-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/yarn/empty/react-vite/default-ts': {
name: 'Empty React + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'react-vite-ts',
},
expected: { ...baseTemplates['react-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/npm/empty/nextjs/default-ts': {
name: 'Empty Next.js (npm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'nextjs-ts',
},
expected: { ...baseTemplates['nextjs/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/pnpm/empty/nextjs/default-ts': {
name: 'Empty Next.js (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'nextjs-ts',
},
expected: { ...baseTemplates['nextjs/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/yarn/empty/nextjs/default-ts': {
name: 'Empty Next.js (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'nextjs-ts',
},
expected: { ...baseTemplates['nextjs/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/npm/empty/vue3-vite/default-ts': {
name: 'Empty Vue 3 + vite (npm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'vue-vite-ts',
},
expected: { ...baseTemplates['vue3-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/pnpm/empty/vue3-vite/default-ts': {
name: 'Empty Vue 3 + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'vue-vite-ts',
},
expected: { ...baseTemplates['vue3-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/yarn/empty/vue3-vite/default-ts': {
name: 'Empty Vue 3 + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'vue-vite-ts',
},
expected: { ...baseTemplates['vue3-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/npm/empty/angular-cli/default-ts': {
name: 'Empty Angular (npm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'angular-cli',
},
expected: { ...baseTemplates['angular-cli/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/pnpm/empty/angular-cli/default-ts': {
name: 'Empty Angular (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'angular-cli',
},
expected: { ...baseTemplates['angular-cli/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/yarn/empty/angular-cli/default-ts': {
name: 'Empty Angular (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'angular-cli',
},
expected: { ...baseTemplates['angular-cli/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/npm/empty/lit-vite/default-ts': {
name: 'Empty Lit + vite (npm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'lit-vite-ts',
},
expected: { ...baseTemplates['lit-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/pnpm/empty/lit-vite/default-ts': {
name: 'Empty Lit + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'lit-vite-ts',
},
expected: { ...baseTemplates['lit-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
},
'internal/yarn/empty/lit-vite/default-ts': {
name: 'Empty Lit + vite (pnpm)',
script: 'mkdir {{beforeDir}} && cd {{beforeDir}}',
env: {
STORYBOOK_INIT_EMPTY_TYPE: 'lit-vite-ts',
},
expected: { ...baseTemplates['lit-vite/default-ts'].expected },
isInternal: true,
skipTasks: ['bench'],
Expand Down
17 changes: 12 additions & 5 deletions scripts/sandbox/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@ import {
LOCAL_REGISTRY_URL,
} from '../utils/constants';

const sbInit = async (cwd: string, flags?: string[], debug?: boolean) => {
const sbInit = async (
cwd: string,
envVars: Record<string, unknown> = {},
flags?: string[],
debug?: boolean
) => {
const sbCliBinaryPath = join(__dirname, `../../code/lib/cli/bin/index.js`);
console.log(`🎁 Installing storybook`);
const env = { STORYBOOK_DISABLE_TELEMETRY: 'true' };
Expand Down Expand Up @@ -61,11 +66,13 @@ const addStorybook = async ({
localRegistry,
flags,
debug,
env = {},
}: {
baseDir: string;
localRegistry: boolean;
flags?: string[];
debug?: boolean;
env?: Record<string, unknown>;
}) => {
const beforeDir = join(baseDir, BEFORE_DIR_NAME);
const afterDir = join(baseDir, AFTER_DIR_NAME);
Expand All @@ -84,10 +91,10 @@ const addStorybook = async ({
jackspeak: '2.1.1',
});

await sbInit(tmpDir, flags, debug);
await sbInit(tmpDir, env, flags, debug);
});
} else {
await sbInit(tmpDir, flags, debug);
await sbInit(tmpDir, env, flags, debug);
}
} catch (e) {
await remove(tmpDir);
Expand Down Expand Up @@ -142,7 +149,7 @@ const runGenerators = async (
const limit = pLimit(1);

await Promise.all(
generators.map(({ dirName, name, script, expected }) =>
generators.map(({ dirName, name, script, expected, env }) =>
limit(async () => {
let flags: string[] = [];
if (expected.renderer === '@storybook/html') flags = ['--type html'];
Expand Down Expand Up @@ -189,7 +196,7 @@ const runGenerators = async (
// Make sure there are no git projects in the folder
await remove(join(beforeDir, '.git'));

await addStorybook({ baseDir, localRegistry, flags, debug });
await addStorybook({ baseDir, localRegistry, flags, debug, env });

await addDocumentation(baseDir, { name, dirName });

Expand Down
1 change: 1 addition & 0 deletions scripts/sandbox/utils/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ export type GeneratorConfig = {
renderer: string;
builder: string;
};
env?: Record<string, unknown>;
};

0 comments on commit 03e1078

Please sign in to comment.