// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
// @ts-check
import { readFileSync, writeFileSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import qSharpSampleList from "../../../samples/samples.mjs";
import openQasmSampleList from "../../../samples/OpenQASM/samples.mjs";
const thisDir = dirname(fileURLToPath(import.meta.url));
const qSharpSampleDir = join(thisDir, "..", "..", "..", "samples");
const openQasmSampleDir = join(
thisDir,
"..",
"..",
"..",
"samples",
"OpenQASM",
);
const tsDir = join(thisDir, "src");
const qSharpGeneratedTsPath = join(tsDir, "samples.generated.ts");
const openQasmGeneratedTsPath = join(tsDir, "openqasm-samples.generated.ts");
embedSampleContentsInTsFile(
qSharpSampleList,
qSharpSampleDir,
qSharpGeneratedTsPath,
);
embedSampleContentsInTsFile(
openQasmSampleList,
openQasmSampleDir,
openQasmGeneratedTsPath,
);
/**
* @param {any[]} sampleList
* @param {string} sampleDir
* @param {import("fs").PathOrFileDescriptor} generatedTsFileName
*/
function embedSampleContentsInTsFile(
sampleList,
sampleDir,
generatedTsFileName,
) {
const result = sampleList.map((sample) => {
const samplePath = join(sampleDir, sample.file);
const sampleText = readFileSync(samplePath, "utf8");
return {
title: sample.title,
shots: sample.shots,
code: sampleText,
omitFromTests: sample.omitFromTests,
};
});
writeFileSync(
generatedTsFileName,
`export default ${JSON.stringify(result, undefined, 2)}`,
"utf-8",
);
}microsoft/qdk
Publicmirrored from https://github.com/microsoft/qdkAvailable
source/npm/qsharp/generate_samples_content.js
65lines · modepreview