@sanity/cli 3.92.1-next.3.8d6ac7cf26 → 3.92.1-next.31.52ea1d6df9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/cli",
3
- "version": "3.92.1-next.3.8d6ac7cf26",
3
+ "version": "3.92.1-next.31.52ea1d6df9",
4
4
  "description": "Sanity CLI tool for managing Sanity installations, managing plugins, schemas and datasets",
5
5
  "keywords": [
6
6
  "sanity",
@@ -58,12 +58,12 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@babel/traverse": "^7.23.5",
61
- "@sanity/client": "^7.5.0",
62
- "@sanity/codegen": "3.92.1-next.3.8d6ac7cf26",
61
+ "@sanity/client": "^7.6.0",
62
+ "@sanity/codegen": "3.92.1-next.31.52ea1d6df9",
63
63
  "@sanity/runtime-cli": "^8.0.0",
64
64
  "@sanity/telemetry": "^0.8.0",
65
65
  "@sanity/template-validator": "^2.4.3",
66
- "@sanity/util": "3.92.1-next.3.8d6ac7cf26",
66
+ "@sanity/util": "3.92.1-next.31.52ea1d6df9",
67
67
  "chalk": "^4.1.2",
68
68
  "debug": "^4.3.4",
69
69
  "decompress": "^4.2.0",
@@ -83,7 +83,7 @@
83
83
  "@rollup/plugin-node-resolve": "^15.2.3",
84
84
  "@sanity/eslint-config-studio": "^4.0.0",
85
85
  "@sanity/generate-help-url": "^3.0.0",
86
- "@sanity/types": "3.92.1-next.3.8d6ac7cf26",
86
+ "@sanity/types": "3.92.1-next.31.52ea1d6df9",
87
87
  "@types/babel__traverse": "^7.20.5",
88
88
  "@types/configstore": "^5.0.1",
89
89
  "@types/cpx": "^1.5.2",
@@ -135,5 +135,5 @@
135
135
  "engines": {
136
136
  "node": ">=18"
137
137
  },
138
- "gitHead": "8d6ac7cf267195659721a7dee4a5167a296f7df9"
138
+ "gitHead": "52ea1d6df9f4ada9eb472d1cea718ac5aedbc929"
139
139
  }
