dev_suite 0.2.4 → 0.2.7

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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -5
  3. data/.vscode/extensions.json +8 -0
  4. data/.vscode/launch.json +39 -0
  5. data/.vscode/settings.json +28 -0
  6. data/Gemfile +6 -1
  7. data/Gemfile.lock +28 -2
  8. data/README.md +69 -8
  9. data/bin/rspec +27 -0
  10. data/dev_suite.gemspec +0 -4
  11. data/lib/dev_suite/cli/commands/base.rb +0 -2
  12. data/lib/dev_suite/cli/commands/tree.rb +3 -3
  13. data/lib/dev_suite/cli/commands/version.rb +1 -1
  14. data/lib/dev_suite/cli/main.rb +1 -1
  15. data/lib/dev_suite/dev_suite.rb +12 -0
  16. data/lib/dev_suite/directory_tree/builder/base.rb +1 -1
  17. data/lib/dev_suite/directory_tree/builder/builder.rb +13 -0
  18. data/lib/dev_suite/directory_tree/builder.rb +1 -12
  19. data/lib/dev_suite/directory_tree/config/config.rb +11 -0
  20. data/lib/dev_suite/directory_tree/config/configuration.rb +34 -0
  21. data/lib/dev_suite/directory_tree/config.rb +2 -36
  22. data/lib/dev_suite/directory_tree/directory_tree.rb +0 -3
  23. data/lib/dev_suite/directory_tree/node/node.rb +12 -0
  24. data/lib/dev_suite/directory_tree/node.rb +1 -4
  25. data/lib/dev_suite/directory_tree/renderer/base.rb +1 -7
  26. data/lib/dev_suite/directory_tree/renderer/renderer.rb +14 -0
  27. data/lib/dev_suite/directory_tree/renderer.rb +1 -13
  28. data/lib/dev_suite/directory_tree/visualizer/base.rb +1 -1
  29. data/lib/dev_suite/directory_tree/visualizer/visualizer.rb +16 -0
  30. data/lib/dev_suite/directory_tree/visualizer.rb +1 -15
  31. data/lib/dev_suite/performance/analyzer.rb +1 -1
  32. data/lib/dev_suite/performance/config/config.rb +11 -0
  33. data/lib/dev_suite/performance/config/configuration.rb +30 -0
  34. data/lib/dev_suite/performance/config.rb +2 -30
  35. data/lib/dev_suite/performance/data/data.rb +9 -0
  36. data/lib/dev_suite/performance/data.rb +1 -1
  37. data/lib/dev_suite/performance/profiler/base.rb +1 -1
  38. data/lib/dev_suite/performance/profiler/profiler.rb +16 -0
  39. data/lib/dev_suite/performance/profiler.rb +1 -20
  40. data/lib/dev_suite/performance/profiler_manager.rb +1 -0
  41. data/lib/dev_suite/performance/{reportor → reporter}/base.rb +2 -2
  42. data/lib/dev_suite/performance/{reportor → reporter}/helpers/stat_mappings.rb +1 -1
  43. data/lib/dev_suite/performance/{reportor → reporter}/helpers/table_builder.rb +1 -1
  44. data/lib/dev_suite/performance/{reportor → reporter}/helpers.rb +1 -1
  45. data/lib/dev_suite/performance/reporter/reporter.rb +15 -0
  46. data/lib/dev_suite/performance/{reportor → reporter}/simple.rb +1 -1
  47. data/lib/dev_suite/performance/reporter.rb +9 -0
  48. data/lib/dev_suite/performance.rb +1 -1
  49. data/lib/dev_suite/request_logger/adapter/adapter.rb +31 -0
  50. data/lib/dev_suite/request_logger/adapter/base.rb +17 -0
  51. data/lib/dev_suite/request_logger/adapter/faraday.rb +37 -0
  52. data/lib/dev_suite/request_logger/adapter/middleware/faraday.rb +22 -0
  53. data/lib/dev_suite/request_logger/adapter/net_http.rb +43 -0
  54. data/lib/dev_suite/request_logger/adapter.rb +9 -0
  55. data/lib/dev_suite/request_logger/config/config.rb +11 -0
  56. data/lib/dev_suite/request_logger/config/configuration.rb +24 -0
  57. data/lib/dev_suite/request_logger/config.rb +9 -0
  58. data/lib/dev_suite/request_logger/extractor/base.rb +17 -0
  59. data/lib/dev_suite/request_logger/extractor/extractor.rb +22 -0
  60. data/lib/dev_suite/request_logger/extractor/faraday.rb +37 -0
  61. data/lib/dev_suite/request_logger/extractor/net_http.rb +36 -0
  62. data/lib/dev_suite/request_logger/extractor.rb +9 -0
  63. data/lib/dev_suite/request_logger/logger.rb +87 -0
  64. data/lib/dev_suite/request_logger/request.rb +19 -0
  65. data/lib/dev_suite/request_logger/request_logger.rb +32 -0
  66. data/lib/dev_suite/request_logger/response.rb +28 -0
  67. data/lib/dev_suite/request_logger.rb +7 -0
  68. data/lib/dev_suite/utils/color/color.rb +12 -0
  69. data/lib/dev_suite/utils/color/config/config.rb +13 -0
  70. data/lib/dev_suite/utils/color/config/configuration.rb +31 -0
  71. data/lib/dev_suite/utils/color/config.rb +2 -31
  72. data/lib/dev_suite/utils/color/palette/base.rb +1 -14
  73. data/lib/dev_suite/utils/color/palette/palette.rb +16 -0
  74. data/lib/dev_suite/utils/color/palette.rb +1 -13
  75. data/lib/dev_suite/utils/color/strategy/base.rb +1 -1
  76. data/lib/dev_suite/utils/color/strategy/strategy.rb +20 -0
  77. data/lib/dev_suite/utils/color/strategy/theme.rb +6 -7
  78. data/lib/dev_suite/utils/color/strategy.rb +1 -21
  79. data/lib/dev_suite/utils/color.rb +1 -4
  80. data/lib/dev_suite/utils/construct/component/base.rb +30 -0
  81. data/lib/dev_suite/utils/construct/component/component.rb +12 -0
  82. data/lib/dev_suite/utils/construct/component/initializer.rb +28 -0
  83. data/lib/dev_suite/utils/construct/component/manager.rb +57 -0
  84. data/lib/dev_suite/utils/construct/component.rb +11 -0
  85. data/lib/dev_suite/utils/construct/config/attribute/attr_definition.rb +76 -0
  86. data/lib/dev_suite/utils/construct/config/attribute/attr_initialization.rb +22 -0
  87. data/lib/dev_suite/utils/construct/config/attribute/attr_resolving.rb +80 -0
  88. data/lib/dev_suite/utils/construct/config/attribute/attribute.rb +24 -0
  89. data/lib/dev_suite/utils/construct/config/attribute/validator.rb +55 -0
  90. data/lib/dev_suite/utils/construct/config/attribute.rb +13 -0
  91. data/lib/dev_suite/utils/construct/config/base.rb +25 -0
  92. data/lib/dev_suite/utils/construct/config/config.rb +16 -0
  93. data/lib/dev_suite/utils/construct/config/dependency_handler.rb +56 -0
  94. data/lib/dev_suite/utils/construct/config/hook/hook.rb +22 -0
  95. data/lib/dev_suite/utils/construct/config/hook/hook_registry.rb +24 -0
  96. data/lib/dev_suite/utils/construct/config/hook/hook_runner.rb +20 -0
  97. data/lib/dev_suite/utils/construct/config/hook/manager.rb +36 -0
  98. data/lib/dev_suite/utils/construct/config/hook.rb +13 -0
  99. data/lib/dev_suite/utils/construct/config/manager.rb +41 -0
  100. data/lib/dev_suite/utils/construct/config/settings/base.rb +59 -0
  101. data/lib/dev_suite/utils/construct/config/settings/manager.rb +38 -0
  102. data/lib/dev_suite/utils/construct/config/settings/settings.rb +14 -0
  103. data/lib/dev_suite/utils/construct/config/settings.rb +13 -0
  104. data/lib/dev_suite/utils/construct/config.rb +11 -0
  105. data/lib/dev_suite/utils/construct/construct.rb +10 -0
  106. data/lib/dev_suite/utils/construct.rb +16 -0
  107. data/lib/dev_suite/utils/dependency_loader.rb +71 -0
  108. data/lib/dev_suite/utils/emoji.rb +71 -0
  109. data/lib/dev_suite/utils/error_handler.rb +24 -0
  110. data/lib/dev_suite/utils/file_loader/config/config.rb +13 -0
  111. data/lib/dev_suite/utils/file_loader/config/configuration.rb +33 -0
  112. data/lib/dev_suite/utils/file_loader/config.rb +11 -0
  113. data/lib/dev_suite/utils/file_loader/file_loader.rb +23 -0
  114. data/lib/dev_suite/utils/file_loader/loader/base.rb +21 -0
  115. data/lib/dev_suite/utils/file_loader/loader/json.rb +21 -0
  116. data/lib/dev_suite/utils/file_loader/loader/loader.rb +41 -0
  117. data/lib/dev_suite/utils/file_loader/loader/text.rb +21 -0
  118. data/lib/dev_suite/utils/file_loader/loader/yaml.rb +38 -0
  119. data/lib/dev_suite/utils/file_loader/loader.rb +13 -0
  120. data/lib/dev_suite/utils/file_loader/loader_manager.rb +34 -0
  121. data/lib/dev_suite/utils/file_loader/loader_registry.rb +36 -0
  122. data/lib/dev_suite/utils/file_loader.rb +9 -0
  123. data/lib/dev_suite/utils/logger.rb +58 -0
  124. data/lib/dev_suite/utils/path_matcher/matcher.rb +31 -0
  125. data/lib/dev_suite/utils/path_matcher/path_matcher.rb +17 -0
  126. data/lib/dev_suite/utils/path_matcher/pattern.rb +35 -0
  127. data/lib/dev_suite/utils/path_matcher.rb +9 -0
  128. data/lib/dev_suite/utils/table/config/config.rb +13 -0
  129. data/lib/dev_suite/utils/table/config/configuration.rb +32 -0
  130. data/lib/dev_suite/utils/table/config.rb +2 -23
  131. data/lib/dev_suite/utils/table/formatter/formatter.rb +12 -0
  132. data/lib/dev_suite/utils/table/formatter.rb +1 -2
  133. data/lib/dev_suite/utils/table/renderer/base.rb +1 -7
  134. data/lib/dev_suite/utils/table/renderer/renderer.rb +16 -0
  135. data/lib/dev_suite/utils/table/renderer/simple.rb +9 -5
  136. data/lib/dev_suite/utils/table/renderer.rb +1 -13
  137. data/lib/dev_suite/utils/table/table.rb +6 -0
  138. data/lib/dev_suite/utils/table.rb +0 -6
  139. data/lib/dev_suite/utils/utils.rb +15 -0
  140. data/lib/dev_suite/utils.rb +1 -3
  141. data/lib/dev_suite/version.rb +3 -1
  142. data/lib/dev_suite.rb +1 -10
  143. metadata +101 -44
  144. data/lib/dev_suite/directory_tree/settings.rb +0 -18
  145. data/lib/dev_suite/emoji.rb +0 -33
  146. data/lib/dev_suite/error_handler.rb +0 -22
  147. data/lib/dev_suite/logger.rb +0 -56
  148. data/lib/dev_suite/performance/reportor.rb +0 -22
  149. data/lib/dev_suite/utils/config_tools/configuration.rb +0 -134
  150. data/lib/dev_suite/utils/config_tools/settings.rb +0 -67
  151. data/lib/dev_suite/utils/config_tools.rb +0 -10
  152. data/lib/dev_suite/utils/table/settings.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6765c4b9fa4637dafaac36da47cd8adf18652cd0d38804ddcd8641b851669f12
