d975cc371d
modified: node_modules/.package-lock.json deleted: node_modules/array-union/index.d.ts deleted: node_modules/array-union/index.js deleted: node_modules/array-union/license deleted: node_modules/array-union/package.json deleted: node_modules/array-union/readme.md modified: node_modules/cliui/CHANGELOG.md modified: node_modules/cliui/package.json modified: node_modules/fast-glob/out/index.d.ts modified: node_modules/fast-glob/out/index.js modified: node_modules/fast-glob/out/managers/patterns.d.ts modified: node_modules/fast-glob/out/managers/patterns.js modified: node_modules/fast-glob/out/managers/tasks.d.ts modified: node_modules/fast-glob/out/managers/tasks.js modified: node_modules/fast-glob/out/providers/async.d.ts modified: node_modules/fast-glob/out/providers/async.js modified: node_modules/fast-glob/out/providers/filters/deep.d.ts modified: node_modules/fast-glob/out/providers/filters/deep.js modified: node_modules/fast-glob/out/providers/filters/entry.d.ts modified: node_modules/fast-glob/out/providers/filters/entry.js modified: node_modules/fast-glob/out/providers/filters/error.d.ts modified: node_modules/fast-glob/out/providers/filters/error.js modified: node_modules/fast-glob/out/providers/matchers/matcher.d.ts modified: node_modules/fast-glob/out/providers/matchers/matcher.js modified: node_modules/fast-glob/out/providers/matchers/partial.d.ts modified: node_modules/fast-glob/out/providers/matchers/partial.js modified: node_modules/fast-glob/out/providers/provider.d.ts modified: node_modules/fast-glob/out/providers/provider.js modified: node_modules/fast-glob/out/providers/stream.d.ts modified: node_modules/fast-glob/out/providers/stream.js modified: node_modules/fast-glob/out/providers/sync.d.ts modified: node_modules/fast-glob/out/providers/sync.js modified: node_modules/fast-glob/out/providers/transformers/entry.d.ts modified: node_modules/fast-glob/out/providers/transformers/entry.js modified: node_modules/fast-glob/out/readers/reader.d.ts modified: node_modules/fast-glob/out/readers/reader.js modified: node_modules/fast-glob/out/readers/stream.d.ts modified: node_modules/fast-glob/out/readers/stream.js modified: node_modules/fast-glob/out/readers/sync.d.ts modified: node_modules/fast-glob/out/readers/sync.js modified: node_modules/fast-glob/out/settings.d.ts modified: node_modules/fast-glob/out/settings.js modified: node_modules/fast-glob/out/types/index.d.ts modified: node_modules/fast-glob/out/types/index.js modified: node_modules/fast-glob/out/utils/array.d.ts modified: node_modules/fast-glob/out/utils/array.js modified: node_modules/fast-glob/out/utils/errno.d.ts modified: node_modules/fast-glob/out/utils/errno.js modified: node_modules/fast-glob/out/utils/fs.d.ts modified: node_modules/fast-glob/out/utils/fs.js modified: node_modules/fast-glob/out/utils/index.d.ts modified: node_modules/fast-glob/out/utils/index.js modified: node_modules/fast-glob/out/utils/path.d.ts modified: node_modules/fast-glob/out/utils/path.js modified: node_modules/fast-glob/out/utils/pattern.d.ts modified: node_modules/fast-glob/out/utils/pattern.js modified: node_modules/fast-glob/out/utils/stream.d.ts modified: node_modules/fast-glob/out/utils/stream.js modified: node_modules/fast-glob/out/utils/string.d.ts modified: node_modules/fast-glob/out/utils/string.js modified: node_modules/fast-glob/package.json modified: node_modules/fastq/README.md modified: node_modules/fastq/index.d.ts modified: node_modules/fastq/package.json modified: node_modules/fastq/queue.js modified: node_modules/fastq/test/promise.js deleted: node_modules/fs-extra/CHANGELOG.md modified: node_modules/fs-extra/README.md deleted: node_modules/fs-extra/lib/copy-sync/copy-sync.js deleted: node_modules/fs-extra/lib/copy-sync/index.js modified: node_modules/fs-extra/lib/copy/copy.js modified: node_modules/fs-extra/lib/copy/index.js modified: node_modules/fs-extra/lib/ensure/index.js modified: node_modules/fs-extra/lib/fs/index.js modified: node_modules/fs-extra/lib/index.js modified: node_modules/fs-extra/lib/json/output-json-sync.js modified: node_modules/fs-extra/lib/json/output-json.js deleted: node_modules/fs-extra/lib/move-sync/index.js deleted: node_modules/fs-extra/lib/move-sync/move-sync.js modified: node_modules/fs-extra/lib/move/index.js modified: node_modules/fs-extra/lib/move/move.js deleted: node_modules/fs-extra/lib/output/index.js modified: node_modules/fs-extra/lib/remove/index.js deleted: node_modules/fs-extra/lib/remove/rimraf.js modified: node_modules/fs-extra/package.json deleted: node_modules/globby/gitignore.js modified: node_modules/globby/index.d.ts modified: node_modules/globby/index.js modified: node_modules/globby/package.json modified: node_modules/globby/readme.md deleted: node_modules/globby/stream-utils.js deleted: node_modules/globby/to-path.js modified: node_modules/graceful-fs/LICENSE modified: node_modules/graceful-fs/graceful-fs.js modified: node_modules/graceful-fs/package.json modified: node_modules/graceful-fs/polyfills.js modified: node_modules/ignore/README.md modified: node_modules/ignore/index.js modified: node_modules/ignore/legacy.js modified: node_modules/ignore/package.json modified: node_modules/lilconfig/dist/index.js modified: node_modules/lilconfig/package.json modified: node_modules/lilconfig/readme.md deleted: node_modules/micromatch/CHANGELOG.md modified: node_modules/micromatch/README.md modified: node_modules/micromatch/index.js modified: node_modules/micromatch/package.json modified: node_modules/nanoid/bin/nanoid.cjs modified: node_modules/nanoid/index.browser.cjs modified: node_modules/nanoid/index.browser.js deleted: node_modules/nanoid/index.dev.js deleted: node_modules/nanoid/index.prod.js modified: node_modules/nanoid/nanoid.js modified: node_modules/nanoid/package.json modified: node_modules/postcss-cli/index.js modified: node_modules/postcss-cli/package.json modified: node_modules/postcss-load-config/README.md modified: node_modules/postcss-load-config/package.json modified: node_modules/postcss-load-config/src/index.d.ts modified: node_modules/postcss-load-config/src/index.js modified: node_modules/postcss-load-config/src/req.js modified: node_modules/postcss/README.md modified: node_modules/postcss/lib/at-rule.d.ts modified: node_modules/postcss/lib/comment.d.ts modified: node_modules/postcss/lib/container.d.ts modified: node_modules/postcss/lib/container.js modified: node_modules/postcss/lib/css-syntax-error.d.ts modified: node_modules/postcss/lib/declaration.d.ts modified: node_modules/postcss/lib/document.d.ts modified: node_modules/postcss/lib/fromJSON.d.ts modified: node_modules/postcss/lib/input.d.ts modified: node_modules/postcss/lib/input.js modified: node_modules/postcss/lib/lazy-result.d.ts modified: node_modules/postcss/lib/list.d.ts modified: node_modules/postcss/lib/list.js modified: node_modules/postcss/lib/map-generator.js modified: node_modules/postcss/lib/no-work-result.d.ts modified: node_modules/postcss/lib/node.d.ts modified: node_modules/postcss/lib/parse.d.ts modified: node_modules/postcss/lib/parser.js modified: node_modules/postcss/lib/postcss.d.ts modified: node_modules/postcss/lib/postcss.js modified: node_modules/postcss/lib/previous-map.d.ts modified: node_modules/postcss/lib/processor.d.ts modified: node_modules/postcss/lib/processor.js modified: node_modules/postcss/lib/result.d.ts modified: node_modules/postcss/lib/root.d.ts modified: node_modules/postcss/lib/root.js modified: node_modules/postcss/lib/rule.d.ts modified: node_modules/postcss/lib/stringifier.d.ts modified: node_modules/postcss/lib/stringify.d.ts modified: node_modules/postcss/lib/warning.d.ts modified: node_modules/postcss/package.json modified: node_modules/slash/index.d.ts modified: node_modules/slash/index.js modified: node_modules/slash/package.json modified: node_modules/slash/readme.md modified: node_modules/yaml/LICENSE modified: node_modules/yaml/README.md deleted: node_modules/yaml/browser/dist/PlainValue-b8036b75.js deleted: node_modules/yaml/browser/dist/Schema-e94716c8.js modified: node_modules/yaml/browser/dist/index.js deleted: node_modules/yaml/browser/dist/legacy-exports.js deleted: node_modules/yaml/browser/dist/package.json deleted: node_modules/yaml/browser/dist/parse-cst.js deleted: node_modules/yaml/browser/dist/resolveSeq-492ab440.js deleted: node_modules/yaml/browser/dist/types.js modified: node_modules/yaml/browser/dist/util.js deleted: node_modules/yaml/browser/dist/warnings-df54cb69.js modified: node_modules/yaml/browser/index.js deleted: node_modules/yaml/browser/map.js deleted: node_modules/yaml/browser/pair.js deleted: node_modules/yaml/browser/parse-cst.js deleted: node_modules/yaml/browser/scalar.js deleted: node_modules/yaml/browser/schema.js deleted: node_modules/yaml/browser/seq.js deleted: node_modules/yaml/browser/types.js deleted: node_modules/yaml/browser/types/binary.js deleted: node_modules/yaml/browser/types/omap.js deleted: node_modules/yaml/browser/types/pairs.js deleted: node_modules/yaml/browser/types/set.js deleted: node_modules/yaml/browser/types/timestamp.js deleted: node_modules/yaml/browser/util.js deleted: node_modules/yaml/dist/Document-9b4560a1.js deleted: node_modules/yaml/dist/PlainValue-ec8e588e.js deleted: node_modules/yaml/dist/Schema-88e323a7.js modified: node_modules/yaml/dist/index.js deleted: node_modules/yaml/dist/legacy-exports.js deleted: node_modules/yaml/dist/parse-cst.js deleted: node_modules/yaml/dist/resolveSeq-d03cb037.js modified: node_modules/yaml/dist/test-events.js deleted: node_modules/yaml/dist/types.js modified: node_modules/yaml/dist/util.js deleted: node_modules/yaml/dist/warnings-1000a372.js deleted: node_modules/yaml/index.d.ts deleted: node_modules/yaml/index.js deleted: node_modules/yaml/map.js modified: node_modules/yaml/package.json deleted: node_modules/yaml/pair.js deleted: node_modules/yaml/parse-cst.d.ts deleted: node_modules/yaml/parse-cst.js deleted: node_modules/yaml/scalar.js deleted: node_modules/yaml/schema.js deleted: node_modules/yaml/seq.js deleted: node_modules/yaml/types.d.ts deleted: node_modules/yaml/types.js deleted: node_modules/yaml/types.mjs deleted: node_modules/yaml/types/binary.js deleted: node_modules/yaml/types/omap.js deleted: node_modules/yaml/types/pairs.js deleted: node_modules/yaml/types/set.js deleted: node_modules/yaml/types/timestamp.js modified: node_modules/yaml/util.d.ts modified: node_modules/yaml/util.js deleted: node_modules/yaml/util.mjs modified: node_modules/yargs-parser/CHANGELOG.md modified: node_modules/yargs-parser/build/index.cjs modified: node_modules/yargs-parser/build/lib/index.js modified: node_modules/yargs-parser/build/lib/yargs-parser.js modified: node_modules/yargs-parser/package.json modified: node_modules/yargs/build/index.cjs modified: node_modules/yargs/build/lib/command.js modified: node_modules/yargs/build/lib/completion-templates.js modified: node_modules/yargs/build/lib/completion.js modified: node_modules/yargs/build/lib/usage.js modified: node_modules/yargs/build/lib/validation.js modified: node_modules/yargs/build/lib/yargs-factory.js modified: node_modules/yargs/build/lib/yerror.js modified: node_modules/yargs/lib/platform-shims/esm.mjs modified: node_modules/yargs/locales/en.json modified: node_modules/yargs/locales/fi.json modified: node_modules/yargs/locales/ru.json modified: node_modules/yargs/package.json modified: package-lock.json modified: package.json modified: public/about/index.html modified: public/access/index.html modified: public/blog/index.html modified: public/categories/index.html modified: public/index.html modified: public/manifesto/index.html modified: public/posts/apple-breaks-privacy/index.html modified: public/posts/index.html modified: public/posts/main_street_against_big_tech/index.html modified: public/posts/what_is_done_with_personal_data/index.html modified: public/projects/index.html modified: public/tags/index.html .hugo_build.lock go.mod go.sum node_modules/.bin/autoprefixer node_modules/.bin/browserslist node_modules/.bin/update-browserslist-db node_modules/autoprefixer/ node_modules/browserslist/ node_modules/caniuse-lite/ node_modules/cliui/build/index.d.cts node_modules/electron-to-chromium/ node_modules/fast-glob/out/readers/async.d.ts node_modules/fast-glob/out/readers/async.js node_modules/fraction.js/ node_modules/fs-extra/lib/copy/copy-sync.js node_modules/fs-extra/lib/esm.mjs node_modules/fs-extra/lib/move/move-sync.js node_modules/fs-extra/lib/output-file/ node_modules/globby/ignore.js node_modules/globby/node_modules/ node_modules/globby/utilities.js node_modules/lilconfig/LICENSE node_modules/node-releases/ node_modules/normalize-range/ node_modules/postcss-value-parser/ node_modules/postcss/lib/postcss.d.mts node_modules/update-browserslist-db/ node_modules/yaml/browser/dist/compose/ node_modules/yaml/browser/dist/doc/ node_modules/yaml/browser/dist/errors.js node_modules/yaml/browser/dist/log.js node_modules/yaml/browser/dist/node_modules/ node_modules/yaml/browser/dist/nodes/ node_modules/yaml/browser/dist/parse/ node_modules/yaml/browser/dist/public-api.js node_modules/yaml/browser/dist/schema/ node_modules/yaml/browser/dist/stringify/ node_modules/yaml/browser/dist/visit.js node_modules/yaml/browser/package.json node_modules/yaml/dist/compose/ node_modules/yaml/dist/doc/ node_modules/yaml/dist/errors.d.ts node_modules/yaml/dist/errors.js node_modules/yaml/dist/index.d.ts node_modules/yaml/dist/log.d.ts node_modules/yaml/dist/log.js node_modules/yaml/dist/nodes/ node_modules/yaml/dist/options.d.ts node_modules/yaml/dist/parse/ node_modules/yaml/dist/public-api.d.ts node_modules/yaml/dist/public-api.js node_modules/yaml/dist/schema/ node_modules/yaml/dist/stringify/ node_modules/yaml/dist/test-events.d.ts node_modules/yaml/dist/util.d.ts node_modules/yaml/dist/visit.d.ts node_modules/yaml/dist/visit.js node_modules/yargs/browser.d.ts node_modules/yargs/locales/cs.json node_modules/yargs/yargs.mjs public/css/main.min.c5514d3530979d291f3497facc20da1cec870028dbc2a3630b64bab8721bbe49.css resources/_gen/assets/sass/sass/style.sass_4d6f00452a35742ddbb489cb3703195e.content resources/_gen/assets/sass/sass/style.sass_4d6f00452a35742ddbb489cb3703195e.json resources/_gen/assets/sass/sass/style.sass_c87a2fc9dae9a546a3e3f1548c147175.content resources/_gen/assets/sass/sass/style.sass_c87a2fc9dae9a546a3e3f1548c147175.json
355 lines
9.1 KiB
JavaScript
Executable File
355 lines
9.1 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
import fs from 'fs-extra'
|
|
import path from 'path'
|
|
|
|
import prettyHrtime from 'pretty-hrtime'
|
|
import stdin from 'get-stdin'
|
|
import read from 'read-cache'
|
|
import pc from 'picocolors'
|
|
import { globby } from 'globby'
|
|
import slash from 'slash'
|
|
import chokidar from 'chokidar'
|
|
|
|
import postcss from 'postcss'
|
|
import postcssrc from 'postcss-load-config'
|
|
import postcssReporter from 'postcss-reporter/lib/formatter.js'
|
|
|
|
import argv from './lib/args.js'
|
|
import createDependencyGraph from './lib/DependencyGraph.js'
|
|
import getMapfile from './lib/getMapfile.js'
|
|
|
|
const reporter = postcssReporter()
|
|
const depGraph = createDependencyGraph()
|
|
|
|
let input = argv._
|
|
const { dir, output } = argv
|
|
|
|
if (argv.map) argv.map = { inline: false }
|
|
|
|
let cliConfig
|
|
|
|
async function buildCliConfig() {
|
|
cliConfig = {
|
|
options: {
|
|
map: argv.map !== undefined ? argv.map : { inline: true },
|
|
parser: argv.parser ? await import(argv.parser) : undefined,
|
|
syntax: argv.syntax ? await import(argv.syntax) : undefined,
|
|
stringifier: argv.stringifier
|
|
? await import(argv.stringifier)
|
|
: undefined,
|
|
},
|
|
plugins: argv.use
|
|
? await Promise.all(
|
|
argv.use.map(async (plugin) => {
|
|
try {
|
|
return (await import(plugin)).default()
|
|
} catch (e) {
|
|
const msg = e.message || `Cannot find module '${plugin}'`
|
|
let prefix = msg.includes(plugin) ? '' : ` (${plugin})`
|
|
if (e.name && e.name !== 'Error') prefix += `: ${e.name}`
|
|
return error(`Plugin Error${prefix}: ${msg}'`)
|
|
}
|
|
})
|
|
)
|
|
: [],
|
|
}
|
|
}
|
|
|
|
let configFile
|
|
|
|
if (argv.env) process.env.NODE_ENV = argv.env
|
|
if (argv.config) argv.config = path.resolve(argv.config)
|
|
|
|
let { isTTY } = process.stdin
|
|
|
|
if (process.env.FORCE_IS_TTY === 'true') {
|
|
isTTY = true
|
|
}
|
|
|
|
if (argv.watch && isTTY) {
|
|
process.stdin.on('end', () => process.exit(0))
|
|
process.stdin.resume()
|
|
}
|
|
|
|
/* istanbul ignore next */
|
|
if (parseInt(postcss().version) < 8) {
|
|
error('Please install PostCSS 8 or above')
|
|
}
|
|
|
|
buildCliConfig()
|
|
.then(() => {
|
|
if (argv.watch && !(argv.output || argv.replace || argv.dir)) {
|
|
error('Cannot write to stdout in watch mode')
|
|
// Need to explicitly exit here, since error() doesn't exit in watch mode
|
|
process.exit(1)
|
|
}
|
|
|
|
if (input && input.length) {
|
|
return globby(
|
|
input.map((i) => slash(String(i))),
|
|
{ dot: argv.includeDotfiles }
|
|
)
|
|
}
|
|
|
|
if (argv.replace || argv.dir) {
|
|
error(
|
|
'Input Error: Cannot use --dir or --replace when reading from stdin'
|
|
)
|
|
}
|
|
|
|
if (argv.watch) {
|
|
error('Input Error: Cannot run in watch mode when reading from stdin')
|
|
}
|
|
|
|
return ['stdin']
|
|
})
|
|
.then((i) => {
|
|
if (!i || !i.length) {
|
|
error('Input Error: You must pass a valid list of files to parse')
|
|
}
|
|
|
|
if (i.length > 1 && !argv.dir && !argv.replace) {
|
|
error(
|
|
'Input Error: Must use --dir or --replace with multiple input files'
|
|
)
|
|
}
|
|
|
|
if (i[0] !== 'stdin') i = i.map((i) => path.resolve(i))
|
|
|
|
input = i
|
|
|
|
return files(input)
|
|
})
|
|
.then((results) => {
|
|
if (argv.watch) {
|
|
const printMessage = () =>
|
|
printVerbose(pc.dim('\nWaiting for file changes...'))
|
|
const watcher = chokidar.watch(input.concat(dependencies(results)), {
|
|
usePolling: argv.poll,
|
|
interval: argv.poll && typeof argv.poll === 'number' ? argv.poll : 100,
|
|
awaitWriteFinish: {
|
|
stabilityThreshold: 50,
|
|
pollInterval: 10,
|
|
},
|
|
})
|
|
|
|
if (configFile) watcher.add(configFile)
|
|
|
|
watcher.on('ready', printMessage).on('change', (file) => {
|
|
let recompile = []
|
|
|
|
if (input.includes(file)) recompile.push(file)
|
|
|
|
const dependants = depGraph
|
|
.dependantsOf(file)
|
|
.concat(getAncestorDirs(file).flatMap(depGraph.dependantsOf))
|
|
|
|
recompile = recompile.concat(
|
|
dependants.filter((file) => input.includes(file))
|
|
)
|
|
|
|
if (!recompile.length) recompile = input
|
|
|
|
return files([...new Set(recompile)])
|
|
.then((results) => watcher.add(dependencies(results)))
|
|
.then(printMessage)
|
|
.catch(error)
|
|
})
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
error(err)
|
|
|
|
process.exit(1)
|
|
})
|
|
|
|
function rc(ctx, path) {
|
|
if (argv.use) return Promise.resolve(cliConfig)
|
|
|
|
return postcssrc(ctx, path)
|
|
.then((rc) => {
|
|
if (rc.options.from || rc.options.to) {
|
|
error(
|
|
'Config Error: Can not set from or to options in config file, use CLI arguments instead'
|
|
)
|
|
}
|
|
configFile = rc.file
|
|
return rc
|
|
})
|
|
.catch((err) => {
|
|
if (!err.message.includes('No PostCSS Config found')) throw err
|
|
})
|
|
}
|
|
|
|
function files(files) {
|
|
if (typeof files === 'string') files = [files]
|
|
|
|
return Promise.all(
|
|
files.map((file) => {
|
|
if (file === 'stdin') {
|
|
return stdin().then((content) => {
|
|
if (!content) return error('Input Error: Did not receive any STDIN')
|
|
return css(content, 'stdin')
|
|
})
|
|
}
|
|
|
|
return read(file).then((content) => css(content, file))
|
|
})
|
|
)
|
|
}
|
|
|
|
function css(css, file) {
|
|
const ctx = { options: cliConfig.options }
|
|
|
|
if (file !== 'stdin') {
|
|
ctx.file = {
|
|
dirname: path.dirname(file),
|
|
basename: path.basename(file),
|
|
extname: path.extname(file),
|
|
}
|
|
|
|
if (!argv.config) argv.config = path.dirname(file)
|
|
}
|
|
|
|
const relativePath =
|
|
file !== 'stdin' ? path.relative(path.resolve(), file) : file
|
|
|
|
if (!argv.config) argv.config = process.cwd()
|
|
|
|
const time = process.hrtime()
|
|
|
|
printVerbose(pc.cyan(`Processing ${pc.bold(relativePath)}...`))
|
|
|
|
return rc(ctx, argv.config)
|
|
.then((config) => {
|
|
config = config || cliConfig
|
|
const options = { ...config.options }
|
|
|
|
if (file === 'stdin' && output) file = output
|
|
|
|
// TODO: Unit test this
|
|
options.from = file === 'stdin' ? path.join(process.cwd(), 'stdin') : file
|
|
|
|
if (output || dir || argv.replace) {
|
|
const base = argv.base
|
|
? file.replace(path.resolve(argv.base), '')
|
|
: path.basename(file)
|
|
options.to = output || (argv.replace ? file : path.join(dir, base))
|
|
|
|
if (argv.ext) {
|
|
options.to = options.to.replace(path.extname(options.to), argv.ext)
|
|
}
|
|
|
|
options.to = path.resolve(options.to)
|
|
}
|
|
|
|
if (!options.to && config.options.map && !config.options.map.inline) {
|
|
error(
|
|
'Output Error: Cannot output external sourcemaps when writing to STDOUT'
|
|
)
|
|
}
|
|
|
|
return postcss(config.plugins)
|
|
.process(css, options)
|
|
.then((result) => {
|
|
const tasks = []
|
|
|
|
if (options.to) {
|
|
tasks.push(outputFile(options.to, result.css))
|
|
|
|
if (result.map) {
|
|
const mapfile = getMapfile(options)
|
|
tasks.push(outputFile(mapfile, result.map.toString()))
|
|
}
|
|
} else process.stdout.write(result.css, 'utf8')
|
|
|
|
return Promise.all(tasks).then(() => {
|
|
const prettyTime = prettyHrtime(process.hrtime(time))
|
|
printVerbose(
|
|
pc.green(
|
|
`Finished ${pc.bold(relativePath)} in ${pc.bold(prettyTime)}`
|
|
)
|
|
)
|
|
|
|
const messages = result.warnings()
|
|
if (messages.length) {
|
|
console.warn(reporter({ ...result, messages }))
|
|
}
|
|
|
|
return result
|
|
})
|
|
})
|
|
})
|
|
.catch((err) => {
|
|
throw err
|
|
})
|
|
|
|
async function outputFile(file, string) {
|
|
const fileExists = await fs.pathExists(file)
|
|
const currentValue = fileExists ? await fs.readFile(file, 'utf8') : null
|
|
if (currentValue === string) return
|
|
return fs.outputFile(file, string)
|
|
}
|
|
}
|
|
|
|
function dependencies(results) {
|
|
if (!Array.isArray(results)) results = [results]
|
|
|
|
const messages = []
|
|
|
|
results.forEach((result) => {
|
|
if (result.messages <= 0) return
|
|
|
|
result.messages
|
|
.filter((msg) =>
|
|
msg.type === 'dependency' || msg.type === 'dir-dependency' ? msg : ''
|
|
)
|
|
.map(depGraph.add)
|
|
.forEach((dependency) => {
|
|
if (dependency.type === 'dir-dependency') {
|
|
messages.push(
|
|
dependency.glob
|
|
? path.join(dependency.dir, dependency.glob)
|
|
: dependency.dir
|
|
)
|
|
} else {
|
|
messages.push(dependency.file)
|
|
}
|
|
})
|
|
})
|
|
|
|
return messages
|
|
}
|
|
|
|
function printVerbose(message) {
|
|
if (argv.verbose) console.warn(message)
|
|
}
|
|
|
|
function error(err) {
|
|
// Seperate error from logging output
|
|
if (argv.verbose) console.error()
|
|
|
|
if (typeof err === 'string') {
|
|
console.error(pc.red(err))
|
|
} else if (err.name === 'CssSyntaxError') {
|
|
console.error(err.toString())
|
|
} else {
|
|
console.error(err)
|
|
}
|
|
// Watch mode shouldn't exit on error
|
|
if (argv.watch) return
|
|
process.exit(1)
|
|
}
|
|
|
|
// Input: '/imports/components/button.css'
|
|
// Output: ['/imports/components', '/imports', '/']
|
|
function getAncestorDirs(fileOrDir) {
|
|
const { root } = path.parse(fileOrDir)
|
|
if (fileOrDir === root) {
|
|
return []
|
|
}
|
|
const parentDir = path.dirname(fileOrDir)
|
|
return [parentDir, ...getAncestorDirs(parentDir)]
|
|
}
|