UNPKG

1.75 kBJavaScriptView Raw
1const path = require('path')
2const fs = require('fs')
3const chalk = require('chalk')
4
5const inquiry = require('./lib/inquiry')
6const strike = require('./lib/strike')
7const upload = require('./lib/upload')
8const home = require('user-home')
9const keyDir = path.resolve(home, './.qiniu')
10const keyFile = path.resolve(home, './.qiniu/key.json')
11
12function readFiles(srcDir, ext) {
13 let files = []
14 let names = []
15 let loop = (function loop(src) {
16 let dirs = fs.readdirSync(src)
17
18 for (let temp in dirs) {
19 let dir = path.join(src, dirs[temp])
20 let stat = fs.statSync(dir);
21
22 if (stat.isFile() &&
23 (!(new RegExp(ext + '$').test(dirs[temp])))) {
24 files.push(dir = dir.replace(/\\/g, '\/'))
25 names.push(((dir.match(/(\/[^\/]+\/+)[^\/]+$/) || [])[1] || '/') + dirs[temp])
26 } else if (stat.isDirectory()) {
27 loop(dir)
28 }
29 }
30 })
31 loop(srcDir)
32 return {
33 files: files,
34 names: names
35 }
36}
37
38module.exports = function(bucket, src, fix, ext) {
39 let infos = readFiles(src, ext)
40 let handFile = function(fn) {
41 let context = this
42 strike.apply(context, [bucket, fix, function() {
43 infos.files.map(function(value, idx) {
44 upload.apply(context, [bucket, path.resolve(value), fix + infos.names[idx], fn])
45 })
46 }])
47 }
48
49 console.log(' ' + chalk.bgRed(' Upload number: ' + infos.files.length + ' files '))
50
51 if (fs.existsSync(keyFile)) {
52 handFile.call(require(keyFile))
53 } else {
54
55 inquiry(function(answer) {
56 handFile.call(answer, function() {
57 if (answer.save) {
58 fs.existsSync(keyDir) ? '' : fs.mkdirSync(path.join(home, '.qiniu'))
59 fs.createWriteStream(keyFile).write(JSON.stringify(answer));
60 }
61 })
62 })
63 }
64}
\No newline at end of file