Skip to content

Commit

Permalink
encapsulate appCreationDefaultOptions in app
Browse files Browse the repository at this point in the history
  • Loading branch information
shauns committed May 22, 2024
1 parent 612d412 commit df86248
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 21 deletions.
19 changes: 19 additions & 0 deletions packages/app/src/cli/models/app/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@ export interface AppInterface<
* @returns true if the app can be launched, false otherwise
*/
appIsLaunchable: () => boolean

/**
* If creating an app on the platform based on this app and its configuration, what default options should the app take?
*/
creationDefaultOptions(): AppCreationDefaultOptions
}

type AppConstructor<
Expand Down Expand Up @@ -371,6 +376,14 @@ export class App<
return Boolean(frontendConfig || backendConfig)
}

creationDefaultOptions(): AppCreationDefaultOptions {
return {
isLaunchable: this.appIsLaunchable(),
scopesArray: getAppScopesArray(this.configuration),
name: this.name,
}
}

get includeConfigOnDeploy() {
if (isLegacyAppSchema(this.configuration)) return false
return this.configuration.build?.include_config_on_deploy
Expand Down Expand Up @@ -488,3 +501,9 @@ export async function getDependencyVersion(dependency: string, directory: string
if (!packageContent.version) return 'not_found'
return {name: dependency, version: packageContent.version}
}

export interface AppCreationDefaultOptions {
isLaunchable: boolean
scopesArray: string[]
name: string
}
5 changes: 2 additions & 3 deletions packages/app/src/cli/services/app/config/link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
BuildOptions,
getAppScopes,
LegacyAppConfiguration,
AppCreationDefaultOptions,
} from '../../../models/app/app.js'
import {OrganizationApp} from '../../../models/organization.js'
import {selectConfigName} from '../../../prompts/config.js'
Expand All @@ -15,9 +16,7 @@ import {
fetchOrCreateOrganizationApp,
logMetadataForLoadedContext,
appFromId,
appCreationDefaultOptions,
InvalidApiKeyErrorMessage,
AppCreationDefaultOptions,
} from '../../context.js'
import {Flag} from '../../dev/fetch.js'
import {configurationFileNames} from '../../../constants.js'
Expand Down Expand Up @@ -167,7 +166,7 @@ async function getAppCreationDefaultsFromLocalApp(options: LinkOptions): Promise
const configuration = app.configuration

if (!isCurrentAppSchema(configuration)) {
return {creationOptions: appCreationDefaultOptions(app), appDirectory: app.directory}
return {creationOptions: app.creationDefaultOptions(), appDirectory: app.directory}
}
return {creationOptions: appCreationDefaults}
// eslint-disable-next-line no-catch-all/no-catch-all
Expand Down
18 changes: 2 additions & 16 deletions packages/app/src/cli/services/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import {
AppConfiguration,
AppInterface,
isCurrentAppSchema,
getAppScopesArray,
CurrentAppConfiguration,
AppCreationDefaultOptions,
} from '../models/app/app.js'
import {Identifiers, UuidOnlyIdentifiers, updateAppIdentifiers, getAppIdentifiers} from '../models/app/identifiers.js'
import {Organization, OrganizationApp, OrganizationStore} from '../models/organization.js'
Expand Down Expand Up @@ -660,20 +660,6 @@ export async function ensureVersionsListContext(
}
}

export interface AppCreationDefaultOptions {
isLaunchable: boolean
scopesArray: string[]
name: string
}

export function appCreationDefaultOptions(app: AppInterface): AppCreationDefaultOptions {
return {
isLaunchable: app.appIsLaunchable(),
scopesArray: getAppScopesArray(app.configuration),
name: app.name,
}
}

export async function fetchOrCreateOrganizationApp(
options: AppCreationDefaultOptions,
directory?: string,
Expand Down Expand Up @@ -727,7 +713,7 @@ export async function fetchAppAndIdentifiers(
}

if (!remoteApp) {
remoteApp = await fetchOrCreateOrganizationApp(appCreationDefaultOptions(app))
remoteApp = await fetchOrCreateOrganizationApp(app.creationDefaultOptions())
}

await logMetadataForLoadedContext({organizationId: remoteApp.organizationId, apiKey: remoteApp.apiKey})
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/cli/services/generate-schema.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {appCreationDefaultOptions, fetchOrCreateOrganizationApp} from './context.js'
import {fetchOrCreateOrganizationApp} from './context.js'
import {DeveloperPlatformClient, selectDeveloperPlatformClient} from '../utilities/developer-platform-client.js'
import {AppInterface} from '../models/app/app.js'
import {getAppIdentifiers} from '../models/app/identifiers.js'
Expand Down Expand Up @@ -37,7 +37,7 @@ export async function generateSchemaService(options: GenerateSchemaOptions) {
)
}

apiKey = (await fetchOrCreateOrganizationApp(appCreationDefaultOptions(app))).apiKey
apiKey = (await fetchOrCreateOrganizationApp(app.creationDefaultOptions())).apiKey
}

const usingTargets = Boolean(targeting?.length)
Expand Down

0 comments on commit df86248

Please sign in to comment.