dsu 3.0.0.alpha.12 → 3.0.0.beta.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/CHANGELOG.md +2 -0
  4. data/Gemfile +5 -5
  5. data/Gemfile.lock +19 -16
  6. data/lib/dsu/cli.rb +2 -1
  7. data/lib/dsu/crud/json_file.rb +5 -0
  8. data/lib/dsu/migration/base_service.rb +118 -0
  9. data/lib/dsu/migration/migrator.rb +24 -0
  10. data/lib/dsu/migration/raw_helpers/color_theme_hash.rb +13 -0
  11. data/lib/dsu/migration/raw_helpers/configuration_hash.rb +15 -0
  12. data/lib/dsu/migration/raw_helpers/entry_group_hash.rb +13 -0
  13. data/lib/dsu/migration/raw_json_file.rb +15 -0
  14. data/lib/dsu/migration/raw_json_files.rb +56 -0
  15. data/lib/dsu/migration/v20230613121411/service.rb +94 -0
  16. data/lib/dsu/migration/v20240210161248/service.rb +148 -0
  17. data/lib/dsu/models/color_theme.rb +2 -0
  18. data/lib/dsu/models/configuration.rb +6 -0
  19. data/lib/dsu/models/project.rb +2 -2
  20. data/lib/dsu/presenters/project/defaultable.rb +15 -0
  21. data/lib/dsu/presenters/project/use_by_number_presenter.rb +4 -0
  22. data/lib/dsu/presenters/project/use_presenter.rb +4 -0
  23. data/lib/dsu/subcommands/project.rb +3 -6
  24. data/lib/dsu/support/fileable.rb +11 -7
  25. data/lib/dsu/support/project_file_system.rb +2 -5
  26. data/lib/dsu/version.rb +2 -2
  27. data/lib/dsu/views/project/list.rb +4 -4
  28. data/lib/dsu.rb +8 -13
  29. data/lib/locales/en/commands.yml +4 -0
  30. data/lib/locales/en/miscellaneous.yml +1 -2
  31. data/lib/locales/en/subcommands.yml +21 -11
  32. data/lib/seed_data/20230613121411/dsu/migration_version.json +3 -0
  33. data/lib/seed_data/{themes → 20230613121411/dsu/themes}/light.json +2 -2
  34. data/lib/seed_data/20240210161248/dsu/current_project.json +4 -0
  35. data/lib/seed_data/20240210161248/dsu/migration_version.json +3 -0
  36. data/lib/seed_data/20240210161248/dsu/projects/default/project.json +5 -0
  37. data/lib/seed_data/20240210161248/dsu/themes/cherry.json +79 -0
  38. data/lib/seed_data/20240210161248/dsu/themes/christmas.json +79 -0
  39. data/lib/seed_data/20240210161248/dsu/themes/default.json +79 -0
  40. data/lib/seed_data/20240210161248/dsu/themes/lemon.json +79 -0
  41. data/lib/seed_data/20240210161248/dsu/themes/light.json +79 -0
  42. data/lib/seed_data/20240210161248/dsu/themes/matrix.json +79 -0
  43. data/lib/seed_data/20240210161248/dsu/themes/whiteout.json +79 -0
  44. metadata +32 -12
  45. data/lib/dsu/migration/factory.rb +0 -26
  46. data/lib/dsu/migration/service.rb +0 -196
  47. data/lib/dsu/migration/service_20230613121411.rb +0 -178
  48. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/cherry.json +0 -0
  49. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/christmas.json +0 -0
  50. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/default.json +0 -0
  51. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/lemon.json +0 -0
  52. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/matrix.json +0 -0
  53. /data/lib/seed_data/{themes → 20230613121411/dsu/themes}/whiteout.json +0 -0
@@ -20,6 +20,8 @@ module Dsu
20
20
  include Support::Fileable
21
21
  include Support::Presentable
22
22
 
23
+ THEME_FILE_NAME_REGEX = /.+.json/
24
+
23
25
  VERSION = Migration::VERSION
24
26
 
25
27
  DEFAULT_THEME_NAME = 'default'
@@ -81,6 +81,12 @@ module Dsu
81
81
  write! unless exist?
82
82
  end
83
83
 
84
+ class << self
85
+ def exist?
86
+ File.exist?(Support::Fileable.config_path)
87
+ end
88
+ end
89
+
84
90
  # Temporarily sets the configuration to the given config_hash.
85
91
  # To reset the configuration to its original state, call #reload
