@@ -4,7 +4,8 @@ import {localAppContext} from '../../../services/app-context.js'
44import { appFlags } from '../../../flags.js'
55import AppUnlinkedCommand , { AppUnlinkedCommandOutput } from '../../../utilities/app-unlinked-command.js'
66import { globalFlags , jsonFlag } from '@shopify/cli-kit/node/cli'
7- import { outputResult } from '@shopify/cli-kit/node/output'
7+ import { outputContent , outputResult , outputToken } from '@shopify/cli-kit/node/output'
8+ import { renderInfo } from '@shopify/cli-kit/node/ui'
89
910export default class FunctionInfo extends AppUnlinkedCommand {
1011 static summary = 'Get information about the function.'
@@ -30,7 +31,7 @@ export default class FunctionInfo extends AppUnlinkedCommand {
3031 const functionRunner = functionRunnerBinary ( )
3132 await downloadBinary ( functionRunner )
3233
33- const targeting : { [ key : string ] : { input_query ?: string ; export ?: string } } = { }
34+ const targeting : { [ key : string ] : { inputQueryPath ?: string ; export ?: string } } = { }
3435 ourFunction ?. configuration . targeting ?. forEach ( ( target ) => {
3536 if ( target . target ) {
3637 targeting [ target . target ] = {
@@ -62,10 +63,54 @@ export default class FunctionInfo extends AppUnlinkedCommand {
6263 ) ,
6364 )
6465 } else {
65- outputResult ( `functionRunnerPath: ${ functionRunner . path } ` )
66- outputResult ( `targeting: ${ JSON . stringify ( targeting , null , 2 ) } ` )
67- outputResult ( `schemaPath: ${ schemaPath } ` )
68- outputResult ( `wasmPath: ${ ourFunction . outputPath } ` )
66+ const sections : { title : string ; body : { list : { items : string [ ] } } } [ ] = [
67+ {
68+ title : 'FUNCTION RUNNER' ,
69+ body : {
70+ list : {
71+ items : [ outputContent `Path: ${ outputToken . path ( functionRunner . path ) } ` . value ] ,
72+ } ,
73+ } ,
74+ } ,
75+ {
76+ title : 'FUNCTION BUILD' ,
77+ body : {
78+ list : {
79+ items : [
80+ outputContent `Schema Path: ${ outputToken . path ( schemaPath ?? 'N/A' ) } ` . value ,
81+ outputContent `WASM Path: ${ outputToken . path ( ourFunction . outputPath ) } ` . value ,
82+ ] ,
83+ } ,
84+ } ,
85+ } ,
86+ ]
87+
88+ if ( Object . keys ( targeting ) . length > 0 ) {
89+ const targetingItems = Object . entries ( targeting ) . map ( ( [ target , config ] ) => {
90+ const parts = [ outputContent `${ outputToken . cyan ( target ) } ` . value ]
91+ if ( config . inputQueryPath ) {
92+ parts . push ( outputContent ` Input Query Path: ${ outputToken . path ( config . inputQueryPath ) } ` . value )
93+ }
94+ if ( config . export ) {
95+ parts . push ( outputContent ` Export: ${ config . export } ` . value )
96+ }
97+ return parts . join ( '\n' )
98+ } )
99+
100+ sections . push ( {
101+ title : 'TARGETING' ,
102+ body : {
103+ list : {
104+ items : targetingItems ,
105+ } ,
106+ } ,
107+ } )
108+ }
109+
110+ renderInfo ( {
111+ headline : 'FUNCTION INFORMATION.' ,
112+ customSections : sections ,
113+ } )
69114 }
70115
71116 return { app}
0 commit comments