You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.5 KiB
JavaScript
82 lines
1.5 KiB
JavaScript
const { fileForEach } = require('@jiaminghi/fs')
|
|
const Client = require('ftp')
|
|
const print = require('./plugin/print')
|
|
const { emptyDir, put } = require('./plugin/ftp')
|
|
const getNodeParams = require('./plugin/nodeParams')
|
|
|
|
let config = null
|
|
|
|
try {
|
|
config = require('./config')
|
|
} catch (err) {
|
|
void 0
|
|
}
|
|
|
|
const DIST_PATH = './dist/'
|
|
const FTP_PATH = './transition/'
|
|
|
|
const ftp = new Client()
|
|
|
|
ftp.on('ready', async foo => {
|
|
print.tip('FTP connected!')
|
|
|
|
const isEmpty = await emptyDir(ftp, FTP_PATH)
|
|
|
|
if (!isEmpty) {
|
|
print.error('Exception in emptyDir!')
|
|
|
|
return false
|
|
}
|
|
|
|
let status = true
|
|
|
|
await fileForEach(DIST_PATH, async src => {
|
|
const destPath = FTP_PATH + src.split('/').slice(-1)[0]
|
|
|
|
print.tip('Upload: ' + destPath)
|
|
|
|
if (!await put(ftp, src, destPath)) {
|
|
status = false
|
|
|
|
print.error('Exception in upload ' + destPath)
|
|
}
|
|
})
|
|
|
|
if (status) {
|
|
print.yellow('-------------------------------------')
|
|
print.success(' Automatic Deployment Success! ')
|
|
print.yellow('-------------------------------------')
|
|
}
|
|
|
|
ftp.destroy()
|
|
})
|
|
|
|
ftp.on('greeting', foo => {
|
|
print.tip('FTP greeting')
|
|
})
|
|
ftp.on('close', foo => {
|
|
print.tip('FTP close')
|
|
})
|
|
ftp.on('end', foo => {
|
|
print.tip('FTP end')
|
|
})
|
|
ftp.on('error', foo => {
|
|
print.tip('FTP error')
|
|
})
|
|
|
|
const { host, user, pass } = config || getNodeParams()
|
|
|
|
if (!host || !user || !pass) {
|
|
print.error('Upload Dist to FTP Missing Parameters!')
|
|
|
|
return false
|
|
}
|
|
|
|
print.tip('Start Upload!')
|
|
|
|
ftp.connect({
|
|
host,
|
|
user,
|
|
password: pass
|
|
})
|