Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/prompt/vscode-node/devContainerConfigurationServiceImpl.ts
13399 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as vscode from 'vscode';
7
import { DevContainerConfigGeneratorArguments, DevContainerConfigGeneratorResult, IDevContainerConfigurationService } from '../../../platform/devcontainer/common/devContainerConfigurationService';
8
import { ISearchService } from '../../../platform/search/common/searchService';
9
import * as path from '../../../util/vs/base/common/path';
10
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
11
import { DevContainerConfigGenerator } from '../node/devContainerConfigGenerator';
12
13
export class DevContainerConfigurationServiceImpl implements IDevContainerConfigurationService {
14
15
declare readonly _serviceBrand: undefined;
16
17
constructor(
18
@IInstantiationService private readonly instantiationService: IInstantiationService,
19
@ISearchService private readonly searchService: ISearchService,
20
) { }
21
22
async generateConfiguration(args: DevContainerConfigGeneratorArguments, cancellationToken: vscode.CancellationToken): Promise<DevContainerConfigGeneratorResult> {
23
if (cancellationToken.isCancellationRequested) {
24
return { type: 'cancelled' };
25
}
26
27
const filenames = (await Promise.all(['*', '*/*', '*/*/*']
28
.map(pattern => this.searchService.findFilesWithDefaultExcludes(new vscode.RelativePattern(args.rootUri, pattern), 1000, cancellationToken))))
29
.flat()
30
.map(entry => path.posix.relative(args.rootUri.path, entry.path));
31
32
const generator = this.instantiationService.createInstance(DevContainerConfigGenerator);
33
return generator.generate(args.index, filenames, cancellationToken);
34
}
35
}
36
37