dirs.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package cmd
  2. import (
  3. "os"
  4. "path/filepath"
  5. "charm.land/lipgloss/v2"
  6. "charm.land/lipgloss/v2/table"
  7. "github.com/charmbracelet/crush/internal/config"
  8. "github.com/charmbracelet/x/term"
  9. "github.com/spf13/cobra"
  10. )
  11. var dirsCmd = &cobra.Command{
  12. Use: "dirs",
  13. Short: "Print directories used by Crush",
  14. Long: `Print the directories where Crush stores its configuration and data files.
  15. This includes the global configuration directory and data directory.`,
  16. Example: `
  17. # Print all directories
  18. crush dirs
  19. # Print only the config directory
  20. crush dirs config
  21. # Print only the data directory
  22. crush dirs data
  23. `,
  24. Run: func(cmd *cobra.Command, args []string) {
  25. if term.IsTerminal(os.Stdout.Fd()) {
  26. // We're in a TTY: make it fancy.
  27. t := table.New().
  28. Border(lipgloss.RoundedBorder()).
  29. StyleFunc(func(row, col int) lipgloss.Style {
  30. return lipgloss.NewStyle().Padding(0, 2)
  31. }).
  32. Row("Config", filepath.Dir(config.GlobalConfig())).
  33. Row("Data", filepath.Dir(config.GlobalConfigData()))
  34. lipgloss.Println(t)
  35. return
  36. }
  37. // Not a TTY.
  38. cmd.Println(filepath.Dir(config.GlobalConfig()))
  39. cmd.Println(filepath.Dir(config.GlobalConfigData()))
  40. },
  41. }
  42. var configDirCmd = &cobra.Command{
  43. Use: "config",
  44. Short: "Print the configuration directory used by Crush",
  45. Run: func(cmd *cobra.Command, args []string) {
  46. cmd.Println(filepath.Dir(config.GlobalConfig()))
  47. },
  48. }
  49. var dataDirCmd = &cobra.Command{
  50. Use: "data",
  51. Short: "Print the datauration directory used by Crush",
  52. Run: func(cmd *cobra.Command, args []string) {
  53. cmd.Println(filepath.Dir(config.GlobalConfigData()))
  54. },
  55. }
  56. func init() {
  57. dirsCmd.AddCommand(configDirCmd, dataDirCmd)
  58. }