Norbert de Langen 8665b8de47
improve
2022-06-03 14:30:16 +02:00

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);
}