84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import * as program from 'commander'
|
|
import * as Promise from 'bluebird'
|
|
import { isAbsolute } from 'path'
|
|
import { join } from 'path'
|
|
|
|
import { readdirPromise } from '../../../helpers/core-utils'
|
|
import { execCLI } from '../../utils'
|
|
|
|
program
|
|
.option('-u, --url <url>', 'Server url')
|
|
.option('-U, --username <username>', 'Username')
|
|
.option('-p, --password <token>', 'Password')
|
|
.option('-i, --input <directory>', 'Videos directory absolute path')
|
|
.option('-d, --description <description>', 'Video descriptions')
|
|
.option('-c, --category <category>', 'Video categories')
|
|
.option('-l, --licence <licence>', 'Video licences')
|
|
.option('-t, --tags <tags>', 'Video tags', list)
|
|
.parse(process.argv)
|
|
|
|
if (
|
|
!program['url'] ||
|
|
!program['username'] ||
|
|
!program['password'] ||
|
|
!program['input'] ||
|
|
!program['description'] ||
|
|
!program['category'] ||
|
|
!program['licence'] ||
|
|
!program['tags']
|
|
) {
|
|
throw new Error('All arguments are required.')
|
|
}
|
|
|
|
if (isAbsolute(program['input']) === false) {
|
|
throw new Error('Input path should be absolute.')
|
|
}
|
|
|
|
let command = `npm run ts-node -- ${__dirname}/get-access-token.ts`
|
|
command += ` -u "${program['url']}"`
|
|
command += ` -n "${program['username']}"`
|
|
command += ` -p "${program['password']}"`
|
|
|
|
execCLI(command)
|
|
.then(stdout => {
|
|
const accessToken = stdout.replace('\n', '')
|
|
|
|
console.log(accessToken)
|
|
|
|
return readdirPromise(program['input']).then(files => ({ accessToken, files }))
|
|
})
|
|
.then(({ accessToken, files }) => {
|
|
return Promise.each(files, file => {
|
|
const video = {
|
|
tags: program['tags'],
|
|
name: file,
|
|
description: program['description'],
|
|
category: program['category'],
|
|
licence: program['licence']
|
|
}
|
|
|
|
let command = `npm run ts-node -- ${__dirname}/upload.ts`
|
|
command += ` -u "${program['url']}"`
|
|
command += ` -a "${accessToken}"`
|
|
command += ` -n "${video.name}"`
|
|
command += ` -d "${video.description}"`
|
|
command += ` -c "${video.category}"`
|
|
command += ` -l "${video.licence}"`
|
|
command += ` -t "${video.tags.join(',')}"`
|
|
command += ` -f "${join(program['input'], file)}"`
|
|
|
|
return execCLI(command).then(stdout => console.log(stdout))
|
|
})
|
|
})
|
|
.then(() => process.exit(0))
|
|
.catch(err => {
|
|
console.error(err)
|
|
process.exit(-1)
|
|
})
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
function list (val) {
|
|
return val.split(',')
|
|
}
|