4
- data.tar.gz: 3a3b27ad8b9fa4319829175995b1d6ea999e9877d537b1316b531247d6bd4b53
3
+ metadata.gz: 1a7188e92386a13da83abc637b7446d68c485eff8e6e2198a53f88360ac13f02
4
+ data.tar.gz: f76c576284ba7b90bc671a389cd6e43065079f04ae19567b0e633a147e2b2276
5
5
  SHA512:
6
- metadata.gz: c2c9a91ccdfe89d997d66e8441d0b130dacc9edeb5fae6a3f949f1e25ff9aec09c41603597dbc7e017e9e3857c838e88182e4b670c220ea376d28934eb45c6e4
7
- data.tar.gz: 4f2e69b97a36b68eb84d2c808ede9072b6f333aebe7f2049d16dc7c55e99592604e9e7234b36471d8d84208fec05cfa27b8ce9b942e93d566159209d7fe652d2
6
+ metadata.gz: b565a159f2aee25115301ae629dcd2e44e844005586c2505e92cd18f75f9845a856c16f8db1c5a309eb249f645ba1e90b6c36ca4e0958f6106f39d0d86f7434a
7
+ data.tar.gz: 7a34933bf806f8e3fb09351b200698da8d6f5568fefc3054f7ba0591c939dc264b9962c77cd56b6f01e5304b2bb60e5301885f33f34b05bebd54858046cb1e73
data/.rubocop.yml CHANGED
@@ -5,13 +5,12 @@ AllCops:
5
5
  NewCops: enable
