import {mkdir, writeFile} from 'fs/promises'; import {parse} from 'ts-command-line-args'; import {FloraCloud} from "../Cloud"; interface Options { verbose: boolean; help: boolean; api: string; email: string; password: string; } const args = parse( { email: {type: String, alias: 'e', description: 'your email'}, password: {type: String, alias: 'p', description: 'your password'}, verbose: {type: Boolean, alias: 'v'}, api: {type: String, defaultValue: 'https://api.florafi.net', description: 'API URL (default: https://api.florafi.net)'}, help: {type: Boolean, alias: 'h'}, }, { helpArg: 'help', headerContentSections: [ {header: 'Flora-fi Cloud Login', content: 'Sign-in using your cloud account'}, ] }, ); // console.log("args", args) const cloud = new FloraCloud() cloud.apiUrl = args.api main() .then(() => process.exit(0)) .catch(e => console.log(e)) async function main(): Promise { const {email, password} = args const tokens = await cloud.signIn({email, password, remember: true}) // save refresh token const homedir = require('os').homedir(); await mkdir(`${homedir}/.florafi`, {recursive: true}) await writeFile(`${homedir}/.florafi/token`, tokens.refreshToken ?? '') const user = await cloud.whoAmI() console.log(`Logged in as ${user.email}`) console.log("Saved token for future access.", `(${homedir}/.florafi/token)`) }