86
92
  def replace!(config_hash: {})
@@ -25,9 +25,9 @@ module Dsu
25
25
 
26
26
  VERSION = Migration::VERSION
27
27
  MIN_PROJECT_NAME_LENGTH = 2
28
- MAX_PROJECT_NAME_LENGTH = 24
28
+ MAX_PROJECT_NAME_LENGTH = 32
29
29
  MIN_DESCRIPTION_LENGTH = 2
30
- MAX_DESCRIPTION_LENGTH = 32
30
+ MAX_DESCRIPTION_LENGTH = 64
31
31
 
32
32
  attr_reader :project_name, :current_project_file, :description, :version, :options
33
33
 
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dsu
4
+ module Presenters
5
+ module Project
6
+ module Defaultable
7
+ private
8
+
9
+ def make_default?
10
+ options.fetch(:default, false)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,11 +2,14 @@
2
2
 
3
3
  require_relative '../../models/project'
4
4
  require_relative '../base_presenter_ex'
5
+ require_relative 'defaultable'
5
6
 
6
7
  module Dsu
7
8
  module Presenters
8
9
  module Project
9
10
  class UseByNumberPresenter < BasePresenterEx
11
+ include Defaultable
12
+
10
13
  attr_reader :project_number
11
14
 
12
15
  delegate :project_name, to: :project, allow_nil: true
@@ -23,6 +26,7 @@ module Dsu
23
26
  def respond(response:)
24
27
  return false unless response
25
28
 
29
+ project.default! if make_default? && project&.present?
26
30
  project.use! if project&.present?
27
31
  end
28
32
 
@@ -2,11 +2,14 @@
2
2
 
3
3
  require_relative '../../models/project'
4
4
  require_relative '../base_presenter_ex'
5
+ require_relative 'defaultable'
5
6
 
6
7
  module Dsu
7
8
  module Presenters
8
9
  module Project
9
10
  class UsePresenter < BasePresenterEx
11
+ include Defaultable
12
+
10
13
  attr_reader :project_name
11
14
 
12
15
  delegate :description, to: :project, prefix: true, allow_nil: true
@@ -22,6 +25,7 @@ module Dsu
22
25
  def respond(response:)
23
26
  return false unless response
24
27
 
28
+ project.default! if make_default? && project&.present?
25
29
  project.use! if project&.present?
26
30
  end
27
31
 
@@ -23,7 +23,6 @@ module Dsu
23
23
 
24
24
  desc I18n.t('subcommands.project.create.desc'), I18n.t('subcommands.project.create.usage')
25
25
  long_desc I18n.t('subcommands.project.create.long_desc')
26
- option :prompts, type: :hash, default: {}, hide: true, aliases: '-p'
27
26
  def create(project_name = nil, description = nil)
28
27
  project_name = project_name.to_s.strip
29
28
  description = description.to_s.strip
@@ -41,7 +40,6 @@ module Dsu
41
40
 
42
41
  desc I18n.t('subcommands.project.delete.desc'), I18n.t('subcommands.project.delete.usage')
43
42
  long_desc I18n.t('subcommands.project.delete.long_desc')
44
- option :prompts, type: :hash, default: {}, hide: true, aliases: '-p'
45
43
  def delete(project_name_or_number = nil)
46
44
  options = configuration.to_h.merge(self.options).with_indifferent_access
47
45
  presenter = delete_presenter_for(project_name_or_number, options: options)
@@ -50,7 +48,6 @@ module Dsu
50
48
 
51
49
  desc I18n.t('subcommands.project.list.desc'), I18n.t('subcommands.project.list.usage')
52
50
  long_desc I18n.t('subcommands.project.list.long_desc')
53
- option :prompts, type: :hash, default: {}, hide: true, aliases: '-p'
54
51
  def list
55
52
  options = configuration.to_h.merge(self.options).with_indifferent_access
56
53
  presenter = Presenters::Project::ListPresenter.new(options: options)
@@ -59,7 +56,6 @@ module Dsu
59
56
 
60
57
  desc I18n.t('subcommands.project.rename.desc'), I18n.t('subcommands.project.rename.usage')
61
58
  long_desc I18n.t('subcommands.project.rename.long_desc')
62
- option :prompts, type: :hash, default: {}, hide: true, aliases: '-p'
63
59
  def rename(project_name_or_number = nil, new_project_name = nil, new_project_description = nil)
64
60
  project_name_or_number = project_name_or_number.to_s.strip
65
61
  new_project_name = new_project_name&.to_s&.strip
