- Push repo to npm registry.
- Remove unnecessary log prints. - Download and create all required files. - Generate technical repo files. #Create Block from registry.
This commit is contained in:
Regular → Executable
+21
-6
@@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import {Command} from 'commander';
|
||||
import path from 'path';
|
||||
import fetch from "node-fetch";
|
||||
@@ -13,11 +15,17 @@ const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const isDev = process.env.NODE_ENV === 'development' || (config.has('isDev') && config.get('isDev')); // Check README file in case you get "missing files" error.
|
||||
const blocksRegistry = isDev ? 'http://localhost:3020' : 'https://';
|
||||
const blocksRegistry = isDev ? 'http://localhost:3020' : 'http://localhost:3020';
|
||||
const blocksDirectory = isDev ? 'blocks/' : '';
|
||||
|
||||
const blockName = await init();
|
||||
console.log(`🎉 Done! \n\nCheck the "${blocksDirectory}${blockName}" directory. \n`);
|
||||
console.log(__dirname);
|
||||
|
||||
try {
|
||||
const blockName = await init();
|
||||
console.log(`🎉 Done! \n\nCheck the "${blocksDirectory}${blockName}" directory. \n`);
|
||||
} catch (e) {
|
||||
console.log('Fail.');
|
||||
}
|
||||
|
||||
async function init() {
|
||||
const program = new Command();
|
||||
@@ -26,14 +34,18 @@ async function init() {
|
||||
.name('create-block')
|
||||
.description('AXE-WEB Platform Blocks');
|
||||
|
||||
const promise = new Promise(resolve => {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
program.command('pull')
|
||||
.argument('<string>', 'Provide a full name of required block, for example: @axe-web/hero-block')
|
||||
.action(async (blockName, options) => {
|
||||
console.log('📦 Block to download:', blockName)
|
||||
|
||||
await getBlockSourceFiles(blockName);
|
||||
const status = await getBlockSourceFiles(blockName);
|
||||
if (status) {
|
||||
resolve(blockName);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -49,6 +61,7 @@ async function getBlockSourceFiles(blockName) {
|
||||
const response = await fetch(`${blocksRegistry}?${queryString.toString()}`);
|
||||
const responseData = await response.json();
|
||||
if (!responseData || !responseData.name) {
|
||||
console.log("⚠️ Block not found, please contact administrator.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -78,7 +91,7 @@ async function getBlockSourceFiles(blockName) {
|
||||
blockGroupName: responseData.project,
|
||||
version: responseData.version,
|
||||
devToolSource: defaultGitRepo,
|
||||
}, __dirname);
|
||||
}, __dirname, `${blocksDirectory}${responseData.name}`);
|
||||
|
||||
if (responseData.config.design_files) {
|
||||
await downloadDesignFiles(responseData.name, responseData.config.design_files);
|
||||
@@ -87,6 +100,8 @@ async function getBlockSourceFiles(blockName) {
|
||||
await createDataFiles(responseData.name, responseData.config.data_sources);
|
||||
|
||||
await createConfigFile(responseData.name, responseData.config);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
async function createConfigFile(blockName, config = {}) {
|
||||
|
||||
+10
-10
@@ -11,7 +11,8 @@ const __dirname = path.dirname(__filename);
|
||||
|
||||
const baseDir = path.join(__dirname, '../../');
|
||||
|
||||
export const defaultGitRepo = 'git+https://roman-axe-web@bitbucket.org/axeweb/create-block-dev-tool.git#master';
|
||||
// export const defaultGitRepo = 'git+https://roman-axe-web@bitbucket.org/axeweb/create-block-dev-tool.git#master';
|
||||
export const defaultGitRepo = '@axe-web/create-block@1.0.8';
|
||||
|
||||
export default class extends Generator {
|
||||
async prompting() {
|
||||
@@ -128,25 +129,24 @@ export default class extends Generator {
|
||||
);
|
||||
|
||||
// Technical Project files.
|
||||
createTechnicalFiles(data, baseDir).then();
|
||||
createTechnicalFiles(data, baseDir, `blocks/${data.name}`).then();
|
||||
}
|
||||
}
|
||||
|
||||
export async function createTechnicalFiles(data, baseDir) {
|
||||
const pathDist = path.join(baseDir, `blocks/${data.name}`);
|
||||
export async function createTechnicalFiles(data, baseDir, distPath) {
|
||||
const pathDist = distPath; //path.join(baseDir, distPath);
|
||||
const generatorsPath = path.join(baseDir, 'generators/block/templates');
|
||||
|
||||
const store = memFs.create();
|
||||
const filesystem = editor.create(store);
|
||||
|
||||
const files = ['package.json', 'README.md', '.editorconfig', '.gitignore', 'block.json'];
|
||||
const files = ['package.json', 'README.md', '.editorconfig', {from: 'gitignore', to: '.gitignore'}, 'block.json'];
|
||||
|
||||
for (let file of files) {
|
||||
await filesystem.copyTplAsync(
|
||||
`${generatorsPath}/${file}`,
|
||||
`${pathDist}/${file}`,
|
||||
data
|
||||
);
|
||||
const from = typeof file !== 'string' ? `${generatorsPath}/${file.from}` : `${generatorsPath}/${file}`;
|
||||
const to = typeof file !== 'string' ? `${pathDist}/${file.to}` : `${pathDist}/${file}`;
|
||||
|
||||
await filesystem.copyTplAsync(from, to, data);
|
||||
}
|
||||
|
||||
return filesystem.commit(); // Promise
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# Basic
|
||||
.idea
|
||||
.DS_Store
|
||||
node_modules
|
||||
vendor
|
||||
|
||||
# Custom
|
||||
Generated
+6
-5
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "create-block-dev-tool",
|
||||
"version": "1.0.6",
|
||||
"name": "@axe-web/create-block",
|
||||
"version": "1.0.8",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "create-block-dev-tool",
|
||||
"version": "1.0.6",
|
||||
"name": "@axe-web/create-block",
|
||||
"version": "1.0.7",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@braintree/sanitize-url": "^6.0.0",
|
||||
@@ -39,7 +39,8 @@
|
||||
},
|
||||
"bin": {
|
||||
"component-build": "build.js",
|
||||
"component-dev": "server.js"
|
||||
"component-dev": "server.js",
|
||||
"create-block": "create-block.js pull"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
|
||||
+14
-4
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"name": "create-block-dev-tool",
|
||||
"version": "1.0.6",
|
||||
"name": "@axe-web/create-block",
|
||||
"version": "1.0.8",
|
||||
"author": {
|
||||
"name": "AXE-WEB",
|
||||
"email": "office@axe-web.com",
|
||||
"url": "https://axe-web.com/"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "component-dev",
|
||||
"dev": "NODE_ENV=development node server.js",
|
||||
@@ -12,7 +17,6 @@
|
||||
"dev-js": "rollup --config rollup.config.js --watch"
|
||||
},
|
||||
"license": "ISC",
|
||||
"main": "server.js",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@braintree/sanitize-url": "^6.0.0",
|
||||
@@ -58,7 +62,13 @@
|
||||
"styled-components": "^5.3.5"
|
||||
},
|
||||
"bin": {
|
||||
"create-block": "./create-block.js",
|
||||
"component-dev": "./server.js",
|
||||
"component-build": "./build.js"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"generators/block/templates/.gitignore",
|
||||
"generators/block/**/*",
|
||||
"helpers.js"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ import archiver from 'archiver';
|
||||
*/
|
||||
|
||||
const isDev = process.env.NODE_ENV === 'development' || (config.has('isDev') && config.get('isDev')); // Check README file in case you get "missing files" error.
|
||||
const blocksRegistry = isDev ? 'http://localhost:3020' : '';
|
||||
const blocksRegistry = isDev ? 'http://localhost:3020' : 'http://localhost:3020';
|
||||
const modulePath = isDev ? '' : 'node_modules/create-block-dev-tool/';
|
||||
const projectDir = modulePath;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user