mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-22 15:02:22 +00:00
fe01ead023
Change-Type: patch
67 lines
1.1 KiB
CoffeeScript
67 lines
1.1 KiB
CoffeeScript
|
|
windowSize = {}
|
|
|
|
updateWindowSize = ->
|
|
size = require('window-size')?.get()
|
|
windowSize.width = size?.width
|
|
windowSize.height = size?.height
|
|
|
|
process.stdout.on('resize', updateWindowSize)
|
|
|
|
module.exports = (stream = process.stdout) ->
|
|
# make sure we get initial metrics
|
|
updateWindowSize()
|
|
|
|
currentWindowSize = ->
|
|
# always return a copy.
|
|
# width/height can be undefined if no TTY.
|
|
width: windowSize.width
|
|
height: windowSize.height
|
|
|
|
hideCursor = ->
|
|
stream.write('\u001B[?25l')
|
|
|
|
showCursor = ->
|
|
stream.write('\u001B[?25h')
|
|
|
|
cursorUp = (rows = 0) ->
|
|
stream.write("\u001B[#{rows}A")
|
|
|
|
cursorDown = (rows = 0) ->
|
|
stream.write("\u001B[#{rows}B")
|
|
|
|
cursorHidden = ->
|
|
Promise = require('bluebird')
|
|
Promise.try(hideCursor).disposer(showCursor)
|
|
|
|
write = (str) ->
|
|
stream.write(str)
|
|
|
|
writeLine = (str) ->
|
|
stream.write("#{str}\n")
|
|
|
|
clearLine = ->
|
|
stream.write('\u001B[2K\r')
|
|
|
|
replaceLine = (str) ->
|
|
clearLine()
|
|
write(str)
|
|
|
|
deleteToEnd = ->
|
|
stream.write('\u001b[0J')
|
|
|
|
return {
|
|
stream
|
|
currentWindowSize
|
|
hideCursor
|
|
showCursor
|
|
cursorHidden
|
|
cursorUp
|
|
cursorDown
|
|
write
|
|
writeLine
|
|
clearLine
|
|
replaceLine
|
|
deleteToEnd
|
|
}
|