@@ -77,9 +73,10 @@ module Dsu
77
73
  rename_view_for(project_name_or_number, presenter: presenter, options: options).render
78
74
  end
79
75
 
80
- desc I18n.t('subcommands.project.use.desc'), I18n.t('subcommands.project.use.usage')
76
+ desc I18n.t('subcommands.project.use.desc'),
77
+ I18n.t('subcommands.project.use.usage')
81
78
  long_desc I18n.t('subcommands.project.use.long_desc')
82
- option :prompts, type: :hash, default: {}, hide: true, aliases: '-p'
79
+ option :default, type: :boolean, required: false, default: false, aliases: '-d', banner: 'DEFAULT_PROJECT'
83
80
  def use(project_name_or_number = nil)
84
81
  options = configuration.to_h.merge(self.options).with_indifferent_access
85
82
  presenter = use_presenter_for(project_name_or_number, options: options)
@@ -77,16 +77,14 @@ module Dsu
77
77
  Gem.loaded_specs['dsu'].gem_dir
78
78
  end
79
79
 
80
- # Back up folder
80
+ # Seed data files and folders
81
81
 
82
- def backup_folder(version:)
83
- File.join(dsu_folder, 'backup', version.to_s)
82
+ def seed_data_dsu_folder_for(migration_version:)
83
+ File.join(gem_dir, 'lib/seed_data', migration_version.to_s, 'dsu')
84
84
  end
85
85
 
86
- # Seed data folders
87
-
88
- def seed_data_folder
89
- File.join(gem_dir, 'lib/seed_data')
86
+ def seed_data_dsu_configuration_for(migration_version:)
87
+ File.join(gem_dir, 'lib/seed_data', migration_version.to_s, '.dsu')
90
88
  end
91
89
 
92
90
  # Projects
@@ -126,6 +124,12 @@ module Dsu
126
124
  end
127
125
  alias project_file project_file_for
128
126
 
127
+ # Backup folders
128
+
129
+ def backup_folder_for(migration_version:)
130
+ File.join(root_folder, "dsu-#{migration_version}-backup")
131
+ end
132
+
129
133
  extend self # rubocop:disable Style/ModuleFunction
130
134
  end
131
135
  end
@@ -39,6 +39,8 @@ module Dsu
39
39
  end
40
40
 
41
41
  def default_project_name
42
+ return Models::Configuration::DEFAULT_CONFIGURATION[:default_project] unless Models::Configuration.exist?
43
+
42
44
  Models::Configuration.new.default_project
43
45
  end
44
46
 
@@ -78,11 +80,6 @@ module Dsu
78
80
  end
79
81
  alias current_project_file_persisted? current_project_file_exist?
80
82
 
81
- # Does dsu/projects folder exist?
82
- def projects_folder_exist?
83
- Dir.exist?(projects_folder)
84
- end
85
-
86
83
  # Does dsu/projects/<project_name> folder exist?
87
84
  def project_folder_exist?(project_name:)
88
85
  Dir.exist?(project_folder_for(project_name: project_name))
data/lib/dsu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dsu
4
- VERSION_REGEX = /\A\d+\.\d+\.\d+(\.(alpha|rc)\.\d+)?\z/
5
- VERSION = '3.0.0.alpha.12'
4
+ VERSION_REGEX = /\A\d+\.\d+\.\d+(\.(alpha|beta|rc)\.\d+)?\z/
5
+ VERSION = '3.0.0.beta.1'
6
6
  end
@@ -8,10 +8,10 @@ module Dsu
8
8
  # TODO: I18n.
9
9
  class List < Views::BaseListView
10
10
  NO_JUSTIFICATION = 4
11
- PROJECT_JUSTIFICATION = 15
12
- DEFAULT_JUSTIFICATION = 10
13
- CURRENT_JUSTIFICATION = 10
14
- DESCRIPTION_JUSTIFICATION = 10
11
+ PROJECT_JUSTIFICATION = 15 + 10
12
+ DEFAULT_JUSTIFICATION = 10 + 10
13
+ CURRENT_JUSTIFICATION = 10 + 10
14
+ DESCRIPTION_JUSTIFICATION = 10 + 10
15
15
 
16
16
  DETAIL_HEADER_STRING = "#{'No.'.ljust(NO_JUSTIFICATION)} " \
17
17
  "#{'Project'.ljust(PROJECT_JUSTIFICATION)} " \
