Skip to content

Commit c10fb46

Browse files
committed
initialize workspaces with additional file content
Introduces an AdditionalContentContext and the corresponding Initializer.
1 parent 4850f7c commit c10fb46

31 files changed

+4093
-255
lines changed

components/content-service-api/go/initializer.pb.go

+417-140
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/content-service-api/initializer.proto

+26
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,35 @@ message WorkspaceInitializer {
1111
GitInitializer git = 2;
1212
SnapshotInitializer snapshot = 3;
1313
PrebuildInitializer prebuild = 4;
14+
CompositeInitializer composite = 5;
15+
FileDownloadInitializer download = 6;
1416
}
1517
}
1618

19+
// CompositeInitializer uses a collection of initializer to produce workspace content.
20+
// All initializer are executed in the order they're provided.
21+
message CompositeInitializer {
22+
repeated WorkspaceInitializer initializer = 1;
23+
}
24+
25+
// FileDownloadInitializer downloads files and uses them as workspace content.
26+
message FileDownloadInitializer {
27+
message FileInfo {
28+
string url = 1;
29+
// file_path is relative to the target_location, e.g. if target_location is in `/workspace/myrepo`
30+
// a file_path of `foobar/file` would produce a file in `/workspace/myrepo/foobar/file`.
31+
// file_path must include the filename. The FileDownloadInitializer will create any parent directories
32+
// necessary to place the file.
33+
string file_path = 2;
34+
// digest is a hash of the file content in the OCI digest format (see https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests).
35+
// This information is used to compute subsequent
36+
// content versions, and to validate the file content was downloaded correctly.
37+
string digest = 3;
38+
}
39+
repeated FileInfo files = 1;
40+
string target_location = 2;
41+
}
42+
1743
message EmptyInitializer { }
1844

1945
message GitInitializer {

components/content-service-api/typescript/src/initializer_pb.d.ts

+89
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ export class WorkspaceInitializer extends jspb.Message {
3434
getPrebuild(): PrebuildInitializer | undefined;
3535
setPrebuild(value?: PrebuildInitializer): WorkspaceInitializer;
3636

37+
hasComposite(): boolean;
38+
clearComposite(): void;
39+
getComposite(): CompositeInitializer | undefined;
40+
setComposite(value?: CompositeInitializer): WorkspaceInitializer;
41+
42+
hasDownload(): boolean;
43+
clearDownload(): void;
44+
getDownload(): FileDownloadInitializer | undefined;
45+
setDownload(value?: FileDownloadInitializer): WorkspaceInitializer;
46+
3747
getSpecCase(): WorkspaceInitializer.SpecCase;
3848

3949
serializeBinary(): Uint8Array;
@@ -52,6 +62,8 @@ export namespace WorkspaceInitializer {
5262
git?: GitInitializer.AsObject,
5363
snapshot?: SnapshotInitializer.AsObject,
5464
prebuild?: PrebuildInitializer.AsObject,
65+
composite?: CompositeInitializer.AsObject,
66+
download?: FileDownloadInitializer.AsObject,
5567
}
5668

5769
export enum SpecCase {
@@ -60,6 +72,83 @@ export namespace WorkspaceInitializer {
6072
GIT = 2,
6173
SNAPSHOT = 3,
6274
PREBUILD = 4,
75+
COMPOSITE = 5,
76+
DOWNLOAD = 6,
77+
}
78+
79+
}
80+
81+
export class CompositeInitializer extends jspb.Message {
82+
clearInitializerList(): void;
83+
getInitializerList(): Array<WorkspaceInitializer>;
84+
setInitializerList(value: Array<WorkspaceInitializer>): CompositeInitializer;
85+
addInitializer(value?: WorkspaceInitializer, index?: number): WorkspaceInitializer;
86+
87+
serializeBinary(): Uint8Array;
88+
toObject(includeInstance?: boolean): CompositeInitializer.AsObject;
89+
static toObject(includeInstance: boolean, msg: CompositeInitializer): CompositeInitializer.AsObject;
90+
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
91+
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
92+
static serializeBinaryToWriter(message: CompositeInitializer, writer: jspb.BinaryWriter): void;
93+
static deserializeBinary(bytes: Uint8Array): CompositeInitializer;
94+
static deserializeBinaryFromReader(message: CompositeInitializer, reader: jspb.BinaryReader): CompositeInitializer;
95+
}
96+
97+
export namespace CompositeInitializer {
98+
export type AsObject = {
99+
initializerList: Array<WorkspaceInitializer.AsObject>,
100+
}
101+
}
102+
103+
export class FileDownloadInitializer extends jspb.Message {
104+
clearFilesList(): void;
105+
getFilesList(): Array<FileDownloadInitializer.FileInfo>;
106+
setFilesList(value: Array<FileDownloadInitializer.FileInfo>): FileDownloadInitializer;
107+
addFiles(value?: FileDownloadInitializer.FileInfo, index?: number): FileDownloadInitializer.FileInfo;
108+
getTargetLocation(): string;
109+
setTargetLocation(value: string): FileDownloadInitializer;
110+
111+
serializeBinary(): Uint8Array;
112+
toObject(includeInstance?: boolean): FileDownloadInitializer.AsObject;
113+
static toObject(includeInstance: boolean, msg: FileDownloadInitializer): FileDownloadInitializer.AsObject;
114+
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
115+
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
116+
static serializeBinaryToWriter(message: FileDownloadInitializer, writer: jspb.BinaryWriter): void;
117+
static deserializeBinary(bytes: Uint8Array): FileDownloadInitializer;
118+
static deserializeBinaryFromReader(message: FileDownloadInitializer, reader: jspb.BinaryReader): FileDownloadInitializer;
119+
}
120+
121+
export namespace FileDownloadInitializer {
122+
export type AsObject = {
123+
filesList: Array<FileDownloadInitializer.FileInfo.AsObject>,
124+
targetLocation: string,
125+
}
126+
127+
128+
export class FileInfo extends jspb.Message {
129+
getUrl(): string;
130+
setUrl(value: string): FileInfo;
131+
getFilePath(): string;
132+
setFilePath(value: string): FileInfo;
133+
getDigest(): string;
134+
setDigest(value: string): FileInfo;
135+
136+
serializeBinary(): Uint8Array;
137+
toObject(includeInstance?: boolean): FileInfo.AsObject;
138+
static toObject(includeInstance: boolean, msg: FileInfo): FileInfo.AsObject;
139+
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
140+
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
141+
static serializeBinaryToWriter(message: FileInfo, writer: jspb.BinaryWriter): void;
142+
static deserializeBinary(bytes: Uint8Array): FileInfo;
143+
static deserializeBinaryFromReader(message: FileInfo, reader: jspb.BinaryReader): FileInfo;
144+
}
145+
146+
export namespace FileInfo {
147+
export type AsObject = {
148+
url: string,
149+
filePath: string,
150+
digest: string,
151+
}
63152
}
64153

65154
}

0 commit comments

Comments
 (0)