in packages/vscode-extension-web-ide/src/initMergeRequestContext.ts [54:88]
path: joinPaths('/', repoRoot, x.path),
}))
);
};
const initMergeRequestFileDecorator = (
disposables: vscode.Disposable[],
mrChanges: Awaited<ReturnType<typeof getMergeRequestChanges>>,
) => {
const mrPathsSet = createSetOfAllPaths(mrChanges.map(x => x.path));
disposables.push(
vscode.window.registerFileDecorationProvider(
new MergeRequestFileDecorationProvider(mrPathsSet),
),
);
};
const initMergeRequestFileSystem = (
disposables: vscode.Disposable[],
{ mergeRequest, repoRoot }: InitMergeRequestOptions,
) => {
// what: Apply decorators to base GitLabFileContentProvider
const mrContentProvider = flow(
// why: Strip the repoRoot which is passed to the FileSystemProvider
x => new FileContentProviderWithRepoRoot(x, repoRoot),
// why: If we receive a 404, it probably means we are adding a new file, so just treat as empty
x => new FileContentProviderWith404AsEmpty(x),
)(new GitLabFileContentProvider(mergeRequest.baseSha));
disposables.push(
vscode.workspace.registerFileSystemProvider(
MR_SCHEME,
new GitLabReadonlyFileSystemProvider(mrContentProvider),
{