UNPKG

@ignitial/iio-cli

Version:

Ignitial.io (IIO) application & services project generator

122 lines (109 loc) 3.16 kB
const fs = require('fs-extra') const path = require('path') const got = require('got') const _ = require('lodash') const configHelper = require('../helpers/config') const txtOrange = require('../utils').txtOrange const txtRed = require('../utils').txtRed /* { "_id": null, "name": "laborum consectetur minim aute", "description": "aliqua irure", "icon": "in amet cillum consectetur ullamco", "tags": [ "exercitation do consequat nostrud dolor", "proident", "irure ani", "sunt est" ], "receipes": [ { "name": "culpa consectetur deserunt ut", "content": "commodo labore esse" }, { "name": "ea velit quis ut", "content": "aliqua" }, { "name": "laborum fugiat ipsum ex amet", "content": "sit ut tempor proident" } ], "publicationInfo": { "date": "officia dolor", "author": { "name": "ad labore dolor ullamco ut", "email": "adipisicing pariatur Excepteur ad tempor" }, "ip": "sed consequat ad id" }, "_lastModified": "sint labore" } */ module.exports = async function(config, options) { let token try { token = fs.readFileSync(path.join(config.iioFolderPath, '.token'), 'utf8') token = JSON.parse(token).token } catch (err) { console.error(err, txtRed('failed to load token')) process.exit(1) } let workingDirectory = path.resolve('.') if (options.workingDir) { workingDirectory = path.resolve(options.workingDir) } let computedConfig = await configHelper('deploy', 'generate', options) // manage template case for testing let basename = computedConfig.packageDef.name === '@ignitial/iio-app-material-template' ? 'ignitialio' : computedConfig.packageDef.name let iconPath = 'public/assets/' + basename + '-64.png' let iconBase64 = fs.readFileSync(path.join(workingDirectory, iconPath), 'base64') let ip = JSON.parse((await got('https://api.ipify.org?format=json')).body).ip let author = { name: '', email: '' } if (typeof computedConfig.packageDef.author === 'string') { author.name = computedConfig.packageDef.author.replace(/\<(.*?)\>/, '') author.email = computedConfig.packageDef.author.match(/\<(.*?)\>/)[1] } let record = { name: computedConfig.packageDef.name, description: computedConfig.packageDef.description, icon: iconBase64, tags: [], receipes: computedConfig.yamlContent, publicationInfo: { date: new Date(), author: author, ip: ip } } let url = config.apps.referenceLib.endpoint + '/api/publish' // testing only if (_.findIndex(process.argv, e => e.match('src/index.js'))) { process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0 } got(url, { method: 'post', json: true, body: { record: record, token: token } }).then(answer => { if (!answer.body.err) { console.log('publication done.') } else { console.error(txtRed(answer.body.err)) } // console.log(answer.body) }).catch(err => { console.error(err, txtRed('failed to publish')) }) // console.log(config.apps.referenceLib.endpoint) // console.log(record) }