Skip to main content
Glama
version-info.ts4.88 kB
import { loadConfig } from "@/packages/configs/secrets-config/config"; import { getStoreTargets } from "@/packages/configs/aso-config/store"; import { type StoreType } from "@/packages/configs/aso-config/types"; import { AppStoreService } from "@/core/services/app-store-service"; import { GooglePlayService } from "@/core/services/google-play-service"; const appStoreService = new AppStoreService(); const googlePlayService = new GooglePlayService(); export interface LatestVersionsInput { store?: StoreType; bundleId?: string; packageName?: string; hasAppStore: boolean; hasGooglePlay: boolean; includePrompt?: boolean; } export interface LatestVersionsResult { messages: string[]; appStore?: { found: boolean; versionString?: string; state?: string; error?: string; skipped?: string; }; googlePlay?: { found: boolean; versionName?: string; versionCodes?: number[]; status?: string; releaseName?: string; error?: string; skipped?: string; }; } export async function getLatestVersions( input: LatestVersionsInput ): Promise<LatestVersionsResult> { const { store, bundleId, packageName, hasAppStore, hasGooglePlay, includePrompt = true, } = input; const { includeAppStore, includeGooglePlay } = getStoreTargets(store); const config = loadConfig(); const messages: string[] = []; messages.push(`\n📋 Checking latest versions from stores...\n`); const result: LatestVersionsResult = { messages }; if (includeAppStore) { if (!hasAppStore) { const skipped = `⏭️ Skipping App Store (not registered for App Store)`; messages.push(skipped); result.appStore = { found: false, skipped }; } else if (!config.appStore) { const skipped = `⏭️ Skipping App Store (not configured in ~/.config/pabal-mcp/config.json)`; messages.push(skipped); result.appStore = { found: false, skipped }; } else if (!bundleId) { const skipped = `⏭️ Skipping App Store (no bundleId provided)`; messages.push(skipped); result.appStore = { found: false, skipped }; } else { const latest = await appStoreService.getLatestVersion(bundleId); if (!latest.found) { const errMsg = latest.error instanceof Error ? latest.error.message : (latest.error ?? ""); const msg = errMsg ? `🍎 App Store: Check failed - ${errMsg}` : `🍎 App Store: No version found (can create first version)`; messages.push(msg); result.appStore = { found: false, error: errMsg || undefined }; } else { const state = latest.state?.toUpperCase() || "UNKNOWN"; messages.push(`🍎 App Store: ${latest.versionString} (${state})`); result.appStore = { found: true, versionString: latest.versionString, state, }; } } } if (includeGooglePlay) { if (!hasGooglePlay) { const skipped = `⏭️ Skipping Google Play (not registered for Google Play)`; messages.push(skipped); result.googlePlay = { found: false, skipped }; } else if (!config.playStore) { const skipped = `⏭️ Skipping Google Play (not configured in ~/.config/pabal-mcp/config.json)`; messages.push(skipped); result.googlePlay = { found: false, skipped }; } else if (!packageName) { const skipped = `⏭️ Skipping Google Play (no packageName provided)`; messages.push(skipped); result.googlePlay = { found: false, skipped }; } else { const latest = await googlePlayService.getLatestProductionRelease(packageName); if (!latest.found) { const errMsg = latest.error instanceof Error ? latest.error.message : (latest.error ?? ""); const msg = errMsg ? `🤖 Google Play: Check failed - ${errMsg}` : `🤖 Google Play: No version found (can create first version)`; messages.push(msg); result.googlePlay = { found: false, error: errMsg || undefined }; } else { const versionName = latest.versionName || latest.releaseName || "N/A"; const status = latest.status?.toUpperCase() || "UNKNOWN"; messages.push( `🤖 Google Play: ${versionName} (versionCodes: ${latest.versionCodes.join( ", " )}, ${status})` ); result.googlePlay = { found: true, versionName, versionCodes: latest.versionCodes, status, releaseName: latest.releaseName, }; } } } if (includePrompt) { messages.push( `\n💡 To create a new version, please provide the 'version' parameter.` ); messages.push(` Example: Call release-create tool with version="1.2.0".`); } return result; }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/quartz-labs-dev/pabal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server