@omnysecurity/cognite-codegen-cli
Version:
Command-line interface for Cognite Data Fusion TypeScript code generation
94 lines (92 loc) • 2.71 kB
JavaScript
import { writeFile } from 'fs/promises';
import { CogniteClient } from '@cognite/sdk';
import { generate } from '@omnysecurity/cognite-codegen';
import meow from 'meow';
export const main = async (options) => {
const client = new CogniteClient({
appId: '@omnysec/cognite-codegen',
project: options.project,
baseUrl: options.cluster,
oidcTokenProvider: () => Promise.resolve(options.token),
});
const dataModel = await client.dataModels
.retrieve([
{
externalId: options.model,
space: options.space,
version: options.version,
},
])
.then((res) => res.items.at(0));
if (!dataModel)
throw new Error('Data model not found');
const viewIds = dataModel.views?.map((x) => ({
space: x.space,
externalId: x.externalId,
version: x.version,
}));
if (!viewIds)
throw new Error('No views found for data model');
const views = await client.views.retrieve(viewIds);
views.items.sort((a, b) => a.externalId.localeCompare(b.externalId));
const output = generate({
dataModel,
views: views.items,
});
await writeFile(options.output ?? output.fileName, output.fileContent);
};
const cli = meow(`
Usage
$ node .
Options
--cluster, -c CDF Cluster (default: https://westeurope-1.cognitedata.com)
--project, -p CDF Project
--space, -s CDF Model Space
--model -m CDF Data model externalId
--version -v CDF Data model version
--output, -o Output file (default: schema.ts)
--token, -t CDF Access token
Examples
$ node . --model my-model --version 1_4 --output schema.ts
`, {
importMeta: import.meta, // This is required
flags: {
cluster: {
shortFlag: 'c',
type: 'string',
default: 'https://westeurope-1.cognitedata.com',
},
output: {
shortFlag: 'o',
type: 'string',
},
project: {
shortFlag: 'p',
type: 'string',
isRequired: true,
},
space: {
shortFlag: 's',
type: 'string',
isRequired: true,
},
model: {
type: 'string',
isRequired: true,
},
version: {
type: 'string',
isRequired: true,
},
token: {
type: 'string',
isRequired: true,
},
},
});
main(cli.flags)
.then((res) => console.log('Success', res))
.catch((err) => console.error(err))
.finally(() => console.info('fin.'));
//# sourceMappingURL=index.js.map