All checks were successful
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 47s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m47s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m37s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 2m52s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 3m2s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 31s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m44s
/ deploy (push) Successful in 48s
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const fs = require("fs")
|
|
const path = require("path")
|
|
const defaultsDeep = require("lodash.defaultsdeep")
|
|
const stringifyJS = require("~/js/stringify-js")
|
|
|
|
function getName(filename) {
|
|
return path.basename(filename, path.extname(filename))
|
|
}
|
|
|
|
const defaultOptions = {
|
|
pattern: /\.(js)$/,
|
|
loader: (filename) => {
|
|
const src = path.join(
|
|
path.dirname(filename),
|
|
path.basename(filename, path.extname(filename))
|
|
)
|
|
return `require("${src}")`
|
|
},
|
|
}
|
|
|
|
module.exports = function dirtree2static(filename, options = {}, rootDir) {
|
|
const isRoot = !rootDir
|
|
if (isRoot) {
|
|
defaultsDeep(options, defaultOptions)
|
|
rootDir = filename
|
|
}
|
|
const { pattern, loader } = options
|
|
const stats = fs.lstatSync(filename)
|
|
if (stats.isDirectory()) {
|
|
const files = fs.readdirSync(filename).filter((file) => {
|
|
const absPath = `${filename}/${file}`
|
|
const relPath = absPath.slice(rootDir.length)
|
|
return (
|
|
(typeof pattern === "function"
|
|
? pattern(relPath)
|
|
: relPath.match(pattern)) ||
|
|
fs.lstatSync(`${filename}/${file}`).isDirectory()
|
|
)
|
|
})
|
|
|
|
const results = {}
|
|
for (const file of files) {
|
|
const name = getName(file)
|
|
const result = dirtree2static(`${filename}/${file}`, options, rootDir)
|
|
results[name] = result
|
|
}
|
|
if (isRoot) {
|
|
return stringifyJS(results)
|
|
}
|
|
return results
|
|
}
|
|
return loader(filename)
|
|
}
|