Browse Source

- Push repo to npm registry.

- Remove unnecessary log prints.
- Download and create all required files.
- Generate technical repo files.
#Create Block from registry.
pull/1/head
Roman Axelrod 3 years ago
parent
commit
2a5daa2445
  1. 29
      create-block.js
  2. 20
      generators/block/index.js
  3. 7
      generators/block/templates/gitignore
  4. 11
      package-lock.json
  5. 18
      package.json
  6. 2
      server.js

29
create-block.js

@ -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);
resolve(blockName); if (status) {
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 = {}) {

20
generators/block/index.js

@ -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

7
generators/block/templates/gitignore

@ -0,0 +1,7 @@
# Basic
.idea
.DS_Store
node_modules
vendor
# Custom

11
package-lock.json

@ -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",

18
package.json

@ -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"
]
} }

2
server.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;

Loading…
Cancel
Save