Skip to content

Commit

Permalink
feat: generate exports for all entities in cloud api
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivan Zuev committed Dec 24, 2021
1 parent 438f7c6 commit 5136bb5
Show file tree
Hide file tree
Showing 39 changed files with 646 additions and 450 deletions.
46 changes: 24 additions & 22 deletions scripts/generate-code.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ for (const projectDir of projectsDirs) {
logger.debug(`Processing project directory ${projectDir}`);

const projectName = path.basename(projectDir);
const servicesModules = fg
.sync('**/*_service.ts', { cwd: projectDir, absolute: true })
const projectModules = fg
.sync('**/*.ts', { cwd: projectDir, absolute: true })
// Exclude alpha versions
.filter((serviceModule) => !/v\d+alpha/.test(serviceModule));

logger.debug(`Found ${servicesModules.length} service modules`, servicesModules);
logger.debug(`Found ${projectModules.length} modules`, projectModules);

if (servicesModules.length > 0) {
if (projectModules.length > 0) {
logger.debug('Generating export statements');

const indexModulePath = path.join(projectDir, 'index.ts');
Expand All @@ -71,30 +71,32 @@ for (const projectDir of projectsDirs) {
services: [],
};

const exportStatements = servicesModules.map((serviceModulePath) => {
const relativePath = path.relative(projectDir, serviceModulePath);
const exportStatements = projectModules.map((modulePath) => {
const relativePath = path.relative(projectDir, modulePath);
const relativePathSegments = relativePath.split(path.sep);
const firstSegment = relativePathSegments[0];
const serviceModuleName = path.basename(serviceModulePath);
const suffix = serviceModuleName.replace('_service.ts', '');
const firstPathSegment = relativePathSegments[0];
const moduleName = path.basename(modulePath).replace('.ts', '');
const serviceName = moduleName.replace('_service', '');
// Do not use 'vX' as prefixes
const usePathSegmentAsPrefix = relativePathSegments.length > 1
&& firstSegment.length > 2
&& firstSegment !== suffix;
const serviceAlias = [
usePathSegmentAsPrefix ? firstSegment : undefined,
suffix,
&& firstPathSegment.length > 2
&& firstPathSegment !== serviceName;
const moduleAlias = [
usePathSegmentAsPrefix ? firstPathSegment : undefined,
moduleName,
].filter(Boolean).join('_');

const { ext } = path.parse(serviceModulePath);
const serviceModuleWithoutExt = relativePath.replace(ext, '');
const { ext } = path.parse(modulePath);
const moduleWithoutExt = relativePath.replace(ext, '');

projectsMeta[indexModulePath].services.push({
name: suffix,
exportAlias: serviceAlias,
});
if (moduleWithoutExt.endsWith('_service')) {
projectsMeta[indexModulePath].services.push({
name: moduleName,
exportAlias: moduleAlias,
});
}

return `export * as ${serviceAlias} from './${serviceModuleWithoutExt}'`;
return `export * as ${moduleAlias} from './${moduleWithoutExt}'`;
});

const indexModuleContent = exportStatements.join('\n');
Expand Down Expand Up @@ -129,7 +131,7 @@ for (const [indexModulePath, projectMeta] of Object.entries(projectsMeta)) {
`export const ${serviceConfig.exportClassName || serviceConfig.importClassName} = cloudApi.${projectMeta.name}.${serviceMeta.exportAlias}.${serviceConfig.importClassName};`,
);
} else {
logger.warn(`There is no configuration for service ${serviceMeta.name} in project ${projectMeta.name}`);
logger.warn(`There is no configuration for service ${serviceMeta.exportAlias} in project ${projectMeta.name}`);
}
}
}
Expand Down
282 changes: 141 additions & 141 deletions scripts/services.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/generated/yandex/cloud/access/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * as access from './access'
15 changes: 11 additions & 4 deletions src/generated/yandex/cloud/ai/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
export * as stt from './stt/v2/stt_service'
export * as translate_translation from './translate/v2/translation_service'
export * as tts from './tts/v3/tts_service'
export * as vision from './vision/v1/vision_service'
export * as stt_service from './stt/v2/stt_service'
export * as translate_translation from './translate/v2/translation'
export * as translate_translation_service from './translate/v2/translation_service'
export * as tts from './tts/v3/tts'
export * as tts_service from './tts/v3/tts_service'
export * as vision_classification from './vision/v1/classification'
export * as vision_face_detection from './vision/v1/face_detection'
export * as vision_image_copy_search from './vision/v1/image_copy_search'
export * as vision_primitives from './vision/v1/primitives'
export * as vision_text_detection from './vision/v1/text_detection'
export * as vision_service from './vision/v1/vision_service'
1 change: 1 addition & 0 deletions src/generated/yandex/cloud/api/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * as operation from './operation'
17 changes: 12 additions & 5 deletions src/generated/yandex/cloud/apploadbalancer/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
export * as backend_group from './v1/backend_group_service'
export * as http_router from './v1/http_router_service'
export * as load_balancer from './v1/load_balancer_service'
export * as target_group from './v1/target_group_service'
export * as virtual_host from './v1/virtual_host_service'
export * as backend_group from './v1/backend_group'
export * as backend_group_service from './v1/backend_group_service'
export * as http_router from './v1/http_router'
export * as http_router_service from './v1/http_router_service'
export * as load_balancer from './v1/load_balancer'
export * as load_balancer_service from './v1/load_balancer_service'
export * as payload from './v1/payload'
export * as target_group from './v1/target_group'
export * as target_group_service from './v1/target_group_service'
export * as tls from './v1/tls'
export * as virtual_host from './v1/virtual_host'
export * as virtual_host_service from './v1/virtual_host_service'
16 changes: 11 additions & 5 deletions src/generated/yandex/cloud/billing/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
export * as billing_account from './v1/billing_account_service'
export * as budget from './v1/budget_service'
export * as customer from './v1/customer_service'
export * as service from './v1/service_service'
export * as sku from './v1/sku_service'
export * as billable_object from './v1/billable_object'
export * as billing_account from './v1/billing_account'
export * as billing_account_service from './v1/billing_account_service'
export * as budget from './v1/budget'
export * as budget_service from './v1/budget_service'
export * as customer from './v1/customer'
export * as customer_service from './v1/customer_service'
export * as service from './v1/service'
export * as service_service from './v1/service_service'
export * as sku from './v1/sku'
export * as sku_service from './v1/sku_service'
13 changes: 8 additions & 5 deletions src/generated/yandex/cloud/cdn/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
export * as cache from './v1/cache_service'
export * as origin_group from './v1/origin_group_service'
export * as origin from './v1/origin_service'
export * as provider from './v1/provider_service'
export * as resource from './v1/resource_service'
export * as cache_service from './v1/cache_service'
export * as origin from './v1/origin'
export * as origin_group from './v1/origin_group'
export * as origin_group_service from './v1/origin_group_service'
export * as origin_service from './v1/origin_service'
export * as provider_service from './v1/provider_service'
export * as resource from './v1/resource'
export * as resource_service from './v1/resource_service'
5 changes: 3 additions & 2 deletions src/generated/yandex/cloud/certificatemanager/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * as certificate_content from './v1/certificate_content_service'
export * as certificate from './v1/certificate_service'
export * as certificate from './v1/certificate'
export * as certificate_content_service from './v1/certificate_content_service'
export * as certificate_service from './v1/certificate_service'
36 changes: 24 additions & 12 deletions src/generated/yandex/cloud/compute/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
export * as disk_placement_group from './v1/disk_placement_group_service'
export * as disk from './v1/disk_service'
export * as disk_type from './v1/disk_type_service'
export * as filesystem from './v1/filesystem_service'
export * as host_group from './v1/host_group_service'
export * as host_type from './v1/host_type_service'
export * as image from './v1/image_service'
export * as instance from './v1/instance_service'
export * as placement_group from './v1/placement_group_service'
export * as snapshot from './v1/snapshot_service'
export * as zone from './v1/zone_service'
export * as instance_group from './v1/instancegroup/instance_group_service'
export * as disk from './v1/disk'
export * as disk_placement_group from './v1/disk_placement_group'
export * as disk_placement_group_service from './v1/disk_placement_group_service'
export * as disk_service from './v1/disk_service'
export * as disk_type from './v1/disk_type'
export * as disk_type_service from './v1/disk_type_service'
export * as filesystem from './v1/filesystem'
export * as filesystem_service from './v1/filesystem_service'
export * as host_group from './v1/host_group'
export * as host_group_service from './v1/host_group_service'
export * as host_type from './v1/host_type'
export * as host_type_service from './v1/host_type_service'
export * as image from './v1/image'
export * as image_service from './v1/image_service'
export * as instance from './v1/instance'
export * as instance_service from './v1/instance_service'
export * as placement_group from './v1/placement_group'
export * as placement_group_service from './v1/placement_group_service'
export * as snapshot from './v1/snapshot'
export * as snapshot_service from './v1/snapshot_service'
export * as zone from './v1/zone'
export * as zone_service from './v1/zone_service'
export * as instance_group from './v1/instancegroup/instance_group'
export * as instance_group_service from './v1/instancegroup/instance_group_service'
17 changes: 12 additions & 5 deletions src/generated/yandex/cloud/containerregistry/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
export * as image from './v1/image_service'
export * as lifecycle_policy from './v1/lifecycle_policy_service'
export * as registry from './v1/registry_service'
export * as repository from './v1/repository_service'
export * as scanner from './v1/scanner_service'
export * as blob from './v1/blob'
export * as image from './v1/image'
export * as image_service from './v1/image_service'
export * as ip_permission from './v1/ip_permission'
export * as lifecycle_policy from './v1/lifecycle_policy'
export * as lifecycle_policy_service from './v1/lifecycle_policy_service'
export * as registry from './v1/registry'
export * as registry_service from './v1/registry_service'
export * as repository from './v1/repository'
export * as repository_service from './v1/repository_service'
export * as scanner from './v1/scanner'
export * as scanner_service from './v1/scanner_service'
18 changes: 12 additions & 6 deletions src/generated/yandex/cloud/dataproc/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
export * as cluster from './v1/cluster_service'
export * as job from './v1/job_service'
export * as resource_preset from './v1/resource_preset_service'
export * as subcluster from './v1/subcluster_service'
export * as manager_job from './manager/v1/job_service'
export * as manager from './manager/v1/manager_service'
export * as cluster from './v1/cluster'
export * as cluster_service from './v1/cluster_service'
export * as common from './v1/common'
export * as job from './v1/job'
export * as job_service from './v1/job_service'
export * as resource_preset from './v1/resource_preset'
export * as resource_preset_service from './v1/resource_preset_service'
export * as subcluster from './v1/subcluster'
export * as subcluster_service from './v1/subcluster_service'
export * as manager_job from './manager/v1/job'
export * as manager_job_service from './manager/v1/job_service'
export * as manager_service from './manager/v1/manager_service'
11 changes: 6 additions & 5 deletions src/generated/yandex/cloud/datasphere/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export * as app_token from './v1/app_token_service'
export * as folder_budget from './v1/folder_budget_service'
export * as node from './v1/node_service'
export * as project_data from './v1/project_data_service'
export * as project from './v1/project_service'
export * as app_token_service from './v1/app_token_service'
export * as folder_budget_service from './v1/folder_budget_service'
export * as node_service from './v1/node_service'
export * as project from './v1/project'
export * as project_data_service from './v1/project_data_service'
export * as project_service from './v1/project_service'
9 changes: 7 additions & 2 deletions src/generated/yandex/cloud/datatransfer/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
export * as endpoint from './v1/endpoint_service'
export * as transfer from './v1/transfer_service'
export * as endpoint from './v1/endpoint'
export * as endpoint_service from './v1/endpoint_service'
export * as transfer from './v1/transfer'
export * as transfer_service from './v1/transfer_service'
export * as common from './v1/endpoint/common'
export * as mysql from './v1/endpoint/mysql'
export * as postgres from './v1/endpoint/postgres'
3 changes: 2 additions & 1 deletion src/generated/yandex/cloud/dns/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * as dns_zone from './v1/dns_zone_service'
export * as dns_zone from './v1/dns_zone'
export * as dns_zone_service from './v1/dns_zone_service'
3 changes: 2 additions & 1 deletion src/generated/yandex/cloud/endpoint/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * as api_endpoint from './api_endpoint_service'
export * as api_endpoint from './api_endpoint'
export * as api_endpoint_service from './api_endpoint_service'
22 changes: 14 additions & 8 deletions src/generated/yandex/cloud/iam/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
export * as api_key from './v1/api_key_service'
export * as iam_token from './v1/iam_token_service'
export * as key from './v1/key_service'
export * as role from './v1/role_service'
export * as service_account from './v1/service_account_service'
export * as user_account from './v1/user_account_service'
export * as yandex_passport_user_account from './v1/yandex_passport_user_account_service'
export * as access_key from './v1/awscompatibility/access_key_service'
export * as api_key from './v1/api_key'
export * as api_key_service from './v1/api_key_service'
export * as iam_token_service from './v1/iam_token_service'
export * as key from './v1/key'
export * as key_service from './v1/key_service'
export * as role from './v1/role'
export * as role_service from './v1/role_service'
export * as service_account from './v1/service_account'
export * as service_account_service from './v1/service_account_service'
export * as user_account from './v1/user_account'
export * as user_account_service from './v1/user_account_service'
export * as yandex_passport_user_account_service from './v1/yandex_passport_user_account_service'
export * as access_key from './v1/awscompatibility/access_key'
export * as access_key_service from './v1/awscompatibility/access_key_service'
5 changes: 5 additions & 0 deletions src/generated/yandex/cloud/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export * as access from './access/'
export * as ai from './ai/'
export * as api from './api/'
export * as apploadbalancer from './apploadbalancer/'
export * as billing from './billing/'
export * as cdn from './cdn/'
Expand All @@ -19,8 +21,11 @@ export * as lockbox from './lockbox/'
export * as logging from './logging/'
export * as marketplace from './marketplace/'
export * as mdb from './mdb/'
export * as oauth from './oauth/'
export * as operation from './operation/'
export * as organizationmanager from './organizationmanager/'
export * as quota from './quota/'
export * as reference from './reference/'
export * as resourcemanager from './resourcemanager/'
export * as serverless from './serverless/'
export * as vpc from './vpc/'
Expand Down
10 changes: 6 additions & 4 deletions src/generated/yandex/cloud/iot/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export * as devices_device_data from './devices/v1/device_data_service'
export * as devices_device from './devices/v1/device_service'
export * as devices_registry_data from './devices/v1/registry_data_service'
export * as devices_registry from './devices/v1/registry_service'
export * as devices_device from './devices/v1/device'
export * as devices_device_data_service from './devices/v1/device_data_service'
export * as devices_device_service from './devices/v1/device_service'
export * as devices_registry from './devices/v1/registry'
export * as devices_registry_data_service from './devices/v1/registry_data_service'
export * as devices_registry_service from './devices/v1/registry_service'
11 changes: 8 additions & 3 deletions src/generated/yandex/cloud/k8s/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
export * as cluster from './v1/cluster_service'
export * as node_group from './v1/node_group_service'
export * as version from './v1/version_service'
export * as cluster from './v1/cluster'
export * as cluster_service from './v1/cluster_service'
export * as maintenance from './v1/maintenance'
export * as node from './v1/node'
export * as node_group from './v1/node_group'
export * as node_group_service from './v1/node_group_service'
export * as version from './v1/version'
export * as version_service from './v1/version_service'
5 changes: 3 additions & 2 deletions src/generated/yandex/cloud/kms/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * as symmetric_crypto from './v1/symmetric_crypto_service'
export * as symmetric_key from './v1/symmetric_key_service'
export * as symmetric_crypto_service from './v1/symmetric_crypto_service'
export * as symmetric_key from './v1/symmetric_key'
export * as symmetric_key_service from './v1/symmetric_key_service'
7 changes: 5 additions & 2 deletions src/generated/yandex/cloud/loadbalancer/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
export * as network_load_balancer from './v1/network_load_balancer_service'
export * as target_group from './v1/target_group_service'
export * as health_check from './v1/health_check'
export * as network_load_balancer from './v1/network_load_balancer'
export * as network_load_balancer_service from './v1/network_load_balancer_service'
export * as target_group from './v1/target_group'
export * as target_group_service from './v1/target_group_service'
6 changes: 4 additions & 2 deletions src/generated/yandex/cloud/lockbox/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
export * as payload from './v1/payload_service'
export * as secret from './v1/secret_service'
export * as payload from './v1/payload'
export * as payload_service from './v1/payload_service'
export * as secret from './v1/secret'
export * as secret_service from './v1/secret_service'
9 changes: 6 additions & 3 deletions src/generated/yandex/cloud/logging/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
export * as log_group from './v1/log_group_service'
export * as log_ingestion from './v1/log_ingestion_service'
export * as log_reading from './v1/log_reading_service'
export * as log_entry from './v1/log_entry'
export * as log_group from './v1/log_group'
export * as log_group_service from './v1/log_group_service'
export * as log_ingestion_service from './v1/log_ingestion_service'
export * as log_reading_service from './v1/log_reading_service'
export * as log_resource from './v1/log_resource'
3 changes: 2 additions & 1 deletion src/generated/yandex/cloud/marketplace/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * as image_product_usage from './v1/metering/image_product_usage_service'
export * as image_product_usage_service from './v1/metering/image_product_usage_service'
export * as usage_record from './v1/metering/usage_record'
Loading

0 comments on commit 5136bb5

Please sign in to comment.