getLogs.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import chalk from "chalk";
  2. import gradient from "gradient-string";
  3. import type { RenderContext } from "./getRenderContext";
  4. export function logBanner() {
  5. console.log(`\n${getBanner()}\n`);
  6. }
  7. export function logStart(ctx: RenderContext) {
  8. console.log(
  9. `\n${ctx.language.infos.scaffolding} ${ctx.targetDirectoryName}...`
  10. );
  11. }
  12. export function logEnd(ctx: RenderContext) {
  13. console.log(`\n${ctx.language.infos.done}\n`);
  14. // Log next steps: Cd into the target directory.
  15. if (ctx.targetDirectory !== ctx.currentDirectory) {
  16. const cdCommand = `cd ${ctx.targetDirectoryName.includes(" ") ? `"${ctx.targetDirectoryName}"` : ctx.targetDirectoryName}`;
  17. console.log(` ${chalk.bold(chalk.green(cdCommand))}`);
  18. }
  19. // Log next steps: Install dependencies.
  20. const installCommand = ctx.getCommand("install");
  21. console.log(` ${chalk.bold(chalk.green(installCommand))}`);
  22. // Log next steps: Generate Idls and clients.
  23. const generateCommand = ctx.getCommand("generate");
  24. console.log(` ${chalk.bold(chalk.green(generateCommand))}`);
  25. // Final line break.
  26. console.log();
  27. }
  28. function getBanner() {
  29. const textBanner = "Create Solana Program";
  30. const gradientBanner = chalk.bold(
  31. gradient(["#89d7c8", "#dc7a8b"])(textBanner, {
  32. interpolation: "hsv",
  33. hsvSpin: "long",
  34. })
  35. );
  36. return process.stdout.isTTY && process.stdout.getColorDepth() > 8
  37. ? gradientBanner
  38. : textBanner;
  39. }