6
6
  TargetRubyVersion: 2.7
7
7
  Exclude:
8
+ - '.git/**/*'
8
9
  - 'bin/**/*'
9
- - 'db/schema.rb'
10
10
  - 'node_modules/**/*'
11
- - 'vendor/**/*'
12
- - 'spec/**/*'
13
- - 'test/**/*'
14
- - 'lib/dev_suite/version.rb'
11
+ - 'coverage/**/*'
12
+ - 'tmp/**/*'
13
+ - 'log/**/*'
15
14
 
16
15
  Metrics/LineLength:
17
16
  Max: 120
@@ -0,0 +1,8 @@
1
+ {
2
+ "recommendations": [
3
+ "Shopify.ruby-lsp",
4
+ "misogi.ruby-rubocop",
5
+ "KoichiSasada.vscode-rdbg",
6
+ "streetsidesoftware.code-spell-checker",
7
+ ]
8
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Debug all tests",
6
+ "type": "rdbg",
7
+ "request": "launch",
8
+ "useBundler": true,
9
+ "script": "${workspaceFolder}/bin/rspec",
10
+ "args": [
11
+ "--color",
12
+ "--require",
13
+ "rspec",
14
+ "--format",
15
+ "progress",
16
+ "${workspaceFolder}/spec"
17
+ ],
18
+ "useTerminal": false,
19
+ "env": { "DEBUG": "true" }
20
+ },
21
+ {
22
+ "name": "Debug current line",
23
+ "type": "rdbg",
24
+ "request": "launch",
25
+ "useBundler": true,
26
+ "script": "${workspaceFolder}/bin/rspec",
27
+ "args": [
28
+ "--color",
29
+ "--require",
30
+ "rspec",
31
+ "--format",
32
+ "progress",
33
+ "${file}:${lineNumber}"
34
+ ],
35
+ "useTerminal": false,
36
+ "env": { "DEBUG": "true" }
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "[ruby]": {
3
+ "editor.defaultFormatter": "Shopify.ruby-lsp", // Use the Ruby LSP as the default formatter
4
+ "editor.formatOnSave": true, // Format files automatically when saving
5
+ "editor.tabSize": 2, // Use 2 spaces for indentation
6
+ "editor.insertSpaces": true, // Use spaces and not tabs for indentation
7
+ "editor.semanticHighlighting.enabled": true, // Enable semantic highlighting
8
+ "editor.formatOnType": true // Enable formatting while typing
9
+ },
10
+ "rubyLsp.enabledFeatures": {
11
+ "codeActions": true,
12
+ "diagnostics": true,
13
+ "documentHighlights": true,
14
+ "documentLink": true,
15
+ "documentSymbols": true,
16
+ "foldingRanges": true,
17
+ "formatting": true,
18
+ "hover": true,
19
+ "inlayHint": true,
20
+ "onTypeFormatting": true,
21
+ "selectionRanges": true,
22
+ "semanticHighlighting": true,
23
+ "completion": true,
24
+ "codeLens": true
25
+ },
26
+ "rubyLsp.formatter": "rubocop", // Use RuboCop for formatting within Ruby LSP
27
+ "ruby.rubocop.configFilePath": ".rubocop.yml" // Use the .rubocop.yml file in the root of the project
28
+ }
data/Gemfile CHANGED
@@ -5,13 +5,18 @@ source "https://rubygems.org"
5
5
  # Use the gemspec method to include dependencies specified in the gemspec file
