UNPKG

steemkr

Version:

스팀잇 기반 CLI 툴 : CLI(Command Line Interface) Tool for steemit.

112 lines (95 loc) 2.89 kB
const help = require('./help'); const steem = require('steem'); const readline = require('readline'); const ora = require('ora'); const DEFAULT_STEEM = '0.000 STEEM'; const STEEM_AUTHOR = process.env.STEEM_AUTHOR; const STEEM_KEY_ACTIVE = process.env.STEEM_KEY_ACTIVE; /* * 잔고에서 요청할 스팀 파워 정보를 계산한다 * @param answer 요청정보 * @param balance 잔고 * @return 유효한 요청금액 */ function getSteem(answer, balance){ if(!answer){ return DEFAULT_STEEM; }else if(answer.toUpperCase()=='ALL'){ return balance; }else{ try{ return answer + " STEEM"; }catch(e){ return DEFAULT_STEEM; } } } /* * 파라미터 정보를 초기화 해준다 * @param args 외부로부터 입력받은 파라미터 */ function initParams(args) { // 초기화 args = args?args:[]; // new 처리 하므로 return 처리 해야 됨에 유의 // 1번째 : 작가 if(args.length==0){ if(STEEM_AUTHOR){ args.push(STEEM_AUTHOR); } } // 2번째 : 엑티브키 if(args.length==1){ if(STEEM_KEY_ACTIVE){ args.push(STEEM_KEY_ACTIVE); } } return args; } module.exports = (args)=>{ // 파라미터 초기화 args = initParams(args); // 입력 파라미터 유효성 검증 if(args.length!=2){ console.error('\n [경고] 파라미터 오류 : 아래 메뉴얼을 참조 바랍니다'); help('powerup'); return; } let author = args[0]; let activeKey = args[1]; // 계정정보 및 엑티브 키 정보가 반드시 존재한다는 가정하에 아래 단계를 진행 let spinner = ora().start(`@${author} 계정 정보 로딩`); steem.api.getAccountsAsync([author]) .then(results=>{ spinner.succeed(`@${author} 계정 정보 로딩 - 성공`); let balance = results[0].balance; if(balance==DEFAULT_STEEM){ console.log('파워업 할 STEEM 이 존재하지 않습니다.'); }else{ // rl.question blocking이 아님에 유의 !! const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question(`${balance} 중 몇 STEEM을 파워업에 사용하시겠습니까 x.xxx 형태로 입력 ( all 입력 시 모두 파워업 진행 ) ? `, (answer) => { let steempw = getSteem(answer, balance); let b_pw = Number(balance.split(' ')[0]); let s_pw = Number(steempw.split(' ')[0]); if(steempw!=DEFAULT_STEEM && b_pw>=s_pw){ spinner = ora().start(`파워업( ${steempw} ) - 진행중`); steem.broadcast.transferToVestingAsync(activeKey, author, author, steempw) .then(sresults=>{ spinner.succeed(`파워업( ${steempw} ) - 성공`); console.log('steemkr ac 명령을 사용하여 반영된 정보를 확인 바랍니다.'); }).catch(se=>{ spinner.fail('파워업 - 실패' + se); }); } rl.close(); }); } }) .catch(e=>{ spinner.fail('계정 정보 로딩 - 실패' + e); }); };