@@ -679,24 +679,36 @@ export default async function initSanity(
679
679
  const devCommand = devCommandMap[pkgManager]
680
680
 
681
681
  const isCurrentDir = outputPath === process.cwd()
682
- if (isCurrentDir) {
683
- print(`\n${chalk.green('Success!')} Now, use this command to continue:\n`)
682
+ const goToProjectDir = `(${chalk.cyan(`cd ${outputPath}`)} to navigate to your new project directory)`
683
+
684
+ if (isAppTemplate) {
685
+ //output for custom apps here
686
+ print(`✅ ${chalk.green.bold('Success!')} Your custom app has been scaffolded.`)
687
+ if (!isCurrentDir) print(goToProjectDir)
684
688
  print(
685
- `${chalk.cyan(devCommand)} - to run ${isAppTemplate ? 'your Sanity application' : 'Sanity Studio'}\n`,
689
+ `\n${chalk.bold('Next')}, configure the project(s) and dataset(s) your app should work with.`,
686
690
  )
691
+ print('\nGet started in `src/App.tsx`, or refer to our documentation for a walkthrough:')
692
+ print(chalk.blue.underline('https://www.sanity.io/docs/app-sdk/sdk-configuration'))
693
+ print('\n')
694
+ print(`Other helpful commands:`)
695
+ print(`npx sanity docs to open the documentation in a browser`)
696
+ print(`npx sanity dev to start the development server for your app`)
697
+ print(`npx sanity deploy to deploy your app`)
687
698
  } else {
688
- print(`\n${chalk.green('Success!')} Now, use these commands to continue:\n`)
689
- print(`First: ${chalk.cyan(`cd ${outputPath}`)} - to enter project's directory`)
699
+ //output for Studios here
700
+ print(`✅ ${chalk.green.bold('Success!')} Your Studio has been created.`)
701
+ if (!isCurrentDir) print(goToProjectDir)
690
702
  print(
691
- `Then: ${chalk.cyan(devCommand)} -to run ${isAppTemplate ? 'your Sanity application' : 'Sanity Studio'}\n`,
703
+ `Get started by running ${chalk.cyan(devCommand)} to launch your Studio’s development server`,
692
704
  )
705
+ print('\n')
706
+ print(`Other helpful commands:`)
707
+ print(`npx sanity docs to open the documentation in a browser`)
708
+ print(`npx sanity manage to open the project settings in a browser`)
709
+ print(`npx sanity help to explore the CLI manual`)
693
710
  }
694
711
 
695
- print(`Other helpful commands`)
696
- print(`npx sanity docs - to open the documentation in a browser`)
697
- print(`npx sanity manage - to open the project settings in a browser`)
698
- print(`npx sanity help - to explore the CLI manual`)
699
-
700
712
  if (isFirstProject) {
701
713
  trace.log({step: 'sendCommunityInvite', selectedOption: 'yes'})
702
714
 
package/src/cli.ts CHANGED
@@ -157,6 +157,9 @@ export async function runCli(cliRoot: string, {cliVersion}: {cliVersion: string}
157
157
  const error = typeof err.details === 'string' ? err.details : err
158
158
  // eslint-disable-next-line no-console
159
159
  console.error(`\n${error.stack ? neatStack(err) : error}`)
160
+ if (err.cause) {
161
+ console.error(`\nCaused by:\n\n${err.cause.stack ? neatStack(err.cause) : err.cause}`)
162
+ }
160
163
  // eslint-disable-next-line no-process-exit
161
164
  cliCommandTrace.error(error)
162
165
  process.exit(1)
@@ -18,32 +18,44 @@ export async function installDeclaredPackages(
18
18
  encoding: 'utf8',
19
19
  env: getPartialEnvWithNpmPath(cwd),
20
20
  cwd,
21
- stdio: 'inherit',
21
+ stdio: 'pipe',
22
22
  }
23
23
 
24
- const npmArgs = ['install', '--legacy-peer-deps']
24
+ // results of running execa with the selected package manager
25
25
  let result: ExecaReturnValue<string> | undefined
26
- if (packageManager === 'npm') {
27
- output.print(`Running 'npm ${npmArgs.join(' ')}'`)
28
- result = await execa('npm', npmArgs, execOptions)
29
- } else if (packageManager === 'yarn') {
30
- const yarnArgs = ['install']
31
- output.print(`Running 'yarn ${yarnArgs.join(' ')}'`)
32
- result = await execa('yarn', yarnArgs, execOptions)
33
- } else if (packageManager === 'pnpm') {
34
- const pnpmArgs = ['install']
35
- output.print(`Running 'pnpm ${pnpmArgs.join(' ')}'`)
36
- result = await execa('pnpm', pnpmArgs, execOptions)
37
- } else if (packageManager === 'bun') {
38
- const bunArgs = ['install']
39
- output.print(`Running 'bun ${bunArgs.join(' ')}'`)
40
- result = await execa('bun', bunArgs, execOptions)
41
- } else if (packageManager === 'manual') {
42
- output.print(`Manual installation selected - run 'npm ${npmArgs.join(' ')}' or similar`)
26
+
27
+ type PackageManagerLibs = Exclude<PackageManager, 'manual'>
28
+ type InstallerArgs = {[key in PackageManagerLibs]: string[]}
29
+
30
+ const installerArgs: InstallerArgs = {
31
+ npm: ['install', '--legacy-peer-deps'],
32
+ yarn: ['install'],
33
+ pnpm: ['install'],
34
+ bun: ['install'],
43
35
  }
44
36
 
45
- if (result?.exitCode || result?.failed) {
46
- throw new Error('Dependency installation failed')
37
+ async function handleInstall(cmd: PackageManager, args: InstallerArgs[PackageManagerLibs]) {
38
+ // Start a spinner for the install process
39
+ const progress = output.spinner(`Running ${cmd} ${args.join(' ')}\n`).start()
40
+
41
+ // Perform the install command with execa
42
+ result = await execa(cmd, args, execOptions)
43
+
44
+ // If the install fails, log execa's stdout and throw…
45
+ if (result?.exitCode || result?.failed) {
46
+ progress.fail()
47
+ output.print(result.stdout)
48
+ throw new Error('Dependency installation failed')
49
+ } else {
50
+ // …otherwise, just mark the install as successful
51
+ progress.succeed()
52
+ }
53
+ }
54
+
55
+ if (packageManager === 'manual') {
56
+ output.print(`Manual installation selected — run 'npm ${installerArgs.npm} or equivalent'`)
57
+ } else {
58
+ await handleInstall(packageManager, installerArgs[packageManager])
47
59
  }
48
60
  }
49
61
 
@@ -7,5 +7,5 @@ Now you can do the following things:
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
8
  - Check out the example frontend: [React/Next.js](https://github.com/sanity-io/tutorial-sanity-blog-react-next)
9
9
  - [Read the blog post about this template](https://www.sanity.io/blog/build-your-own-blog-with-sanity-and-next-js?utm_source=readme)
10
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
10
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
11
11
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)
@@ -5,5 +5,5 @@ Congratulations, you have now installed the Sanity Content Studio, an open-sourc
5
5
  Now you can do the following things:
6
6
 
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
8
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
9
9
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)
@@ -7,5 +7,5 @@ Now you can do the following things:
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
8
  - Check out the example frontend: [Vue/Nuxt.js](https://github.com/sanity-io/example-ecommerce-snipcart-vue)
9
9
  - [Read the blog post about this template](https://www.sanity.io/blog/e-commerce-vue-nuxt-snipcart?uutm_source=readme)
10
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
10
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
11
11
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)
@@ -5,5 +5,5 @@ Congratulations, you have now installed the Sanity Content Studio, an open-sourc
5
5
  Now you can do the following things:
6
6
 
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
8
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
9
9
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)
@@ -6,5 +6,5 @@ Now you can do the following things:
6
6
 
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
8
  - Check out one of the example frontends: [React](https://github.com/sanity-io/example-frontend-next-js) | [React Native](https://github.com/sanity-io/example-app-react-native) | [Vue](https://github.com/sanity-io/example-frontend-vue-js) | [PHP](https://github.com/sanity-io/example-frontend-silex-twig)
9
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
9
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
10
10
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)
@@ -5,5 +5,5 @@ Congratulations, you have now installed Sanity Studio, an open-source real-time
5
5
  Now you can do the following things:
6
6
 
7
7
  - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme)
8
- - [Join the community Slack](https://slack.sanity.io/?utm_source=readme)
8
+ - [Join the community Slack](https://snty.link/community/?utm_source=readme)
9
9
  - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme)