mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-02 05:03:44 +08:00
78 lines
2.3 KiB
JavaScript
Executable File
78 lines
2.3 KiB
JavaScript
Executable File
import { $, cd } from 'zx';
|
|
import { commitEverythingInDirectory, initRepo } from './git-helper.mjs';
|
|
import { copy, createTmpDir } from './fs-helper.mjs';
|
|
|
|
export const frameworks = [
|
|
'cra',
|
|
'cra_typescript',
|
|
'react',
|
|
'angular',
|
|
'web_components_typescript',
|
|
'web_components_lit2',
|
|
'vue',
|
|
'vue3',
|
|
'html',
|
|
'preact',
|
|
'svelte',
|
|
];
|
|
|
|
const logger = console;
|
|
const tmpFolder = await createTmpDir();
|
|
const scriptPath = __dirname;
|
|
const templatesFolderPath = `${scriptPath}/templates`;
|
|
|
|
const useNextVersion = argv.next;
|
|
const remote = argv.remote;
|
|
const push = argv.push;
|
|
const forcePush = argv['force-push'];
|
|
const gitBranch = useNextVersion ? 'next' : 'main';
|
|
const sbCliVersion = useNextVersion ? 'next' : 'latest';
|
|
|
|
cd(tmpFolder);
|
|
|
|
await initRepo(gitBranch);
|
|
await copy(`${templatesFolderPath}/${gitBranch}/README.md`, tmpFolder);
|
|
|
|
for (const framework of frameworks) {
|
|
await $`npx sb@${sbCliVersion} repro --template ${framework} ${framework}`;
|
|
await $`rm -rf ${framework}/.git`;
|
|
await copy(`${templatesFolderPath}/${gitBranch}/.stackblitzrc`, `${tmpFolder}/${framework}`);
|
|
}
|
|
|
|
let commitMessage = `Storybook Examples - ${new Date().toDateString()}`;
|
|
await commitEverythingInDirectory(commitMessage);
|
|
|
|
logger.info(`
|
|
All the examples were bootstrapped:
|
|
- in ${tmpFolder}
|
|
- using the '${sbCliVersion}' version of Storybook CLI
|
|
- and committed on the '${gitBranch}' branch of a local Git repository
|
|
|
|
Also all the files in the 'templates' folder were copied at the root of the Git repository.
|
|
`);
|
|
|
|
try {
|
|
if (remote) {
|
|
await $`git remote add origin ${remote}`;
|
|
|
|
if (push) {
|
|
await $`git push --set-upstream origin ${gitBranch} ${forcePush ? '--force' : ''}`;
|
|
const remoteRepoUrl = `${remote.replace('.git', '')}/tree/${gitBranch}`;
|
|
logger.info(`🚀 Everything was pushed on ${remoteRepoUrl}`);
|
|
} else {
|
|
logger.info(`
|
|
To publish these examples you just need to:
|
|
- push the branch: 'git push --set-upstream origin ${gitBranch}' (you might need '--force' option ;))
|
|
`);
|
|
}
|
|
} else {
|
|
logger.info(`
|
|
To publish these examples you just need to:
|
|
- add a remote Git repository: 'git remote add origin XXXXXXX'
|
|
- push the branch: 'git push --set-upstream origin ${gitBranch}' (you might need '--force' option ;))
|
|
`);
|
|
}
|
|
} catch (e) {
|
|
logger.error(e);
|
|
}
|