catlogjs
Version:
Static site generator, translate human readable text format(such as markdown) into html, with a lot of other functions
43 lines (36 loc) • 1.1 kB
text/coffeescript
fs = require 'fs'
path = require 'path'
directory = {}
directory.rm_recur = (dir) ->
if fs.lstatSync(dir).isDirectory()
for subdir in fs.readdirSync(dir)
directory.rm_recur path.join(dir, subdir)
fs.rmdirSync dir
else
fs.unlinkSync dir
directory.mkdir_parent = (dir, mode) ->
try
fs.mkdirSync dir, mode
catch error
if error and error.errno is 34
directory.mkdir_parent path.dirname(dir), mode
directory.mkdir_parent dir, mode
else
throw error
directory.traverse = (dir, iterator) ->
iterator dir
if fs.statSync(dir).isDirectory()
for subdir in fs.readdirSync(dir)
directory.traverse path.join(dir, subdir), iterator
directory.list = (dir, filter) ->
srcs = []
directory.traverse dir, (src) ->
if not filter or filter src
srcs.push src
return srcs
directory.root = (cwd=process.cwd(), identifier) ->
cur = cwd
while cur isnt '/' and not fs.existsSync path.join(cur, identifier)
cur = path.dirname cur
return if fs.existsSync path.join(cur, identifier) then cur else null
module.exports = directory