Add repository model and add steps to initialize it

[?]
Dec 24, 2020, 1:20 AM
B4SKYP3Y5R7UPPGLLZV7OK3SIN4TRAJ3IL6FS3T7ZFZF5HTEQARQC

Dependencies

  • [2] 4PN3R2LY Fix lint/style issues
  • [3] TKKT6D4C Add failure loop to installation selection
  • [4] WHFIIX4Y Improve documentation and add Pijul installation configuration
  • [5] WW67NYZV Configure eslint for JS standard formatting
  • [6] 3N3RS66T Create pijul output channel and configure activation events
  • [*] NCBEWRYE Initialize Repository

Change contents

  • file addition: repository.ts (-xw-x--x--)
    [8.104980]
    import { Disposable, OutputChannel, scm, SourceControl, SourceControlResourceGroup, Uri } from 'vscode';
    import { Repository as BaseRepository } from './pijul';
    import { dispose } from './utils/disposableUtils';
    export class Repository {
    private readonly sourceControl: SourceControl;
    private disposables: Disposable[] = [];
    private readonly unrecordedChangesGroup: SourceControlResourceGroup;
    private readonly untrackedGroup: SourceControlResourceGroup;
    constructor (
    private readonly repository: BaseRepository,
    private readonly outputChannel: OutputChannel
    ) {
    const root = Uri.file(repository.root);
    this.sourceControl = scm.createSourceControl('pijul', 'Pijul', root);
    // Add command to accept message in source control input box
    this.sourceControl.acceptInputCommand = { command: 'pijul.record', title: 'record', arguments: [this.sourceControl] };
    // TODO: Add quick diff provider
    // TODO: Add input validation
    this.disposables.push(this.sourceControl);
    // TODO: Set input box placeholder
    // TODO: Create resource groups
    this.unrecordedChangesGroup = this.sourceControl.createResourceGroup('unrecordedChanges', 'Unrecorded Changes');
    this.untrackedGroup = this.sourceControl.createResourceGroup('untracked', 'Untracked Changes');
    this.disposables.push(this.unrecordedChangesGroup);
    this.disposables.push(this.untrackedGroup);
    this.untrackedGroup.hideWhenEmpty = true;
    console.log('Created Repository');
    }
    /**
    * Dispose all of this repository's disposable resources
    */
    dispose (): void {
    this.disposables = dispose(this.disposables);
    }
    }
  • edit in src/extension.ts at line 4
    [2.71]
    [3.38]
    import { Pijul } from './pijul';
    import { Repository } from './repository';
  • replacement in src/extension.ts at line 14
    [3.224][2.164:186]()
    if (path == null) {
    [3.224]
    [3.225]
    if (!path) {
  • replacement in src/extension.ts at line 72
    [2.1494][2.1494:1545]()
    if (code != null || tokens[0] !== 'pijul') {
    [2.1494]
    [2.1545]
    if (code || tokens[0] !== 'pijul') {
  • replacement in src/extension.ts at line 89
    [2.1829][2.1829:1948]()
    await vscode.window.showInformationMessage('Pijul repository detected in workspace, extension has been activated.');
    [2.1829]
    [2.1948]
    vscode.window.showInformationMessage('Pijul repository detected in workspace, extension has been activated.');
  • replacement in src/extension.ts at line 121
    [2.2919][2.2919:2962]()
    // const pijul = new Pijul(pijulInfo);
    [2.2919]
    [3.1893]
    const pijul = new Pijul(pijulInfo);
    const root = vscode.workspace.workspaceFolders?.[0]?.uri?.path ?? '';
    const repository = new Repository(pijul.open(root, root + '.pijul'), outputChannel);
    console.log(repository);