70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import * as ChildProcess from "child_process";
|
|
import * as FileSystem from "fs";
|
|
import * as Path from "path";
|
|
|
|
// Set up input and output directories
|
|
|
|
const inputDirectoryPath = Path.join(__dirname, "../api-interfaces");
|
|
const outputDirectoryPath = Path.join(__dirname, "../src/Proto/Generated");
|
|
|
|
// Remove and recreate the output directory
|
|
|
|
FileSystem.existsSync(outputDirectoryPath) &&
|
|
FileSystem.rmSync(outputDirectoryPath, { recursive: true });
|
|
|
|
FileSystem.mkdirSync(outputDirectoryPath);
|
|
|
|
// Set up proto directories
|
|
|
|
const protoDirPath = `${inputDirectoryPath}/src/proto` as const;
|
|
const tensorProtoDirPath =
|
|
`${inputDirectoryPath}/src/tensorizer/proto` as const;
|
|
|
|
// Clone latest tensorizer git repository
|
|
|
|
const tensorizerGitPath = `${inputDirectoryPath}/src/tensorizer`;
|
|
|
|
// Clone and force update the api-interfaces Git repository
|
|
|
|
!FileSystem.existsSync(inputDirectoryPath) &&
|
|
ChildProcess.execSync(
|
|
`git clone https://github.com/Stability-AI/api-interfaces.git ${inputDirectoryPath}`
|
|
);
|
|
|
|
ChildProcess.execSync("git reset --hard origin/main", {
|
|
cwd: inputDirectoryPath,
|
|
});
|
|
|
|
// Clone and force update the tensorizer Git repository
|
|
|
|
!FileSystem.existsSync(`${tensorizerGitPath}/.git`) &&
|
|
ChildProcess.execSync(
|
|
`git clone https://github.com/coreweave/tensorizer.git ${tensorizerGitPath}`
|
|
);
|
|
|
|
ChildProcess.execSync("git reset --hard origin/main", {
|
|
cwd: tensorizerGitPath,
|
|
});
|
|
|
|
// Copy tensors.proto from tensorizer to api-interfaces proto directory
|
|
|
|
FileSystem.copyFileSync(
|
|
`${tensorProtoDirPath}/tensors.proto`,
|
|
`${protoDirPath}/tensors.proto`
|
|
);
|
|
|
|
// Get all the proto paths and source files
|
|
|
|
const protoPaths = [
|
|
protoDirPath,
|
|
...FileSystem.readdirSync(protoDirPath)
|
|
.filter((file) => file.endsWith(".proto"))
|
|
.map((file) => Path.join(protoDirPath, file)),
|
|
].join(" ");
|
|
|
|
// Generate TypeScript files from the final list of proto files
|
|
|
|
ChildProcess.execSync(
|
|
`npx protoc --ts_out ${outputDirectoryPath} --proto_path ${protoPaths}`
|
|
);
|