1+ #! /usr/bin/env bash
2+ set -euo pipefail # ✅ Exit on error, unset vars, and pipefail
3+
4+ # ANSI color codes
5+ GREEN=" \033[0;32m"
6+ RED=" \033[0;31m"
7+ YELLOW=" \033[0;33m"
8+ CYAN=" \033[0;36m"
9+ NC=" \033[0m"
10+
11+ merged_construct=" merged-openapi.yml"
12+ v1beta1=" schemas/constructs/v1beta1"
13+ v1alpha1=" schemas/constructs/v1alpha1"
14+ v1alpha2=" schemas/constructs/v1alpha2"
15+
16+ echo -e " ${CYAN} 🔹 Merging OpenAPI specifications...${NC} "
17+
18+ # Use exact order from generate-golang.sh
19+ npx --yes @redocly/cli join schemas/base_cloud.yml \
20+ " ${v1beta1} /pattern/${merged_construct} " \
21+ " ${v1beta1} /component/${merged_construct} " \
22+ " ${v1beta1} /model/${merged_construct} " \
23+ " ${v1beta1} /subscription/${merged_construct} " \
24+ " ${v1beta1} /plan/${merged_construct} " \
25+ " ${v1beta1} /feature/${merged_construct} " \
26+ " ${v1beta1} /workspace/${merged_construct} " \
27+ " ${v1beta1} /environment/${merged_construct} " \
28+ " ${v1alpha2} /catalog/${merged_construct} " \
29+ " ${v1beta1} /evaluation/${merged_construct} " \
30+ " ${v1beta1} /user/${merged_construct} " \
31+ " ${v1beta1} /academy/${merged_construct} " \
32+ -o schemas/merged_openapi.yml \
33+ --prefix-tags-with-info-prop title \
34+ --prefix-components-with-info-prop title || {
35+ echo -e " ${RED} ❌ Schema merging failed!${NC} "
36+ exit 1
37+ }
38+
39+ echo -e " ${GREEN} ✅ Successfully joined OpenAPI specifications${NC} "
40+
41+ echo -e " ${CYAN} 🔹 Filtering schemas by tag...${NC} "
42+
43+ # Filter schemas by tag (matching generate-golang.sh)
44+ node scripts/filterOpenapiByTag.js schemas/merged_openapi.yml schemas/cloud_openapi.yml cloud || {
45+ echo -e " ${RED} ❌ Cloud schema filtering failed!${NC} "
46+ exit 1
47+ }
48+
49+ node scripts/filterOpenapiByTag.js schemas/merged_openapi.yml schemas/meshery_openapi.yml meshery || {
50+ echo -e " ${RED} ❌ Meshery schema filtering failed!${NC} "
51+ exit 1
52+ }
53+
54+ echo -e " ${GREEN} ✅ All done!${NC} "
0 commit comments