6
6
  gemspec
7
7
 
8
+ # Additional runtime dependencies
9
+ gem "faraday", "~> 1.4"
10
+
8
11
  # Additional development tools not required as part of the gem's runtime
9
12
  group :development, :test do
13
+ gem "rspec", "~> 3.9"
14
+ gem "simplecov", "~> 0.21"
10
15
  gem "rake", "~> 13.0"
11
- gem "pry", "~> 0.14"
12
16
  end
13
17
 
14
18
  group :development do
19
+ gem "pry", "~> 0.14"
15
20
  gem "rubocop", "~> 1.65", require: false
16
21
  gem "rubocop-shopify", "~> 2.15", require: false
17
22
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dev_suite (0.2.4)
4
+ dev_suite (0.2.7)
5
5
  benchmark (~> 0.1)
6
6
  get_process_mem (~> 1.0)
7
7
  thor (~> 1.1)
@@ -15,6 +15,29 @@ GEM
15
15
  coderay (1.1.3)
16
16
  diff-lcs (1.5.1)
17
17
  docile (1.4.1)
18
+ faraday (1.10.3)
19
+ faraday-em_http (~> 1.0)
20
+ faraday-em_synchrony (~> 1.0)
21
+ faraday-excon (~> 1.1)
22
+ faraday-httpclient (~> 1.0)
23
+ faraday-multipart (~> 1.0)
24
+ faraday-net_http (~> 1.0)
25
+ faraday-net_http_persistent (~> 1.0)
26
+ faraday-patron (~> 1.0)
27
+ faraday-rack (~> 1.0)
28
+ faraday-retry (~> 1.0)
29
+ ruby2_keywords (>= 0.0.4)
30
+ faraday-em_http (1.0.0)
31
+ faraday-em_synchrony (1.0.0)
32
+ faraday-excon (1.1.0)
33
+ faraday-httpclient (1.0.1)
34
+ faraday-multipart (1.0.4)
35
+ multipart-post (~> 2)
36
+ faraday-net_http (1.0.2)
37
+ faraday-net_http_persistent (1.2.0)
38
+ faraday-patron (1.0.0)
39
+ faraday-rack (1.0.0)
40
+ faraday-retry (1.0.3)
18
41
  ffi (1.17.0)
