diff --git a/create-block.js b/create-block.js old mode 100644 new mode 100755 index 55a9163..d76a092 --- a/create-block.js +++ b/create-block.js @@ -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('', '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); - resolve(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 = {}) { diff --git a/generators/block/index.js b/generators/block/index.js index 556d7df..e8c60c7 100644 --- a/generators/block/index.js +++ b/generators/block/index.js @@ -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 diff --git a/generators/block/templates/gitignore b/generators/block/templates/gitignore new file mode 100644 index 0000000..e888aa6 --- /dev/null +++ b/generators/block/templates/gitignore @@ -0,0 +1,7 @@ +# Basic +.idea +.DS_Store +node_modules +vendor + +# Custom diff --git a/package-lock.json b/package-lock.json index a7deb80..46361f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index f515326..0eb50dc 100644 --- a/package.json +++ b/package.json @@ -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" + ] } diff --git a/server.js b/server.js index b21ae97..ad46a5f 100755 --- a/server.js +++ b/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 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;