data/lib/dsu.rb CHANGED
@@ -20,19 +20,14 @@ Hash.include(ColorThemeMode)
20
20
  require_relative 'dsu/env'
21
21
  require 'pry-byebug' if Dsu.env.development?
22
22
 
23
- Dir.glob("#{__dir__}/dsu/**/*.rb").each do |file|
24
- require file
25
- end
23
+ Dir.glob("#{__dir__}/dsu/**/*.rb").each { |file| require file }
26
24
 
27
25
  unless Dsu.env.test? || Dsu.env.development?
28
- if Dsu::Migration::Service.run_migrations?
29
- begin
30
- Dsu::Migration::Service.new.call
31
- rescue StandardError => e
32
- puts I18n.t('migrations.error.failed', message: e.message)
33
- exit 1
34
- end
35
- end
36
-
37
- Dsu::Migration::Factory.migrate_if!(options: { pretend: false })
26
+ # NOTE: Add a new migration service to the array whenever a new migration is created.
27
+ options = { pretend: false }
28
+ migration_services = [
29
+ V20230613121411::Service.new(options: options),
30
+ V20240210161248::Service.new(options: options)
31
+ ]
32
+ Dsu::Migration::Migrator.migrate_if!(migration_services: migration_services)
38
33
  end
@@ -120,6 +120,10 @@ en:
120
120
  date:
121
121
  aliases: -d
122
122
  name: 'date'
123
+ date_or_mnemonic:
124
+ aliases: -d
125
+ name: 'date'
126
+ banner: 'DATE|MNEMONIC'
123
127
  today:
124
128
  aliases: -n
125
129
  name: 'today'
@@ -25,6 +25,5 @@ en:
25
25
  try_again: "Please try again. Valid options are [%{options}]."
26
26
  migrations:
27
27
  error:
28
+ missing_current_migration_service: "No migration service handles the current migration: %{migration_version}."
28
29
  failed: "Error running migrations: %{message}"
29
- information:
30
- theme_copied: Theme copied from %{from} to %{to}.
@@ -511,11 +511,11 @@ en:
511
511
 
512
512
  PROJECT_NAME
513
513
 
514
- The name of the project to create. PROJECT_NAME must be between 2 and 24 characters (inclusive) in length.
514
+ The name of the project to create. PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
515
515
 
516
516
  PROJECT_DESCRIPTION
517
517
 
518
- Optional. The description of the project. PROJECT_DESCRIPTION must be between 2 and 32 characters (inclusive) in length. If PROJECT_DESCRIPTION is not provided, the project description will be "<PROJECT_NAME> project" where <PROJECT_NAME> = the name of the project.
518
+ Optional. The description of the project. PROJECT_DESCRIPTION must be between 2 and 64 characters (inclusive) in length. If PROJECT_DESCRIPTION is not provided, the project description will be "<PROJECT_NAME> project" where <PROJECT_NAME> = the name of the project.
519
519
 
520
520
  EXAMPLES
521
521
 
@@ -553,11 +553,11 @@ en:
553
553
 
554
554
  PROJECT_NUMBER
555
555
 
556
- The number of the project to delete. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be used (see `dsu project list`).
556
+ The number of the project to delete. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be deleted (see `dsu project list`).
557
557
 
558
558
  NOTES
559
559
 
560
- PROJECT_NAME and PROJECT_NUMBER are optional. If neither are provided, the current, default project will be used.
560
+ PROJECT_NAME and PROJECT_NUMBER are optional. If neither are provided, the current, default project will be deleted.
561
561
 
562
562
  EXAMPLES
563
563
 
@@ -610,19 +610,19 @@ en:
610
610
 
611
611
  PROJECT_NAME
612
612
 
613
- The name of the project to create. PROJECT_NAME must be between 2 and 24 characters (inclusive) in length.
613
+ The name of the project to create. PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
614
614
 
615
615
  PROJECT_NUMBER
616
616
 
617
- The number of the project to rename. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be used (see `dsu project list`).
617
+ The number of the project to rename. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be renamed (see `dsu project list`).
618
618
 
619
619
  NEW_PROJECT_NAME
620
620
 
621
- The new name of the project. NEW_PROJECT_NAME must be between 2 and 24 characters (inclusive) in length.
621
+ The new name of the project. NEW_PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
622
622
 
623
623
  NEW_PROJECT_DESCRIPTION
624
624
 
