import{b as $}from"./chunk-FO6FNY6P.js";import{a as O}from"./chunk-6ZRHK4ON.js";import{a as T}from"./chunk-7XQDZF73.js";import{Fa as N,i as k}from"./chunk-UZ7U322K.js";import{f as l}from"./chunk-IRH6IGFT.js";import{H as S,I as b}from"./chunk-2HZMOK4U.js";import{a as h}from"./chunk-J3KRY2SD.js";import{b as P,c as I}from"./chunk-Q6LCSRIW.js";import{g as v,u as E}from"./chunk-E24W34C4.js";import{Gb as C,Hb as _,Lb as w,N as y,Wb as A}from"./chunk-EYDNSYYE.js";import{g as p,j as g}from"./chunk-773TIA5M.js";import{r as W}from"./chunk-T6CC5WUU.js";import{e as U,g as f}from"./chunk-VKWPEFWQ.js";f();f();async function x(n,e,t,o,i){return i.webEnv?F(n,e,t,i):R(n,e,o,i)}async function F(n,e,t,{format:o}){return $(n,e,t,o)}async function R(n,e,t,o){if(o.format==="json"){let i=j(n.allExtensions.filter(s=>s.isReturnedAsInfo())),r={...n,packageManager:t.packageManager,nodeDependencies:t.nodeDependencies,usesWorkspaces:t.usesWorkspaces,allExtensions:i};return"realExtensions"in r&&(r.realExtensions=j(r.realExtensions)),"specifications"in r&&(r={...r,specifications:r.specifications?.map(s=>D(s))}),_`${JSON.stringify(Object.fromEntries(Object.entries(r).filter(([s])=>s!=="configSchema")),null,2)}`}else return new d(n,e,t,o).output()}function D(n){if("schema"in n){let{schema:e,...t}=n;return t}return n}function j(n){return n.map(e=>{if("specification"in e&&e.specification){let t=e.specification,o=D(t);return{...e,specification:o}}else return e})}var M="unknown",u={subdued:"Not yet configured"},K="NOT LOADED",d=class{constructor(e,t,o,i){this.app=e,this.remoteApp=t,this.project=o,this.options=i}async output(){return[...await this.devConfigsSection(),this.projectSettingsSection(),...await this.appComponentsSection(),await this.systemInfoSection()]}async devConfigsSection(){let e=u;this.app.configuration.build?.automatically_update_urls_on_dev!==void 0&&(e=this.app.configuration.build.automatically_update_urls_on_dev?"Yes":"No");let t=["User","unknown"],o=await this.options.developerPlatformClient.accountInfo();return b(o)?t=["Service account",o.orgName]:S(o)&&(t[1]=o.email),[this.tableSection("Current app configuration",[["Configuration file",{filePath:g(this.app.configPath)||l.app}],["App name",this.remoteApp.title?{userInput:this.remoteApp.title}:u],["Client ID",this.remoteApp.apiKey||u],["Access scopes",k(this.app.configuration)],["Dev store",this.app.configuration.build?.dev_store_url??this.app.hiddenConfig.dev_store_url??u],["Update URLs",e],t],{isFirstItem:!0}),{body:["\u{1F4A1} To change these, run",{command:C(this.project.packageManager,"shopify app config link")}]}]}projectSettingsSection(){return this.tableSection("Your Project",[["Root location",{filePath:this.app.directory}]])}async appComponentsSection(){let e=this.webComponentsSection();return[{title:`
Directory components`.toUpperCase(),body:""},...e?[e]:[],...this.extensionsSections()]}webComponentsSection(){let e=[],t=[];if(this.app.webs[0])return this.app.webs.forEach(o=>{if(o.configuration)if(o.configuration.name){let{name:i,roles:r}=o.configuration,s=p(this.app.directory,o.directory);t.push([`    \u{1F4C2} ${i}`,{filePath:s||"/"}]),r.length>0&&t.push(["         roles",r.join(", ")])}else o.configuration.roles.forEach(i=>{t.push([`    \u{1F4C2} ${i}`,{filePath:p(this.app.directory,o.directory)}])});else t.push([{subdued:`  \u{1F4C2} ${M}`},{filePath:p(this.app.directory,o.directory)}]);if(!this.app.errors.isEmpty()){let i=this.app.errors.getErrors(`${o.directory}/${l.web}`);e.push(...i.map(r=>r.message))}}),this.subtableSection("web",[["\u{1F4C2} web",""],...t,...e.map(o=>[{error:"error"},{error:this.formattedError(o)}])])}extensionsSections(){let e=this.app.allExtensions.filter(o=>o.isReturnedAsInfo());return y(e.map(o=>o.type)).map(o=>{let i=e.filter(r=>r.type===o);if(i[0])return this.subtableSection(i[0].externalType,i.map(r=>this.extensionSubSection(r)).flat())}).filter(o=>o!==void 0)}extensionSubSection(e){let t=e.configuration,o=[[`\u{1F4C2} ${e.handle||K}`,{filePath:p(this.app.directory,e.directory)}],["     config file",{filePath:p(e.directory,e.configurationPath)}]];t&&"metafields"in t&&Array.isArray(t.metafields)&&t.metafields.length>0&&o.push(["     metafields",`${t.metafields.length}`]);let i=this.app.errors.getErrors(e.configurationPath);for(let r of i)o.push([{error:"     error"},{error:this.formattedError(r.message)}]);return o}formattedError(e){let t=e.trim();if(A())return t;let[o,...i]=t.split(`
`);return[`! ${o}`,...i.map(r=>`  ${r}`)].join(`
`)}async systemInfoSection(){let{platform:e,arch:t}=v();return this.tableSection("Tooling and System",[["Shopify CLI",h],["Package manager",this.project.packageManager],["OS",`${e}-${t}`],["Shell",process.env.SHELL??"unknown"],["Node version",process.version]])}tableSection(e,t,{isFirstItem:o=!1}={}){return{title:`${o?"":`
`}${e.toUpperCase()}
`,body:{tabularData:t,firstColumnSubdued:!0}}}subtableSection(e,t){return{title:e,body:{tabularData:t,firstColumnSubdued:!0}}}};var L=U(W(),1);var m,a=class extends O{async run(){let{flags:e}=await this.parse(m),{app:t,project:o,remoteApp:i,organization:r,developerPlatformClient:s}=await N({directory:e.path,clientId:e["client-id"],forceRelink:e.reset,userProvidedConfigName:e.config,unsafeTolerateErrors:!0}),c=await x(t,i,r,o,{format:e.json?"json":"text",webEnv:e["web-env"],configName:e.config,developerPlatformClient:s});return typeof c=="string"||"value"in c?w(c):E({customSections:c}),t.errors.isEmpty()||process.exit(2),{app:t}}};m=a;a.summary="Print basic information about your app and extensions.";a.descriptionWithMarkdown=`The information returned includes the following:

  - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [\`dev --reset\`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).
  - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.
  - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.
  - System information, including the package manager and version of Shopify CLI used in the project.`;a.description=m.descriptionWithoutMarkdown();a.flags={...P,...T,...I,"web-env":L.Flags.boolean({hidden:!1,description:"Outputs environment variables necessary for running and deploying web/.",env:"SHOPIFY_FLAG_OUTPUT_WEB_ENV",default:!1})};var ae=a;export{ae as a};
