efficient-tools
Version:
Provide some efficient tools to improve your efficiency.
88 lines (76 loc) • 1.95 kB
JavaScript
/*global process, $ */
/*
* @Author: luhaifeng666 youzui@hotmail.com
* @Date: 2022-04-15 10:58:22
* @LastEditors: luhaifeng666
* @LastEditTime: 2022-08-12 17:49:52
* @Description:
*/
import 'zx/globals'
import fs from 'fs'
import path from 'path'
import dotenv from 'dotenv'
import inquirer from 'inquirer'
import { errorHandler, warningHandler, successHandler, __dirname } from './common.js'
import { PLATFORMS_TYPE } from '../constants/index.js'
dotenv.config({ path: path.join(__dirname, '../../.env') })
const { HOME, ETL_DIRECTORY } = process.env
export const BASE_URL = path.join(ETL_DIRECTORY || HOME, '/etl.json')
/**
* jumpUrl
* @param {String} url target url
*/
export const jumpUrl = async function (url) {
let handleType = PLATFORMS_TYPE[process.platform]
await $`${handleType} ${url}`
}
/**
* getAddresses
* @param {Function} cb call
* @param {Boolean} isAdd add tag
*/
export const getAddresses = function (cb, isAdd = false) {
fs.readFile(BASE_URL, { encoding: 'utf-8'}, (err, data) => {
try {
if (!isAdd && err) {
if (err.code === 'ENOENT') {
warningHandler(`There's no address in ${BASE_URL}! Try using 'add' command.`)
return
}
throw err
}
cb(data)
} catch (err) {
errorHandler(`Get addresses error: ${err}`)
}
})
}
/**
* addAddresses
* @param {Object} data file data
* @param {Object} msgConfig success message && error message
*/
export const addAddresses = function (data, { successMsg = 'Completed!', errorMsg = 'Error!'} = {
successMsg: ''
}) {
fs.writeFile(BASE_URL, JSON.stringify(data), err => {
if (err) {
errorHandler(`${errorMsg}${err}`)
} else {
successHandler(successMsg)
}
})
}
/**
* promptCreator
* @param {Object[]} configs
* @param {Function} cb
*/
export const promptCreator = function (configs, cb) {
inquirer.prompt(configs).then(answer => {
cb(answer)
}).catch(err => {
errorHandler(err)
})
}