mirror of
https://github.com/mashirozx/sakura.git
synced 2024-11-24 07:48:17 +08:00
63 lines
2.5 KiB
JavaScript
63 lines
2.5 KiB
JavaScript
|
#!/usr/local/bin/node
|
||
|
import { exec } from 'child_process'
|
||
|
import colors from 'colors'
|
||
|
import dotenv from 'dotenv'
|
||
|
|
||
|
const start = Date.now()
|
||
|
|
||
|
dotenv.config({ path: '.env.development' })
|
||
|
|
||
|
const argv = process.argv.slice(2)
|
||
|
|
||
|
const app = `rsync -a -P -e "ssh -i ${process.env.SSH_KEY_PATH}" ./app/ ${process.env.SSH_REMOTE_HOST}:${process.env.SSH_REMOTE_WORK_DIR}/app/ --exclude 'vendor' --exclude 'cache' --delete -ic`
|
||
|
|
||
|
let composer = `rsync -a -P -e "ssh -i ${process.env.SSH_KEY_PATH}" ./composer.* ${process.env.SSH_REMOTE_HOST}:${process.env.SSH_REMOTE_WORK_DIR}/ -ic`
|
||
|
|
||
|
const rmLF = (str) => {
|
||
|
if (str.lastIndexOf('\n') > 0) {
|
||
|
return str.substring(0, str.lastIndexOf('\n'))
|
||
|
} else {
|
||
|
return str
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (argv.indexOf('--composer-install') >= 0)
|
||
|
composer += ` && ssh -i ${process.env.SSH_KEY_PATH} ${process.env.SSH_REMOTE_HOST} 'cd ${process.env.SSH_REMOTE_WORK_DIR} && COMPOSER_ALLOW_SUPERUSER=1 composer install'`
|
||
|
|
||
|
let command
|
||
|
// TODO: separate these!
|
||
|
if (argv.indexOf('--geoip2') >= 0) {
|
||
|
command = `ssh -i ${process.env.SSH_KEY_PATH} ${process.env.SSH_REMOTE_HOST} 'cd ${process.env.SSH_REMOTE_WORK_DIR} && mkdir -p app/cache && curl -o app/cache/GeoLite2-City.mmdb https://raw.githubusercontent.com/P3TERX/GeoLite.mmdb/download/GeoLite2-City.mmdb'`
|
||
|
} else if (argv.indexOf('--qqwry') >= 0) {
|
||
|
command = `ssh -i ${process.env.SSH_KEY_PATH} ${process.env.SSH_REMOTE_HOST} 'cd ${process.env.SSH_REMOTE_WORK_DIR} && mkdir -p app/cache && curl -o app/cache/qqwry.dat https://raw.githubusercontent.com/out0fmemory/qqwry.dat/master/qqwry_lastest.dat'`
|
||
|
} else if (argv.indexOf('--composer') < 0 && argv.indexOf('--composer-install') < 0) {
|
||
|
command = app
|
||
|
} else {
|
||
|
command = composer
|
||
|
}
|
||
|
|
||
|
// console.log(command)
|
||
|
|
||
|
exec(command, (error, stdout, stderr) => {
|
||
|
if (stdout) stdout = stdout.replace('sending incremental file list\n', '')
|
||
|
if (error) {
|
||
|
console.log(rmLF(error.message))
|
||
|
console.log(
|
||
|
colors.inverse(colors.magenta(' rsync error '), ` ready in ${Date.now() - start}ms `)
|
||
|
)
|
||
|
return
|
||
|
}
|
||
|
if (stderr) {
|
||
|
console.log(rmLF(stderr))
|
||
|
console.log(
|
||
|
colors.inverse(colors.magenta(' rsync stderr '), ` ready in ${Date.now() - start}ms `)
|
||
|
)
|
||
|
return
|
||
|
}
|
||
|
if (stdout.trim())
|
||
|
// --itemize-changes: https://www.samba.org/ftp/rsync/rsync.html
|
||
|
console.log(colors.inverse(colors.green('YXcstogax File '), 'See: https://git.io/JnrAP '))
|
||
|
console.log(stdout.trim() ? rmLF(stdout) : colors.green('Already up to date, nothing to sync.'))
|
||
|
console.log(colors.inverse(colors.green(' rsync done '), ` ready in ${Date.now() - start} ms `))
|
||
|
})
|