625
- Optional. The description of the project. NEW_PROJECT_DESCRIPTION must be between 2 and 32 characters (inclusive) in length. If NEW_PROJECT_DESCRIPTION is not provided, the project description will be "<NEW_PROJECT_NAME> project" where <NEW_PROJECT_NAME> = the name of the project.
625
+ Optional. The description of the project. NEW_PROJECT_DESCRIPTION must be between 2 and 64 characters (inclusive) in length. If NEW_PROJECT_DESCRIPTION is not provided, the project description will be "<NEW_PROJECT_NAME> project" where <NEW_PROJECT_NAME> = the name of the project.
626
626
 
627
627
  EXAMPLES
628
628
 
@@ -648,14 +648,18 @@ en:
648
648
  - Y
649
649
  - n
650
650
  use:
651
- desc: use|u [PROJECT_NAME|PROJECT_NUMBER]
651
+ desc: use|u [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
652
652
  usage: Selects the DSU project to use, based on the given PROJECT_NAME or PROJECT_NUMBER
653
653
  long_desc: |
654
654
  Selects the DSU project to use, based on the given PROJECT_NAME or PROJECT_NUMBER.
655
655
 
656
- dsu project use [PROJECT_NAME|PROJECT_NUMBER]
656
+ dsu project use [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
657
657
 
658
- dsu p u [PROJECT_NAME|PROJECT_NUMBER]
658
+ dsu p u [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
659
+
660
+ OPTIONS:
661
+
662
+ -d|--default true|false (default: false): If true, the PROJECT_NAME|PROJECT_NUMBER will become the default project.
659
663
 
660
664
  PROJECT_NAME
661
665
 
@@ -688,6 +692,12 @@ en:
688
692
  $ dsu project use 2
689
693
 
690
694
  $ dsu p u 2
695
+
696
+ These will use "Project A" and make it the default project if it is not the default project.
697
+
698
+ $ dsu project use --default "Project A"
699
+
700
+ $ dsu p u -d "Project A"
691
701
  messages:
692
702
  using_project: Now using project "%{project_name}".
693
703
  prompts:
@@ -0,0 +1,3 @@
1
+ {
2
+ "version": 20230613121411
3
+ }
@@ -32,7 +32,7 @@
32
32
  "background": "default"
33
33
  },
34
34
  "footer": {
35
- "color": "light_default",
35
+ "color": "default",
36
36
  "mode": "default",
37
37
  "background": "default"
38
38
  },
@@ -42,7 +42,7 @@
42
42
  "background": "default"
43
43
  },
44
44
  "index": {
45
- "color": "light_default",
45
+ "color": "default",
46
46
  "mode": "italic",
47
47
  "background": "default"
48
48
  },
@@ -0,0 +1,4 @@
1
+ {
2
+ "version": 20240210161248,
3
+ "project_name": "default"
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "version": 20240210161248
3
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "version": 20240210161248,
3
+ "project_name": "default",
4
+ "description": "default project"
5
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "version": 20240210161248,
3
+ "description": "Cherry color theme",
4
+ "help": {
5
+ "color": "red",
6
+ "mode": "default",
7
+ "background": "default"
8
+ },
9
+ "dsu_header": {
10
+ "color": "white",
11
+ "mode": "bold",
12
+ "background": "red"
13
+ },
14
+ "dsu_footer": {
15
+ "color": "red",
16
+ "mode": "default",
17
+ "background": "default"
18
+ },
19
+ "header": {
20
+ "color": "red",
21
+ "mode": "bold",
22
+ "background": "default"
23
+ },
24
+ "subheader": {
25
+ "color": "red",
26
+ "mode": "underline",
27
+ "background": "default"
28
+ },
29
+ "body": {
30
+ "color": "red",
31
+ "mode": "default",
32
+ "background": "default"
33
+ },
34
+ "footer": {
35
+ "color": "light_red",
36
+ "mode": "default",
37
+ "background": "default"
38
+ },
39
+ "date": {
40
+ "color": "red",
41
+ "mode": "bold",
42
+ "background": "default"
43
+ },
44
+ "index": {
45
+ "color": "light_red",
46
+ "mode": "italic",
47
+ "background": "default"
48
+ },
49
+ "info": {
50
+ "color": "red",
51
+ "mode": "default",
52
+ "background": "default"
53
+ },
54
+ "success": {
55
+ "color": "red",
56
+ "mode": "default",
57
+ "background": "default"
58
+ },
59
+ "warning": {
60
+ "color": "yellow",
61
+ "mode": "default",
62
+ "background": "default"
63
+ },
64
+ "error": {
65
+ "color": "light_yellow",
66
+ "mode": "default",
67
+ "background": "red"
68
+ },
69
+ "prompt": {
70
+ "color": "red",
71
+ "mode": "bold",
72
+ "background": "default"
73
+ },
74
+ "prompt_options": {
75
+ "color": "white",
76
+ "mode": "bold",
77
+ "background": "default"
78
+ }
79
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "version": 20240210161248,
3
+ "description": "Christmas theme ho ho ho!",
4
+ "help": {
5
+ "color": "red",
6
+ "mode": "default",
7
+ "background": "default"
8
+ },
9
+ "dsu_header": {
10
+ "color": "white",
11
+ "mode": "bold",
12
+ "background": "red"
13
+ },
14
+ "dsu_footer": {
15
+ "color": "red",
16
+ "mode": "default",
17
+ "background": "default"
18
+ },
19
+ "header": {
20
+ "color": "light_green",
21
+ "mode": "bold",
22
+ "background": "red"
23
+ },
24
+ "subheader": {
25
+ "color": "red",
26
+ "mode": "underline",
27
+ "background": "default"
28
+ },
29
+ "body": {
30
+ "color": "red",
31
+ "mode": "italic",
32
+ "background": "default"
33
+ },
34
+ "footer": {
35
+ "color": "red",
36
+ "mode": "italic",
37
+ "background": "default"
38
+ },
39
+ "date": {
40
+ "color": "white",
41
+ "mode": "bold",
42
+ "background": "green"
43
+ },
44
+ "index": {
45
+ "color": "white",
46
+ "mode": "bold",
47
+ "background": "red"
48
+ },
49
+ "info": {
50
+ "color": "white",
51
+ "mode": "bold",
52
+ "background": "light_red"
53
+ },
54
+ "success": {
55
+ "color": "white",
56
+ "mode": "bold",
57
+ "background": "green"
58
+ },
59
+ "warning": {
60
+ "color": "default",
61
+ "mode": "bold",
62
+ "background": "yellow"
63
+ },
64
+ "error": {
65
+ "color": "light_yellow",
66
+ "mode": "default",
67
+ "background": "red"
68
+ },
69
+ "prompt": {
70
+ "color": "white",
71
+ "mode": "bold",
72
+ "background": "green"
73
+ },
74
+ "prompt_options": {
75
+ "color": "red",
76
+ "mode": "bold",
77
+ "background": "default"
78
+ }
79
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "version": 20240210161248,
3
+ "description": "Default color theme",
4
+ "help": {
5
+ "color": "cyan",
6
+ "mode": "default",
7
+ "background": "default"
8
+ },
9
+ "dsu_header": {
10
+ "color": "white",
11
+ "mode": "bold",
12
+ "background": "cyan"
13
+ },
14
+ "dsu_footer": {
15
+ "color": "cyan",
16
+ "mode": "default",
17
+ "background": "default"
18
+ },
19
+ "header": {
20
+ "color": "cyan",
21
+ "mode": "bold",
22
+ "background": "default"
23
+ },
24
+ "subheader": {
25
+ "color": "cyan",
26
+ "mode": "underline",
27
+ "background": "default"
28
+ },
29
+ "body": {
30
+ "color": "cyan",
31
+ "mode": "default",
32
+ "background": "default"
33
+ },
34
+ "footer": {
35
+ "color": "light_cyan",
36
+ "mode": "default",
37
+ "background": "default"
38
+ },
39
+ "date": {
40
+ "color": "cyan",
41
+ "mode": "bold",
42
+ "background": "default"
43
+ },
44
+ "index": {
45
+ "color": "light_cyan",
46
+ "mode": "default",
47
+ "background": "default"
48
+ },
49
+ "info": {
50
+ "color": "cyan",
51
+ "mode": "default",
52
+ "background": "default"
53
+ },
54
+ "success": {
55
+ "color": "green",
56
+ "mode": "default",
57
+ "background": "default"
58
+ },
59
+ "warning": {
60
+ "color": "yellow",
61
+ "mode": "default",
62
+ "background": "default"
63
+ },
64
+ "error": {
65
+ "color": "light_yellow",
66
+ "mode": "default",
67
+ "background": "red"
68
+ },
69
+ "prompt": {
70
+ "color": "cyan",
71
+ "mode": "bold",
72
+ "background": "default"
73
+ },
74
+ "prompt_options": {
75
+ "color": "white",
76
+ "mode": "bold",
77
+ "background": "default"
78
+ }
79
+ }