19
42
  ffi (1.17.0-aarch64-linux-gnu)
20
43
  ffi (1.17.0-aarch64-linux-musl)
@@ -32,6 +55,7 @@ GEM
32
55
  json (2.7.2)
33
56
  language_server-protocol (3.17.0.3)
34
57
  method_source (1.1.0)
58
+ multipart-post (2.4.1)
35
59
  parallel (1.25.1)
36
60
  parser (3.3.4.1)
37
61
  ast (~> 2.4.1)
@@ -43,7 +67,7 @@ GEM
43
67
  rainbow (3.1.1)
44
68
  rake (13.2.1)
45
69
  regexp_parser (2.9.2)
46
- rexml (3.3.4)
70
+ rexml (3.3.6)
47
71
  strscan
48
72
  rspec (3.13.0)
49
73
  rspec-core (~> 3.13.0)
@@ -74,6 +98,7 @@ GEM
74
98
  rubocop-shopify (2.15.1)
75
99
  rubocop (~> 1.51)
76
100
  ruby-progressbar (1.13.0)
101
+ ruby2_keywords (0.0.5)
77
102
  simplecov (0.22.0)
78
103
  docile (~> 1.1)
79
104
  simplecov-html (~> 0.11)
@@ -99,6 +124,7 @@ PLATFORMS
99
124
 
100
125
  DEPENDENCIES
101
126
  dev_suite!
127
+ faraday (~> 1.4)
102
128
  pry (~> 0.14)
103
129
  rake (~> 13.0)
104
130
  rspec (~> 3.9)
data/README.md CHANGED
@@ -57,15 +57,13 @@ DevSuite also provides a command-line interface for various utilities. Below are
57
57
  ## Features Overview
58
58
 
59
59
  ### Performance Analysis
60
+ Analyze the performance of Ruby code blocks, capturing metrics like execution time and memory usage.
61
+
60
62
  <details>
61
63
  <summary>Show more</summary>
62
64
 
63
- **Purpose**: Quickly analyze the performance of Ruby code blocks, capturing metrics like execution time and memory usage.
64
-
65
65
  **How to Use**:
66
66
  ```ruby
67
- require 'dev_suite'
68
-
69
67
  DevSuite::Performance.analyze(description: "Example Analysis") do
70
68
  sum = 0
71
69
  1_000_000.times { |i| sum += i }
@@ -88,15 +86,13 @@ DevSuite also provides a command-line interface for various utilities. Below are
88
86
  </details>
89
87
 
90
88
  ### Directory Tree Visualization
89
+ Visualize the file structure of directories and subdirectories to better understand project organization.
90
+
91
91
  <details>
92
92
  <summary>Show more</summary>
93
93
 
94
- **Purpose**: Visualize the file structure of directories and subdirectories to better understand project organization.
95
-
96
94
  **How to Use**:
97
95
  ```ruby
