Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/platform/devcontainer/common/devContainerConfigurationService.ts
13400 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 type { CancellationToken, Uri } from 'vscode';
7
import { createServiceIdentifier } from '../../../util/common/services';
8
9
10
export interface DevContainerConfigGeneratorArguments {
11
rootUri: Uri;
12
index: DevContainerConfigIndex;
13
}
14
15
export interface DevContainerConfigIndex {
16
templates: DevContainerConfigTemplate[];
17
features?: DevContainerConfigFeature[];
18
}
19
20
export interface DevContainerConfigTemplate {
21
id: string;
22
name?: string;
23
description?: string;
24
}
25
26
export interface DevContainerConfigFeature {
27
id: string;
28
name?: string;
29
description?: string;
30
}
31
32
export type DevContainerConfigGeneratorResult = {
33
type: 'success';
34
template: string | undefined;
35
features: string[];
36
} | {
37
type: 'cancelled';
38
} | {
39
type: 'failure';
40
message: string;
41
};
42
43
export const IDevContainerConfigurationService = createServiceIdentifier<IDevContainerConfigurationService>('IDevContainerConfigurationService');
44
45
export interface IDevContainerConfigurationService {
46
readonly _serviceBrand: undefined;
47
generateConfiguration(args: DevContainerConfigGeneratorArguments, cancellationToken: CancellationToken): Promise<DevContainerConfigGeneratorResult>;
48
}
49
50
/**
51
* @remark For testing purposes only.
52
*/
53
export class FailingDevContainerConfigurationService implements IDevContainerConfigurationService {
54
readonly _serviceBrand: undefined;
55
generateConfiguration(_args: DevContainerConfigGeneratorArguments, _cancellationToken: CancellationToken): Promise<DevContainerConfigGeneratorResult> {
56
return Promise.resolve({ type: 'failure', message: 'For testing: not implemented' });
57
}
58
}
59
60