Skip to content

Commit

Permalink
feat: adds options to alter logging behavior (#174)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeshultz authored Jul 19, 2020
1 parent 1979781 commit 3bd0313
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 29 deletions.
21 changes: 12 additions & 9 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
const ora = require('ora')
const _ = require('lodash')
const { logError } = require('./logging')
const { logger, logError } = require('./logging')

const guessPathIfEmpty = require('./guess-path')
const showSize = require('./show-size')
Expand All @@ -22,15 +21,17 @@ async function deploy ({
remotePinners = ['infura'],
dnsProviders = [],
siteDomain,
credentials = {}
credentials = {},
writeLog = null,
writeError = null
} = {}) {
publicDirPath = guessPathIfEmpty(publicDirPath)

if (!publicDirPath) {
return undefined
}

const readableSize = await showSize(publicDirPath)
const readableSize = await showSize(publicDirPath, { writeLog, writeError })

if (!readableSize) {
return undefined
Expand All @@ -54,9 +55,11 @@ async function deploy ({
let lastHash = null

for (const pinnerName of remotePinners) {
const pinner = await pinnerProviders[_.camelCase(pinnerName)](
credentials[_.camelCase(pinnerName)] || null
)
const pinner = await pinnerProviders[_.camelCase(pinnerName)]({
...credentials[_.camelCase(pinnerName)],
writeLog,
writeError
})

if (!pinner) {
return
Expand All @@ -80,8 +83,8 @@ async function deploy ({
}

if (!sameValues(pinnedHashes)) {
const spinner = ora()
spinner.fail('β‰  Found inconsistency in pinned hashes:')
const log = logger({ writeLog, writeError })
log.fail('β‰  Found inconsistency in pinned hashes:')
logError(pinnedHashes)
return
}
Expand Down
19 changes: 18 additions & 1 deletion src/logging.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const _ = require('lodash')
const fp = require('lodash/fp')
const neatFrame = require('neat-frame')
const ora = require('ora')
const { stripIndent } = require('common-tags')

function formatError (e) {
Expand Down Expand Up @@ -28,4 +29,20 @@ function logError (e) {
return errorString
}

module.exports = { formatError, logError }
const logger = (options) => {
if (!(options.writeError && options.writeLog)) {
return ora()
}

const stderr = options.writeError ? options.writeError : logError
const stdout = options.writeLog

return {
fail: stderr,
succeed: stdout,
info: stdout,
start: stdout
}
}

module.exports = { formatError, logError, logger }
23 changes: 11 additions & 12 deletions src/pinners/maker.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const ora = require('ora')
const colors = require('colors/safe')
const _ = require('lodash')
const { logError } = require('../logging')
const { logger, logError } = require('../logging')
const { linkCid } = require('../url-utils')
const white = colors.brightWhite

Expand All @@ -19,35 +18,35 @@ module.exports = ({ name, builder, pinDir, pinHash }) => async options => {

return {
pinDir: async (dir, tag) => {
const spinner = ora()
spinner.start(`πŸ“  Uploading and pinning to ${name}…`)
const log = logger(options)
log.start(`πŸ“  Uploading and pinning to ${name}…`)

try {
const hash = await pinDir(api, dir, tag)

spinner.succeed(`πŸ“Œ Added and pinned to ${name} with hash:`)
spinner.info(linkCid(hash, slug))
log.succeed(`πŸ“Œ Added and pinned to ${name} with hash:`)
log.info(linkCid(hash, slug))

return hash
} catch (error) {
spinner.fail(`πŸ’” Uploading to ${name} didn't work.`)
log.fail(`πŸ’” Uploading to ${name} didn't work.`)
logError(error)
return undefined
}
},
pinHash: async (hash, tag) => {
const spinner = ora()
spinner.start(`πŸ“  Pinning hash to ${name}…`)
const log = logger(options)
log.start(`πŸ“  Pinning hash to ${name}…`)

try {
await pinHash(api, hash, tag)

spinner.succeed(`πŸ“Œ Hash pinned to ${name}:`)
spinner.info(linkCid(hash, slug))
log.succeed(`πŸ“Œ Hash pinned to ${name}:`)
log.info(linkCid(hash, slug))

return hash
} catch (error) {
spinner.fail(`πŸ’” Pinning to ${name} didn't work.`)
log.fail(`πŸ’” Pinning to ${name} didn't work.`)
logError(error)
return undefined
}
Expand Down
13 changes: 6 additions & 7 deletions src/show-size.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
const util = require('util')
const trammel = util.promisify(require('trammel'))
const byteSize = require('byte-size')
const ora = require('ora')
const colors = require('colors/safe')

const { logError } = require('./logging')
const { logger, logError } = require('./logging')

module.exports = async path => {
const spinner = ora()
spinner.start(`πŸ“¦ Calculating size of ${colors.blue(path)}…`)
module.exports = async (path, options) => {
const log = logger(options)
log.start(`πŸ“¦ Calculating size of ${colors.blue(path)}…`)
try {
const size = await trammel(path, {
stopOnError: true,
type: 'raw'
})
const kibi = byteSize(size, { units: 'iec' })
const readableSize = `${kibi.value} ${kibi.unit}`
spinner.succeed(
log.succeed(
`🚚 Directory ${colors.blue(path)} weighs ${readableSize}.`
)
return readableSize
} catch (e) {
spinner.fail("βš– Couldn't calculate website size.")
log.fail("βš– Couldn't calculate website size.")
logError(e)
return undefined
}
Expand Down

0 comments on commit 3bd0313

Please sign in to comment.