UNPKG

kpay-install

Version:

Install the latest k-pay lib in your Fitbit app/clockface

105 lines (94 loc) 3.81 kB
#!/usr/bin/env node const [,, ...args] = process.argv if(args.length < 4) { console.error('Usage : kpay-install [apikey] [appName] [fitbit-developer-id] [fitbit-app-cluster-id] [(optional)libVersion]') return } const fs = require('fs') const unzip = require('unzip') const request = require('request') const mkdirp = require('mkdirp'); const readline = require('readline2'); const projectDir = process.env.INIT_CWD || require('path').resolve(".") const apikey = args[0] const appName = args[1] const fitbitDeveloperId = args[2] const fitbitAppClusterId = args[3] var fitbitLibVersion = null; if (args.length >= 5) { fitbitLibVersion = args[4] } var requestUrl = `https://api.k-pay.io/api/merchant/downloadlib/?platform=fitbit&key=${apikey}&appname=${encodeURI(appName)}&fitbitDeveloperId=${encodeURI(fitbitDeveloperId)}&fitbitAppClusterId=${encodeURI(fitbitAppClusterId)}`; if (fitbitLibVersion) { requestUrl += `&fitbitLibVersion=${encodeURI(fitbitLibVersion)}`; } console.log(`Checking k-pay for ${appName}`) request(requestUrl, function (error, _, body) { if (error) { console.error("ERROR:" + error); return; } var resp = JSON.parse(body); if (resp && resp.success && resp.url) { downloadAndInstallLib(resp.url); } else if (resp && resp.error) { console.error("ERROR: " + resp.error); } else { console.error("Unknown error..."); } }); function downloadAndInstallLib(url) { console.log(`Downloading k-pay lib for ${appName}`) request(url) .on('response', (response) => { if(response.statusCode === 200) { console.log(`Installing...`) response.pipe(unzip.Parse()) .on('entry', (entry) => { var fileName = entry.path if (fileName === 'app/kpay/kpay_config.js' && fs.existsSync(projectDir + '/' + fileName)) { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) rl.question('Do you want to overwrite your existing app/kpay/kpay_config.js? (y/N) ', (answer) => { if(answer === 'y') { entry.pipe(fs.createWriteStream(fileName)) } else { entry.autodrain() } rl.close() }) } else if (entry.type === 'Directory') { if (fileName.includes('kpay') || !fs.existsSync(projectDir + '/' + fileName)) { mkdirp.sync(projectDir + '/' + fileName) } if (fileName.includes('i18n') || !fs.existsSync(projectDir + '/' + fileName)) { mkdirp.sync(projectDir + '/' + fileName) } entry.autodrain() } else if (entry.type === 'File') { if (fileName.includes('kpay') || !fs.existsSync(projectDir + '/' + fileName)) { entry.pipe(fs.createWriteStream(fileName)) } if (fileName.includes('i18n') || !fs.existsSync(projectDir + '/' + fileName)) { entry.pipe(fs.createWriteStream(fileName)) } } else { entry.autodrain() } }) } else { console.error(`ERROR : ${response.body}`) } }) .on('error', (err) => console.error(err)) }