166 lines
4.9 KiB
JavaScript
Executable File
166 lines
4.9 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
import { Command } from 'commander'
|
|
const program = new Command()
|
|
|
|
import status from '../bin/commands/status.js'
|
|
import discord from '../bin/commands/discord.js'
|
|
import auth from '../bin/commands/auth.js'
|
|
import gists from '../bin/commands/gists.js'
|
|
import yt from '../bin/commands/yt.js'
|
|
import upload from '../bin/commands/upload.js'
|
|
import config from '../bin/commands/config.js'
|
|
|
|
program
|
|
.name('b68')
|
|
.description(
|
|
'A CLI tool to interact with BRAVO68WEB API hosted at https://api.b68dev.xyz'
|
|
)
|
|
.version('0.0.1')
|
|
.usage('<command>')
|
|
|
|
program
|
|
.command('status')
|
|
.name('status')
|
|
.description('Get the status of the API')
|
|
.action(status)
|
|
|
|
program
|
|
.command('discord')
|
|
.description('Get the Discord Status of the API')
|
|
.name('discord')
|
|
.option('-s, --spotify', 'Get Spotify listening', false)
|
|
.option('-a, --activity', 'Get Playing activity', false)
|
|
.action((options) => {
|
|
if (options.spotify) {
|
|
discord.spotify()
|
|
} else if (options.activity) {
|
|
discord.activity()
|
|
} else {
|
|
discord.userStatus()
|
|
}
|
|
})
|
|
|
|
program
|
|
.command('yt')
|
|
.description('Interact within Youtube API')
|
|
.name('yt')
|
|
.option('-vi, --video-info', 'Get YT video info', false)
|
|
.option('-ci, --channel-info', 'Get YT channel info', false)
|
|
.option('-pi, --playlist-info', 'Get YT playlist info', false)
|
|
.option('-pt, --playlist-items', 'Get YT Playlist Items info', false)
|
|
.option('-s, --spotify', 'Get Spotify Equivalent', false)
|
|
.argument('<url>', 'url to interact with')
|
|
.action((url, options) => {
|
|
if (options.videoInfo) {
|
|
yt.videoInfo(url)
|
|
} else if (options.channelInfo) {
|
|
yt.channelInfo(url)
|
|
} else if (options.playlistInfo) {
|
|
yt.playlistInfo(url)
|
|
} else if (options.playlistItems) {
|
|
yt.playlistItems(url)
|
|
} else if (options.spotify) {
|
|
yt.spotify(url)
|
|
} else {
|
|
console.log('Please specify a command')
|
|
process.exit(1)
|
|
}
|
|
})
|
|
|
|
program
|
|
.command('auth')
|
|
.description('Authenticate with BRAVO68WEB API')
|
|
.option('-l, --login', 'Login to BRAVO68WEB API', false)
|
|
.option('-o, --otp', 'Login with OTP', false)
|
|
.option('-r, --register', 'Register with BRAVO68WEB API', false)
|
|
.option('-c, --check', 'Check if you are authenticated', false)
|
|
.option('-d, --delete', 'Delete your authentication token', false)
|
|
.name('auth')
|
|
.argument('[[email]', 'email to login with')
|
|
.argument('[apiKey]', 'apiKey to login with')
|
|
.action((email, apiKey, options) => {
|
|
if (options.login) {
|
|
if (!email || !apiKey) {
|
|
console.log('Please provide an email and apiKey')
|
|
process.exit(1)
|
|
}
|
|
auth.login(email, apiKey)
|
|
} else if (options.otp) {
|
|
if (!email) {
|
|
console.log('Please provide an email')
|
|
process.exit(1)
|
|
}
|
|
auth.loginOtp(email)
|
|
} else if (options.register) {
|
|
if (!email) {
|
|
console.log('Please provide an email')
|
|
process.exit(1)
|
|
}
|
|
auth.register(email)
|
|
} else if (options.check) {
|
|
auth.check()
|
|
} else if (options.delete) {
|
|
auth.logout()
|
|
} else {
|
|
console.log('Please specify a command')
|
|
process.exit(1)
|
|
}
|
|
})
|
|
|
|
const gistsCmds = program.command('gists').description('Gists related commands')
|
|
|
|
gistsCmds
|
|
.command('create')
|
|
.description("Create gists at BRAVO68WEB API's Gists Store")
|
|
.argument('<title>', 'title of gist')
|
|
.argument('<message>', 'content of gist')
|
|
.argument('<short>', 'short description of gist')
|
|
.argument('<tags>', 'tags of gist')
|
|
.action((title, message, short, tags) => {
|
|
if (!title || !message) {
|
|
console.log('Please provide a title and message')
|
|
return
|
|
}
|
|
if (!short) {
|
|
short = ''
|
|
}
|
|
if (!tags) {
|
|
tags = ''
|
|
}
|
|
gists.create(title, message, short, tags)
|
|
})
|
|
|
|
gistsCmds
|
|
.command('view')
|
|
.description("View gists at BRAVO68WEB API's Gists Store")
|
|
.argument('[id]', 'id of gist')
|
|
.action((id) => {
|
|
if (!id) {
|
|
console.log('Please provide an id')
|
|
return
|
|
}
|
|
gists.view(id)
|
|
})
|
|
|
|
program
|
|
.command('config')
|
|
.description('Configure the CLI')
|
|
.action(() => {
|
|
console.log('Configure the CLI')
|
|
config.configure()
|
|
})
|
|
|
|
program
|
|
.command('upload')
|
|
.description("Upload files to BRAVO68WEB API's File Store")
|
|
.argument('<file>', 'file to upload')
|
|
.action((file) => {
|
|
if (!file) {
|
|
console.log('Please provide a file')
|
|
return
|
|
}
|
|
upload.upload(file)
|
|
})
|
|
|
|
program.parse()
|