/
index.js
57 lines (46 loc) 路 1.86 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const core = require('@actions/core')
// const github = require('@actions/github')
const Neocities = require('async-neocities')
const path = require('path')
const ms = require('ms')
const assert = require('webassert').default
const fsp = require('fs').promises
const { minimatch } = require('minimatch')
const { stackWithCauses } = require('pony-cause')
let cleanup
async function doDeploy () {
const token = core.getInput('api_token')
const distDir = path.join(process.cwd(), core.getInput('dist_dir'))
cleanup = JSON.parse(core.getInput('cleanup'))
const protectedFilesGlob = core.getInput('protected_files')
assert(typeof cleanup === 'boolean', 'Cleanup input must be a boolean "true" or "false"')
const stat = await fsp.stat(distDir)
assert(stat.isDirectory(), 'dist_dir must be a directory that exists')
const client = new Neocities(token)
const deployOpts = {
cleanup,
statsCb: Neocities.statsHandler()
}
if (protectedFilesGlob) deployOpts.protectedFileFilter = minimatch.filter(protectedFilesGlob)
const stats = await client.deploy(distDir, deployOpts)
console.log(`Deployed to Neocities in ${ms(stats.time)}:`)
console.log(` Uploaded ${stats.filesToUpload.length} files`)
console.log(` ${cleanup ? 'Deleted' : 'Orphaned'} ${stats.filesToDelete.length} files`)
console.log(` Skipped ${stats.filesSkipped.length} files`)
console.log(` ${stats.protectedFiles.length} protected files:`)
if (stats.protectedFiles.length) {
console.log(stats.protectedFiles)
}
}
doDeploy().catch(err => {
console.error(stackWithCauses(err))
if (err.stats) {
console.log('Files to upload: ')
console.dir(err.stats.filesToUpload, { colors: true, depth: 999 })
if (cleanup) {
console.log('Files to delete: ')
console.dir(err.stats.filesToDelete, { colors: true, depth: 999 })
}
}
core.setFailed(err.message)
})