Skip to content

Commit 3f326e3

Browse files
committed
Add new copy_files build mode and apply it to flow
1 parent 2e42e1c commit 3f326e3

File tree

7 files changed

+14
-103
lines changed

7 files changed

+14
-103
lines changed

packages/app/src/cli/models/extensions/extension-instance.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {WebhooksSpecIdentifier} from './specifications/app_config_webhook.js'
1414
import {WebhookSubscriptionSpecIdentifier} from './specifications/app_config_webhook_subscription.js'
1515
import {
1616
ExtensionBuildOptions,
17-
buildFlowTemplateExtension,
1817
buildFunctionExtension,
1918
buildThemeExtension,
2019
buildUIExtension,
@@ -135,7 +134,14 @@ export class ExtensionInstance<TConfiguration extends BaseConfigType = BaseConfi
135134
}
136135

137136
get outputFileName() {
138-
return this.isFunctionExtension ? 'index.wasm' : `${this.handle}.js`
137+
const mode = this.specification.buildConfig.mode
138+
if (mode === 'copy_files' || mode === 'theme') {
139+
return ''
140+
} else if (mode === 'function') {
141+
return 'index.wasm'
142+
} else {
143+
return `${this.handle}.js`
144+
}
139145
}
140146

141147
constructor(options: {
@@ -344,13 +350,12 @@ export class ExtensionInstance<TConfiguration extends BaseConfigType = BaseConfi
344350

345351
switch (mode) {
346352
case 'theme':
347-
return buildThemeExtension(this, options)
353+
await buildThemeExtension(this, options)
354+
return bundleThemeExtension(this, options)
348355
case 'function':
349356
return buildFunctionExtension(this, options)
350357
case 'ui':
351358
return buildUIExtension(this, options)
352-
case 'flow':
353-
return buildFlowTemplateExtension(this, options)
354359
case 'tax_calculation':
355360
await touchFile(this.outputPath)
356361
await writeFile(this.outputPath, '(()=>{})();')
@@ -371,9 +376,6 @@ export class ExtensionInstance<TConfiguration extends BaseConfigType = BaseConfi
371376
this.outputPath = this.getOutputPathForDirectory(bundleDirectory, outputId)
372377

373378
await this.build(options)
374-
if (this.isThemeExtension) {
375-
await bundleThemeExtension(this, options)
376-
}
377379

378380
const bundleInputPath = joinPath(bundleDirectory, this.getOutputFolderId(outputId))
379381
await this.keepBuiltSourcemapsLocally(bundleInputPath)
@@ -402,7 +404,7 @@ export class ExtensionInstance<TConfiguration extends BaseConfigType = BaseConfi
402404

403405
getOutputPathForDirectory(directory: string, outputId?: string) {
404406
const id = this.getOutputFolderId(outputId)
405-
const outputFile = this.isThemeExtension ? '' : joinPath('dist', this.outputFileName)
407+
const outputFile = this.outputFileName === '' ? '' : joinPath('dist', this.outputFileName)
406408
return joinPath(directory, id, outputFile)
407409
}
408410

packages/app/src/cli/models/extensions/specification.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export interface Asset {
4747
}
4848

4949
type BuildConfig =
50-
| {mode: 'ui' | 'theme' | 'flow' | 'function' | 'tax_calculation' | 'none'}
50+
| {mode: 'ui' | 'theme' | 'function' | 'tax_calculation' | 'none'}
5151
| {mode: 'copy_files'; filePatterns: string[]; ignoredFilePatterns?: string[]}
5252
/**
5353
* Extension specification with all the needed properties and methods to load an extension.

packages/app/src/cli/models/extensions/specifications/flow_template.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const flowTemplateSpec = createExtensionSpecification({
4949
identifier: 'flow_template',
5050
schema: FlowTemplateExtensionSchema,
5151
appModuleFeatures: (_) => ['ui_preview'],
52-
buildConfig: {mode: 'flow'},
52+
buildConfig: {mode: 'copy_files', filePatterns: ['*.flow', '*.json', '*.toml']},
5353
deployConfig: async (config, extensionPath) => {
5454
return {
5555
template_handle: config.handle,

packages/app/src/cli/services/build/extension.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {runThemeCheck} from './theme-check.js'
22
import {AppInterface} from '../../models/app/app.js'
3-
import {bundleExtension, bundleFlowTemplateExtension} from '../extensions/bundle.js'
3+
import {bundleExtension} from '../extensions/bundle.js'
44
import {buildJSFunction, runTrampoline, runWasmOpt} from '../function/build.js'
55
import {ExtensionInstance} from '../../models/extensions/extension-instance.js'
66
import {FunctionConfigType} from '../../models/extensions/specifications/function.js'
@@ -65,19 +65,6 @@ export async function buildThemeExtension(extension: ExtensionInstance, options:
6565
if (offenses) options.stdout.write(offenses)
6666
}
6767

68-
/**
69-
* It builds the flow template extensions.
70-
* @param options - Build options.
71-
*/
72-
export async function buildFlowTemplateExtension(
73-
extension: ExtensionInstance,
74-
options: ExtensionBuildOptions,
75-
): Promise<void> {
76-
options.stdout.write(`Building Flow Template extension ${extension.localIdentifier}...`)
77-
await bundleFlowTemplateExtension(extension)
78-
options.stdout.write(`${extension.localIdentifier} successfully built`)
79-
}
80-
8168
/**
8269
* It builds the UI extensions.
8370
* @param options - Build options.

packages/app/src/cli/services/extensions/bundle.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {ExtensionBuildOptions} from '../build/extension.js'
22
import {ExtensionInstance} from '../../models/extensions/extension-instance.js'
33
import {themeExtensionFiles} from '../../utilities/extensions/theme.js'
44
import {EsbuildEnvVarRegex, environmentVariableNames} from '../../constants.js'
5-
import {flowTemplateExtensionFiles} from '../../utilities/extensions/flow-template.js'
65
import {context as esContext, formatMessagesSync} from 'esbuild'
76
import {AbortSignal} from '@shopify/cli-kit/node/abort'
87
import {copyFile, glob} from '@shopify/cli-kit/node/fs'
@@ -78,18 +77,6 @@ export async function bundleThemeExtension(
7877
)
7978
}
8079

81-
export async function bundleFlowTemplateExtension(extension: ExtensionInstance): Promise<void> {
82-
const files = await flowTemplateExtensionFiles(extension)
83-
await Promise.all(
84-
files.map(function (filepath) {
85-
const relativePathName = relativePath(extension.directory, filepath)
86-
const outputFile = joinPath(extension.outputPath, relativePathName)
87-
if (filepath === outputFile) return
88-
return copyFile(filepath, outputFile)
89-
}),
90-
)
91-
}
92-
9380
export async function copyFilesForExtension(
9481
extension: ExtensionInstance,
9582
options: ExtensionBuildOptions,

packages/app/src/cli/utilities/extensions/flow-template.test.ts

Lines changed: 0 additions & 52 deletions
This file was deleted.

packages/app/src/cli/utilities/extensions/flow-template.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)