@ -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 \n Check the " ${ blocksDirectory } ${ blockName } " directory. \n ` ) ;
try {
const blockName = await init ( ) ;
console . log ( ` 🎉 Done! \n \n Check 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 = { } ) {