1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 00:03:56 +00:00

main and program are classes

This commit is contained in:
Kyle Spearrin
2018-05-14 11:15:54 -04:00
parent ad2fa7efbb
commit 7f0f4a11f8
7 changed files with 210 additions and 74 deletions

View File

@@ -1,4 +1,3 @@
import * as program from 'commander';
import { AuthService } from 'jslib/services/auth.service';
@@ -15,80 +14,90 @@ import { EnvironmentService } from 'jslib/services/environment.service';
import { UserService } from 'jslib/services/user.service';
import { ContainerService } from 'jslib/services/container.service';
import { NodeMessagingService } from './services/nodeMessaging.service';
import { SyncCommand } from './commands/sync.command';
import { SyncService } from 'jslib/services/sync.service';
import { SettingsService } from 'jslib/services/settings.service';
import { CipherService } from 'jslib/services/cipher.service';
import { FolderService } from 'jslib/services/folder.service';
import { CollectionService } from 'jslib/services/collection.service';
import { LockService } from 'jslib/services/lock.service';
import { I18nService } from './services/i18n.service';
import { ConstantsService } from 'jslib/services/constants.service';
import { PasswordGenerationService } from 'jslib/services/passwordGeneration.service';
import { TotpService } from 'jslib/services/totp.service';
import { AuditService } from 'jslib/services/audit.service';
const platformUtilsService = new NodePlatformUtilsService();
const cryptoFunctionService = new NodeCryptoFunctionService();
const storageService = new NodeStorageService('Bitwarden CLI');
const cryptoService = new CryptoService(storageService, storageService, cryptoFunctionService);
const appIdService = new AppIdService(storageService);
const tokenService = new TokenService(storageService);
const messagingService = new NodeMessagingService();
const apiService = new ApiService(tokenService, platformUtilsService, (expired: boolean) => { });
const environmentService = new EnvironmentService(apiService, storageService);
const userService = new UserService(tokenService, storageService);
const containerService = new ContainerService(cryptoService, platformUtilsService);
const authService = new AuthService(cryptoService, apiService, userService, tokenService, appIdService,
null, platformUtilsService, messagingService, true);
import { Program } from './program';
containerService.attachToWindow(global);
environmentService.setUrlsFromStorage().then(() => {
// Do nothing
});
export class Main {
messagingService: NodeMessagingService;
storageService: NodeStorageService;
secureStorageService: NodeStorageService;
i18nService: I18nService;
platformUtilsService: NodePlatformUtilsService;
constantsService: ConstantsService;
cryptoService: CryptoService;
tokenService: TokenService;
appIdService: AppIdService;
apiService: ApiService;
environmentService: EnvironmentService;
userService: UserService;
settingsService: SettingsService;
cipherService: CipherService;
folderService: FolderService;
collectionService: CollectionService;
lockService: LockService;
syncService: SyncService;
passwordGenerationService: PasswordGenerationService;
totpService: TotpService;
containerService: ContainerService;
auditService: AuditService;
cryptoFunctionService: NodeCryptoFunctionService;
authService: AuthService;
program
.version('1.0.0', '-v, --version');
program: Program;
program
.command('login <email> <password>')
.description('Log into a Bitwarden user account.')
.option('-m, --method <method>', '2FA method.')
.option('-c, --code <code>', '2FA code.')
.action(async (email: string, password: string, cmd: program.Command) => {
const command = new LoginCommand(authService);
await command.run(email, password, cmd);
});
constructor() {
this.i18nService = new I18nService('en', '../locales');
this.platformUtilsService = new NodePlatformUtilsService();
this.cryptoFunctionService = new NodeCryptoFunctionService();
this.storageService = new NodeStorageService('Bitwarden CLI');
this.cryptoService = new CryptoService(this.storageService, this.storageService, this.cryptoFunctionService);
this.appIdService = new AppIdService(this.storageService);
this.tokenService = new TokenService(this.storageService);
this.messagingService = new NodeMessagingService();
this.apiService = new ApiService(this.tokenService, this.platformUtilsService, (expired: boolean) => { });
this.environmentService = new EnvironmentService(this.apiService, this.storageService);
this.userService = new UserService(this.tokenService, this.storageService);
this.containerService = new ContainerService(this.cryptoService, this.platformUtilsService);
this.settingsService = new SettingsService(this.userService, this.storageService);
this.cipherService = new CipherService(this.cryptoService, this.userService, this.settingsService,
this.apiService, this.storageService, this.i18nService, this.platformUtilsService);
this.folderService = new FolderService(this.cryptoService, this.userService,
() => 'No Folder', this.apiService, this.storageService, this.i18nService);
this.collectionService = new CollectionService(this.cryptoService, this.userService, this.storageService,
this.i18nService);
this.lockService = new LockService(this.cipherService, this.folderService, this.collectionService,
this.cryptoService, this.platformUtilsService, this.storageService, this.messagingService,
() => { /* do nothing */ });
this.syncService = new SyncService(this.userService, this.apiService, this.settingsService,
this.folderService, this.cipherService, this.cryptoService, this.collectionService,
this.storageService, this.messagingService, (expired: boolean) => { });
this.authService = new AuthService(this.cryptoService, this.apiService, this.userService, this.tokenService,
this.appIdService, this.i18nService, this.platformUtilsService, this.messagingService, true);
this.program = new Program(this);
}
program
.command('logout')
.description('Log out of the current Bitwarden user account.')
.action((cmd) => {
console.log('Logging out...');
});
private async init() {
this.containerService.attachToWindow(global);
await this.environmentService.setUrlsFromStorage();
const locale = await this.storageService.get<string>(ConstantsService.localeKey);
await this.i18nService.init(locale);
await this.authService.init();
}
program
.command('list <object>')
.description('List objects.')
.action((object, cmd) => {
console.log('Listing...');
console.log(object);
});
program
.command('get <object> <id>')
.description('Get an object.')
.action((object, id, cmd) => {
console.log('Getting...');
console.log(object);
console.log(id);
});
program
.command('edit <object> <id>')
.description('Edit an object.')
.action((object, id, cmd) => {
console.log('Editing...');
console.log(object);
console.log(id);
});
program
.command('delete <object> <id>')
.description('Delete an object.')
.action((object, id, cmd) => {
console.log('Deleting...');
console.log(object);
console.log(id);
});
program
.parse(process.argv);
async run() {
await this.init();
this.program.run();
}
}