98
- require 'dev_suite'
99
-
100
96
  # Define the directory path
101
97
  base_path = "/path/to/your/directory"
102
98
 
@@ -153,6 +149,71 @@ DevSuite also provides a command-line interface for various utilities. Below are
153
149
  ```
154
150
  </details>
155
151
 
152
+ ### Request Logging
153
+ Log detailed HTTP requests and responses across different adapters like Net::HTTP and Faraday for debugging and monitoring
154
+
155
+ <details>
156
+ <summary>Show more</summary>
157
+
158
+ **How to Use**:
159
+ ```ruby
160
+ DevSuite::RequestLogger.with_logging do
161
+ # Make an HTTP request using Net::HTTP
162
+ uri = URI('https://jsonplaceholder.typicode.com/posts')
163
+ response = Net::HTTP.get(uri)
164
+ end
165
+ ```
166
+
167
+ **Configuration Guide**:
168
+ Customize the request logging behavior by setting configuration options:
169
+ ```ruby
170
+ DevSuite::RequestLogger::Config.configure do |config|
171
+ config.adapters = [:net_http]
172
+ config.settings.set(:log_level, :debug)
173
+ config.settings.set(:log_headers, true)
174
+ config.settings.set(:log_cookies, true)
175
+ config.settings.set(:log_body, true)
176
+ end
177
+ ```
178
+
179
+ **Configuration Options**:
180
+
181
+ Below is a table describing the general configuration options available:
182
+
183
+ | Setting | Description | Default Value | Example Values |
184
+ |----------------|-------------------------------------------------------|---------------|------------------------------------|
185
+ | `:adapters` | List of adapters for which logging is enabled. | `[:net_http]` | `[:net_http, :faraday]` |
186
+
187
+ **Settings Options**:
188
+
189
+ The `settings` key allows you to customize various logging behaviors. Below is a table describing these settings:
190
+
191
+ | Setting | Description | Default Value | Example Values |
192
+ |----------------|-------------------------------------------------------|---------------|------------------------------------|
193
+ | `:log_level` | Set the logging level. | `:debug` | `:info`, `:debug`, `:warn`, `:error` |
194
+ | `:log_headers` | Enable or disable logging of HTTP headers. | `true` | `true`, `false` |
195
+ | `:log_cookies` | Enable or disable logging of cookies. | `true` | `true`, `false` |
196
+ | `:log_body` | Enable or disable logging of HTTP bodies. | `true` | `true`, `false` |
197
+
198
+ **Sample Output**:
199
+ ```bash
200
+ [DEBUG] 🚀 Net::HTTP Request: GET https://jsonplaceholder.typicode.com/posts
201
+ [DEBUG] 📄 Headers: {"accept-encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "accept"=>"*/*", "user-agent"=>"Ruby", "host"=>"jsonplaceholder.typicode.com"}
202
+ [DEBUG] 🍪 Cookies: None
203
+ [DEBUG] ✅ Net::HTTP Response: 200 OK
204
+ [DEBUG] 📄 Headers: {"date"=>"Wed, 21 Aug 2024 10:33:59 GMT", "content-type"=>"application/json; charset=utf-8", "transfer-encoding"=>"chunked", "connection"=>"keep-alive", "report-to"=>"{\"group\":\"heroku-nel\",\"max_age\":3600,\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?ts=1723379558&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=LYnyHXQQqBH310%2FAbzjH0MN%2BaFoA6Ntqh94a3%2F5J54E%3D\"}]}", "reporting-endpoints"=>"heroku-nel=https://nel.heroku.com/reports?ts=1723379558&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=LYnyHXQQqBH310%2FAbzjH0MN%2BaFoA6Ntqh94a3%2F5J54E%3D", "nel"=>"{\"report_to\":\"heroku-nel\",\"max_age\":3600,\"success_fraction\":0.005,\"failure_fraction\":0.05,\"response_headers\":[\"Via\"]}", "x-powered-by"=>"Express", "x-ratelimit-limit"=>"1000", "x-ratelimit-remaining"=>"999", "x-ratelimit-reset"=>"1723379596", "vary"=>"Origin, Accept-Encoding", "access-control-allow-credentials"=>"true", "cache-control"=>"max-age=43200", "pragma"=>"no-cache", "expires"=>"-1", "x-content-type-options"=>"nosniff", "etag"=>"W/\"6b80-Ybsq/K6GwwqrYkAsFxqDXGC7DoM\"", "via"=>"1.1 vegur", "cf-cache-status"=>"HIT", "age"=>"4620", "server"=>"cloudflare", "cf-ray"=>"8b69f7d4ad941fa4-HKG", "alt-svc"=>"h3=\":443\"; ma=86400"}
205
+ [DEBUG] 💻 Response Body: [
206
+ {
207
+ "userId": 1,
208
+ "id": 1,
209
+ "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
210
+ "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
211
+ },
212
+ ...
213
+ ]
214
+ ```
215
+ </details>
216
+
156
217
  ## Development
157
218
 
158
219
  After checking out the repo, run `bin/setup`for an interactive prompt that will allow you to experiment.
data/bin/rspec ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("rspec-core", "rspec")
data/dev_suite.gemspec CHANGED
@@ -33,8 +33,4 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency("benchmark", "~> 0.1")
34
34
  spec.add_dependency("get_process_mem", "~> 1.0")
35
35
  spec.add_dependency("thor", "~> 1.1")
36
-
37
- # Development dependencies
38
- spec.add_development_dependency("rspec", "~> 3.9")
39
- spec.add_development_dependency("simplecov", "~> 0.21")
40
36
  end
@@ -4,8 +4,6 @@ module DevSuite
4
4
  module CLI
5
5
  module Commands
6
6
  class Base < Thor
7
- include ErrorHandler
8
-
9
7
  desc "execute", "Execute the command"
10
8
  def execute
11
9
  raise NotImplementedError
@@ -6,14 +6,14 @@ module DevSuite
6
6
  class Tree < Base
7
7
  desc "visualize PATH", "Visualize the directory structure at given PATH"
8
8
  def execute(path, options: {})
9
- Logger.log("Starting visualization for: #{path}", emoji: :start)
9
+ Utils::Logger.log("Starting visualization for: #{path}", emoji: :start)
10
10
 
11
11
  apply_configure(options)
12
12
  visualize(path)
13
13
 
14
- Logger.log("Visualization complete!", emoji: :success)
14
+ Utils::Logger.log("Visualization complete!", emoji: :success)
15
15
  rescue StandardError => e
16
- ErrorHandler.handle_error(e)
16
+ Utils::ErrorHandler.handle_error(e)
17
17
  end
18
18
 
19
19
  private
@@ -5,7 +5,7 @@ module DevSuite
5
5
  module Commands
6
6
  class Version < Base
7
7
  def execute
8
- Logger.log("DevSuite version: #{DevSuite::VERSION} is live!", emoji: :start)
8
+ Utils::Logger.log("DevSuite version: #{DevSuite::VERSION} is live!", emoji: :start)
9
9
  end
10
10
  end
11
11
  end
@@ -25,7 +25,7 @@ module DevSuite
25
25
  def execute_command(command_class, *args, **kargs)
26
26
  command_class.new.execute(*args, **kargs)
27
27
  rescue StandardError => e
28
- ErrorHandler.handle_error(e)
28
+ Utils::ErrorHandler.handle_error(e)
29
29
  end
30
30
  end
31
31
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ require_relative "version"
5
+ require_relative "utils"
6
+ require_relative "cli"
7
+ require_relative "performance"
8
+ require_relative "directory_tree"
9
+ require_relative "request_logger"
10
+
11
+ class Error < StandardError; end
12
+ end
@@ -3,7 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Builder
6
- class Base
6
+ class Base < Utils::Construct::Component::Base
7
7
  #
8
8
  # Recursive method to build the tree
9
9
  #
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Builder
6
+ include Utils::Construct::Component::Manager
7
+
8
+ require_relative "base"
9
+
10
+ register_component(Base)
11
+ end
12
+ end
13
+ end
@@ -3,18 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Builder
6
- require_relative "builder/base"
7
-
8
- class << self
9
- def create(type)
10
- case type
11
- when :base
12
- Base.new
13
- else
14
- raise ArgumentError, "Unknown renderer type: #{type}"
15
- end
16
- end
17
- end
6
+ require_relative "builder/builder"
18
7
  end
19
8
  end
20
9
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Config
6
+ include Utils::Construct::Config::Manager
7
+
8
+ require_relative "configuration"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Config
6
+ class Configuration < Utils::Construct::Config::Base
7
+ set_default_settings(
8
+ skip_hidden: false,
9
+ skip_types: [],
10
+ max_depth: nil,
11
+ max_size: 100 * 1024 * 1024, # 100 MB
12
+ )
13
+
14
+ config_attr :builder, default_value: :base, type: :symbol, resolver: :resolve_builder
15
+ config_attr :renderer, default_value: :simple, type: :symbol, resolver: :resolve_renderer
16
+ config_attr :visualizer, default_value: :tree, type: :symbol, resolver: :resolve_visualizer
17
+
18
+ private
19
+
20
+ def resolve_builder(value)
21
+ Builder.build_component(value)
22
+ end
23
+
24
+ def resolve_renderer(value)
25
+ Renderer.build_component(value)
26
+ end
27
+
28
+ def resolve_visualizer(value)
29
+ Visualizer.build_component(value)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,42 +2,8 @@
2
2
 
3
3
  module DevSuite
4
4
  module DirectoryTree
5
- class Config
6
- include Utils::ConfigTools::Configuration
7
-
8
- # Define configuration attributes
9
- config_attr :settings, default_value: {}
10
- config_attr :builder, default_value: :base
11
- config_attr :renderer, default_value: :simple
12
- config_attr :visualizer, default_value: :tree
13
-
14
- private
15
-
16
- def validate_attr!(attr, value)
17
- case attr
18
- when :settings
19
- validate_hash!(attr, value)
20
- when :builder, :renderer, :visualizer
21
- validate_symbol!(attr, value)
22
- else
23
- raise ArgumentError, "Invalid attribute: #{attr}"
24
- end
25
- end
26
-
27
- def resolve_attr(attr, value)
28
- case attr
29
- when :settings
30
- Settings.new(value)
31
- when :builder
32
- Builder.create(value)
33
- when :renderer
34
- Renderer.create(value)
35
- when :visualizer
36
- Visualizer.create(value)
37
- else
38
- super # Return the value directly if no special resolution is needed
39
- end
40
- end
5
+ module Config
6
+ require_relative "config/config"
41
7
  end
42
8
  end
43
9
  end
@@ -2,11 +2,8 @@
2
2
 
3
3
  module DevSuite
4
4
  module DirectoryTree
5
- require "pathname"
6
-
7
5
  require_relative "node"
8
6
  require_relative "config"
9
- require_relative "settings"
10
7
  require_relative "renderer"
11
8
  require_relative "builder"
12
9
  require_relative "visualizer"
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Node
6
+ require_relative "base"
7
+ require_relative "file"
8
+ require_relative "directory"
9
+ require_relative "permission_denied"
10
+ end
11
+ end
12
+ end
@@ -3,10 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Node
6
- require_relative "node/base"
7
- require_relative "node/file"
8
- require_relative "node/directory"
9
- require_relative "node/permission_denied"
6
+ require_relative "node/node"
10
7
  end
11
8
  end
12
9
  end
@@ -3,13 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Renderer
6
- class Base
7
- attr_reader :settings
8
-
9
- def initialize(settings: Settings.new)
10
- @settings = settings
11
- end
12
-
6
+ class Base < Utils::Construct::Component::Base
13
7
  def render
14
8
  raise NotImplementedError
15
9
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Renderer
6
+ include Utils::Construct::Component::Manager
7
+
8
+ require_relative "base"
9
+ require_relative "simple"
10
+
11
+ register_component(Simple)
12
+ end
13
+ end
14
+ end
@@ -3,19 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Renderer
6
- require_relative "renderer/base"
7
- require_relative "renderer/simple"
8
-
9
- class << self
10
- def create(type)
11
- case type
12
- when :simple
13
- Simple.new
14
- else
15
- raise ArgumentError, "Unknown renderer type: #{type}"
16
- end
17
- end
18
- end
6
+ require_relative "renderer/renderer"
19
7
  end
20
8
  end
21
9
  end
@@ -3,7 +3,7 @@
3
3
  module DevSuite
4
4
  module DirectoryTree
5
5
  module Visualizer
6
- class Base
6
+ class Base < Utils::Construct::Component::Base
7
7
  def visualize(path)
8
8
  raise NotImplementedError, "You must implement #{self.class}##{__method}"
9
9
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module DirectoryTree
5
+ module Visualizer
6
+ include Utils::Construct::Component::Manager
7
+
8
+ require "pathname"
9
+
10
+ require_relative "base"
11
+ require_relative "tree"
12
+
13
+ register_component(Tree)
14
+ end
15
+ end
16
+ end