| |
|
|
| .PHONY: generate |
| generate: |
| $(call print-target) |
| pnpm --frozen-lockfile install |
| pnpm generate |
| |
| @AIP_REF="../../../../common/definitions/aip_filters.yaml#/components/schemas"; \ |
| FILE="packages/aip/output/definitions/metering-and-billing/v3/openapi.MeteringAndBilling.yaml"; \ |
| for schema in SortQuery BooleanFieldFilter NumericFieldFilter StringFieldFilter StringFieldFilterExact DateTimeFieldFilter LabelsFieldFilter; do \ |
| if yq -e ".components.schemas | has(\"$$schema\")" "$$FILE" > /dev/null 2>&1; then \ |
| REF_VAL="$$AIP_REF/$$schema" SCHEMA="$$schema" yq -i '.components.schemas[strenv(SCHEMA)] = {"$$ref": strenv(REF_VAL)}' "$$FILE"; \ |
| fi; \ |
| done |
| |
| @FILE="packages/aip/output/definitions/metering-and-billing/v3/openapi.MeteringAndBilling.yaml"; \ |
| for op in list-addons create-addon update-addon get-addon delete-addon archive-addon publish-addon; do \ |
| new_op="$$(printf '%s' "$$op" | sed 's/-addon/-product-catalog-addon/')"; \ |
| OLD_OP="$$op" NEW_OP="$$new_op" yq -i '(.paths[][] | select(.operationId == strenv(OLD_OP)) | .operationId) = strenv(NEW_OP)' "$$FILE"; \ |
| done |
| |
| @FILE="packages/aip/output/definitions/metering-and-billing/v3/openapi.MeteringAndBilling.yaml"; \ |
| yq -i 'del(.. | select(has("x-go-type"))["x-go-type"], .. | select(has("x-go-type-import"))["x-go-type-import"])' "$$FILE" |
| pnpm --filter @openmeter/api-spec-aip exec openapi bundle output/definitions/metering-and-billing/v3/openapi.OpenMeter.yaml -o ../../../v3/openapi.yaml |
| cp packages/legacy/output/openapi.OpenMeter.yaml ../openapi.yaml |
| cp packages/legacy/output/openapi.OpenMeterCloud.yaml ../openapi.cloud.yaml |
| cp packages/aip/output/definitions/metering-and-billing/v3/openapi.Test.yaml ../v3/test/openapi.test.yaml |
|
|
| .PHONY: test |
| test: |
| $(call print-target) |
| pnpm --frozen-lockfile install |
| pnpm --filter @openmeter/api-spec-aip run test |
| pnpm run test:sdk:coverage |
| pnpm --filter @openmeter/typespec-typescript run check |
|
|
| .PHONY: publish-aip-sdk |
| publish-aip-sdk: |
| $(call print-target) |
| @if [ -z "$$AIP_SDK_RELEASE_VERSION" ]; then \ |
| echo "ERROR: AIP_SDK_RELEASE_VERSION is required"; \ |
| echo "Usage: AIP_SDK_RELEASE_VERSION=1.2.3 make publish-aip-sdk [AIP_SDK_RELEASE_TAG=beta]"; \ |
| exit 1; \ |
| fi |
|
|
| @if [ -z "$$AIP_SDK_RELEASE_TAG" ]; then \ |
| echo "ERROR: AIP_SDK_RELEASE_TAG is required"; \ |
| echo "Usage: AIP_SDK_RELEASE_VERSION=1.2.3 make publish-aip-sdk [AIP_SDK_RELEASE_TAG=beta]"; \ |
| exit 1; \ |
| fi |
|
|
| pnpm --frozen-lockfile install |
|
|
| cd packages/aip-client-javascript && \ |
| pnpm version "$${AIP_SDK_RELEASE_VERSION}" --no-git-tag-version && \ |
| node -e "const fs=require('node:fs');const p='src/lib/version.ts';const v=process.env.AIP_SDK_RELEASE_VERSION;const src=fs.readFileSync(p,'utf8');const out=src.replace(/SDK_VERSION = '[^']*'/, \"SDK_VERSION = '\" + v + \"'\");if(out===src){throw new Error('SDK_VERSION pattern not found in '+p)}fs.writeFileSync(p, out)" && \ |
| CACHE_BUSTER="$$(date --rfc-3339=seconds)" pnpm publish --no-git-checks --access public --tag "$${AIP_SDK_RELEASE_TAG}" |
| @echo "✅ Published $${AIP_SDK_RELEASE_TAG} AIP TypeScript SDK (@openmeter/client) version $${AIP_SDK_RELEASE_VERSION} with tag $${AIP_SDK_RELEASE_TAG}" |
|
|
| .PHONY: lint |
| lint: |
| $(call print-target) |
| pnpm --frozen-lockfile install |
| pnpm lint |
|
|
| .PHONY: format |
| format: |
| $(call print-target) |
| pnpm --frozen-lockfile install |
| pnpm format |
|
|
| .PHONY: help |
| .DEFAULT_GOAL := help |
| help: |
| @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
|
|
| |
| var-%: ; @echo $($*) |
| varexport-%: ; @echo $*=$($*) |
|
|
| define print-target |
| @printf "Executing target: \033[36m$@\033[0m\n" |
| endef |
|
|