- 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 {Command} from 'commander';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
@@ -13,11 +15,17 @@ const __filename = fileURLToPath(import.meta.url);
|
|||||||
const __dirname = path.dirname(__filename);
|
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 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 blocksDirectory = isDev ? 'blocks/' : '';
|
||||||
|
|
||||||
const blockName = await init();
|
console.log(__dirname);
|
||||||
console.log(`🎉 Done! \n\nCheck the "${blocksDirectory}${blockName}" directory. \n`);
|
|
||||||
|
try {
|
||||||
|
const blockName = await init();
|
||||||
|
console.log(`🎉 Done! \n\nCheck the "${blocksDirectory}${blockName}" directory. \n`);
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Fail.');
|
||||||
|
}
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
const program = new Command();
|
const program = new Command();
|
||||||
@@ -26,14 +34,18 @@ async function init() {
|
|||||||
.name('create-block')
|
.name('create-block')
|
||||||
.description('AXE-WEB Platform Blocks');
|
.description('AXE-WEB Platform Blocks');
|
||||||
|
|
||||||
const promise = new Promise(resolve => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
program.command('pull')
|
program.command('pull')
|
||||||
.argument('<string>', 'Provide a full name of required block, for example: @axe-web/hero-block')
|
.argument('<string>', 'Provide a full name of required block, for example: @axe-web/hero-block')
|
||||||
.action(async (blockName, options) => {
|
.action(async (blockName, options) => {
|
||||||
console.log('📦 Block to download:', blockName)
|
console.log('📦 Block to download:', blockName)
|
||||||
|
|
||||||
await getBlockSourceFiles(blockName);
|
const status = await getBlockSourceFiles(blockName);
|
||||||
|
if (status) {
|
||||||
resolve(blockName);
|
resolve(blockName);
|
||||||
|
} else {
|
||||||
|
reject();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -49,6 +61,7 @@ async function getBlockSourceFiles(blockName) {
|
|||||||
const response = await fetch(`${blocksRegistry}?${queryString.toString()}`);
|
const response = await fetch(`${blocksRegistry}?${queryString.toString()}`);
|
||||||
const responseData = await response.json();
|
const responseData = await response.json();
|
||||||
if (!responseData || !responseData.name) {
|
if (!responseData || !responseData.name) {
|
||||||
|
console.log("⚠️ Block not found, please contact administrator.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +91,7 @@ async function getBlockSourceFiles(blockName) {
|
|||||||
blockGroupName: responseData.project,
|
blockGroupName: responseData.project,
|
||||||
version: responseData.version,
|
version: responseData.version,
|
||||||
devToolSource: defaultGitRepo,
|
devToolSource: defaultGitRepo,
|
||||||
}, __dirname);
|
}, __dirname, `${blocksDirectory}${responseData.name}`);
|
||||||
|
|
||||||
if (responseData.config.design_files) {
|
if (responseData.config.design_files) {
|
||||||
await downloadDesignFiles(responseData.name, 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 createDataFiles(responseData.name, responseData.config.data_sources);
|
||||||
|
|
||||||
await createConfigFile(responseData.name, responseData.config);
|
await createConfigFile(responseData.name, responseData.config);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createConfigFile(blockName, config = {}) {
|
async function createConfigFile(blockName, config = {}) {
|
||||||
|
|||||||
+10
-10
@@ -11,7 +11,8 @@ const __dirname = path.dirname(__filename);
|
|||||||
|
|
||||||
const baseDir = path.join(__dirname, '../../');
|
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 {
|
export default class extends Generator {
|
||||||
async prompting() {
|
async prompting() {
|
||||||
@@ -128,25 +129,24 @@ export default class extends Generator {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Technical Project files.
|
// Technical Project files.
|
||||||
createTechnicalFiles(data, baseDir).then();
|
createTechnicalFiles(data, baseDir, `blocks/${data.name}`).then();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createTechnicalFiles(data, baseDir) {
|
export async function createTechnicalFiles(data, baseDir, distPath) {
|
||||||
const pathDist = path.join(baseDir, `blocks/${data.name}`);
|
const pathDist = distPath; //path.join(baseDir, distPath);
|
||||||
const generatorsPath = path.join(baseDir, 'generators/block/templates');
|
const generatorsPath = path.join(baseDir, 'generators/block/templates');
|
||||||
|
|
||||||
const store = memFs.create();
|
const store = memFs.create();
|
||||||
const filesystem = editor.create(store);
|
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) {
|
for (let file of files) {
|
||||||
await filesystem.copyTplAsync(
|
const from = typeof file !== 'string' ? `${generatorsPath}/${file.from}` : `${generatorsPath}/${file}`;
|
||||||
`${generatorsPath}/${file}`,
|
const to = typeof file !== 'string' ? `${pathDist}/${file.to}` : `${pathDist}/${file}`;
|
||||||
`${pathDist}/${file}`,
|
|
||||||
data
|
await filesystem.copyTplAsync(from, to, data);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return filesystem.commit(); // Promise
|
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",
|
"name": "@axe-web/create-block",
|
||||||
"version": "1.0.6",
|
"version": "1.0.8",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "create-block-dev-tool",
|
"name": "@axe-web/create-block",
|
||||||
"version": "1.0.6",
|
"version": "1.0.7",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@braintree/sanitize-url": "^6.0.0",
|
"@braintree/sanitize-url": "^6.0.0",
|
||||||
@@ -39,7 +39,8 @@
|
|||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"component-build": "build.js",
|
"component-build": "build.js",
|
||||||
"component-dev": "server.js"
|
"component-dev": "server.js",
|
||||||
|
"create-block": "create-block.js pull"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
|
|||||||
+14
-4
@@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "create-block-dev-tool",
|
"name": "@axe-web/create-block",
|
||||||
"version": "1.0.6",
|
"version": "1.0.8",
|
||||||
|
"author": {
|
||||||
|
"name": "AXE-WEB",
|
||||||
|
"email": "office@axe-web.com",
|
||||||
|
"url": "https://axe-web.com/"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "component-dev",
|
"start": "component-dev",
|
||||||
"dev": "NODE_ENV=development node server.js",
|
"dev": "NODE_ENV=development node server.js",
|
||||||
@@ -12,7 +17,6 @@
|
|||||||
"dev-js": "rollup --config rollup.config.js --watch"
|
"dev-js": "rollup --config rollup.config.js --watch"
|
||||||
},
|
},
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"main": "server.js",
|
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@braintree/sanitize-url": "^6.0.0",
|
"@braintree/sanitize-url": "^6.0.0",
|
||||||
@@ -58,7 +62,13 @@
|
|||||||
"styled-components": "^5.3.5"
|
"styled-components": "^5.3.5"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
|
"create-block": "./create-block.js",
|
||||||
"component-dev": "./server.js",
|
"component-dev": "./server.js",
|
||||||
"component-build": "./build.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 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 modulePath = isDev ? '' : 'node_modules/create-block-dev-tool/';
|
||||||
const projectDir = modulePath;
|
const projectDir = modulePath;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user