dev_suite 0.2.3 → 0.2.5
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +37 -0
- data/Gemfile +13 -6
- data/Gemfile.lock +9 -1
- data/README.md +66 -2
- data/dev_suite.gemspec +1 -0
- data/lib/dev_suite/cli/commands/base.rb +0 -30
- data/lib/dev_suite/cli/commands/tree.rb +29 -8
- data/lib/dev_suite/cli/commands/version.rb +1 -1
- data/lib/dev_suite/cli/main.rb +12 -9
- data/lib/dev_suite/dev_suite.rb +12 -0
- data/lib/dev_suite/directory_tree/config/config.rb +11 -0
- data/lib/dev_suite/directory_tree/config/configuration.rb +21 -0
- data/lib/dev_suite/directory_tree/config.rb +2 -11
- data/lib/dev_suite/directory_tree/directory_tree.rb +20 -0
- data/lib/dev_suite/directory_tree/renderer/base.rb +0 -6
- data/lib/dev_suite/directory_tree/renderer/simple.rb +3 -3
- data/lib/dev_suite/directory_tree/visualizer/base.rb +13 -0
- data/lib/dev_suite/directory_tree/visualizer/tree.rb +50 -0
- data/lib/dev_suite/directory_tree/visualizer.rb +14 -13
- data/lib/dev_suite/directory_tree.rb +1 -8
- data/lib/dev_suite/performance/analyzer.rb +1 -1
- data/lib/dev_suite/performance/config/config.rb +11 -0
- data/lib/dev_suite/performance/config/configuration.rb +30 -0
- data/lib/dev_suite/performance/config.rb +2 -10
- data/lib/dev_suite/performance/{reportor → reporter}/base.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/helpers/stat_mappings.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/helpers/table_builder.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/helpers.rb +1 -1
- data/lib/dev_suite/performance/{reportor → reporter}/simple.rb +1 -1
- data/lib/dev_suite/performance/reporter.rb +22 -0
- data/lib/dev_suite/performance.rb +1 -1
- data/lib/dev_suite/request_logger/adapter/adapter.rb +27 -0
- data/lib/dev_suite/request_logger/adapter/base.rb +17 -0
- data/lib/dev_suite/request_logger/adapter/net_http.rb +42 -0
- data/lib/dev_suite/request_logger/adapter.rb +9 -0
- data/lib/dev_suite/request_logger/config/config.rb +11 -0
- data/lib/dev_suite/request_logger/config/configuration.rb +24 -0
- data/lib/dev_suite/request_logger/config.rb +9 -0
- data/lib/dev_suite/request_logger/logger.rb +93 -0
- data/lib/dev_suite/request_logger/request_logger.rb +29 -0
- data/lib/dev_suite/request_logger.rb +7 -0
- data/lib/dev_suite/utils/color/color.rb +12 -0
- data/lib/dev_suite/utils/color/config/config.rb +13 -0
- data/lib/dev_suite/utils/color/config/configuration.rb +31 -0
- data/lib/dev_suite/utils/color/config.rb +2 -31
- data/lib/dev_suite/utils/color/strategy/theme.rb +6 -7
- data/lib/dev_suite/utils/color/strategy.rb +2 -4
- data/lib/dev_suite/utils/color.rb +1 -4
- data/lib/dev_suite/utils/construct/config/attribute/attribute.rb +15 -0
- data/lib/dev_suite/utils/construct/config/attribute/manager.rb +63 -0
- data/lib/dev_suite/utils/construct/config/attribute/resolver.rb +31 -0
- data/lib/dev_suite/utils/construct/config/attribute/validator.rb +55 -0
- data/lib/dev_suite/utils/construct/config/attribute.rb +13 -0
- data/lib/dev_suite/utils/construct/config/base.rb +20 -0
- data/lib/dev_suite/utils/construct/config/config.rb +24 -0
- data/lib/dev_suite/utils/construct/config/configuration.rb +13 -0
- data/lib/dev_suite/utils/construct/config/hook/hook.rb +13 -0
- data/lib/dev_suite/utils/construct/config/hook/manager.rb +36 -0
- data/lib/dev_suite/utils/construct/config/hook.rb +13 -0
- data/lib/dev_suite/utils/construct/config/initializer.rb +21 -0
- data/lib/dev_suite/utils/construct/config/manager.rb +33 -0
- data/lib/dev_suite/utils/construct/config/settings/base.rb +59 -0
- data/lib/dev_suite/utils/construct/config/settings/manager.rb +38 -0
- data/lib/dev_suite/utils/construct/config/settings/settings.rb +14 -0
- data/lib/dev_suite/utils/construct/config/settings.rb +13 -0
- data/lib/dev_suite/utils/construct/config.rb +11 -0
- data/lib/dev_suite/utils/construct/construct.rb +9 -0
- data/lib/dev_suite/utils/construct.rb +16 -0
- data/lib/dev_suite/utils/emoji.rb +71 -0
- data/lib/dev_suite/utils/error_handler.rb +24 -0
- data/lib/dev_suite/utils/file_loader/config/config.rb +13 -0
- data/lib/dev_suite/utils/file_loader/config/configuration.rb +33 -0
- data/lib/dev_suite/utils/file_loader/config.rb +11 -0
- data/lib/dev_suite/utils/file_loader/file_loader.rb +23 -0
- data/lib/dev_suite/utils/file_loader/loader/base.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/json.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/text.rb +21 -0
- data/lib/dev_suite/utils/file_loader/loader/yaml.rb +38 -0
- data/lib/dev_suite/utils/file_loader/loader.rb +41 -0
- data/lib/dev_suite/utils/file_loader/loader_manager.rb +34 -0
- data/lib/dev_suite/utils/file_loader/loader_registry.rb +36 -0
- data/lib/dev_suite/utils/file_loader.rb +9 -0
- data/lib/dev_suite/utils/logger.rb +58 -0
- data/lib/dev_suite/utils/path_matcher/matcher.rb +31 -0
- data/lib/dev_suite/utils/path_matcher/path_matcher.rb +17 -0
- data/lib/dev_suite/utils/path_matcher/pattern.rb +35 -0
- data/lib/dev_suite/utils/path_matcher.rb +9 -0
- data/lib/dev_suite/utils/table/config/config.rb +13 -0
- data/lib/dev_suite/utils/table/config/configuration.rb +32 -0
- data/lib/dev_suite/utils/table/config.rb +2 -23
- data/lib/dev_suite/utils/table/renderer/base.rb +0 -6
- data/lib/dev_suite/utils/table/renderer/simple.rb +9 -5
- data/lib/dev_suite/utils/table/renderer.rb +2 -2
- data/lib/dev_suite/utils/table/table.rb +6 -0
- data/lib/dev_suite/utils/table.rb +0 -6
- data/lib/dev_suite/utils/utils.rb +14 -0
- data/lib/dev_suite/utils.rb +1 -3
- data/lib/dev_suite/version.rb +1 -1
- data/lib/dev_suite.rb +1 -8
- metadata +72 -13
- data/lib/dev_suite/directory_tree/settings.rb +0 -29
- data/lib/dev_suite/performance/reportor.rb +0 -22
- data/lib/dev_suite/utils/config_tools/configuration.rb +0 -41
- data/lib/dev_suite/utils/config_tools/settings.rb +0 -75
- data/lib/dev_suite/utils/config_tools.rb +0 -10
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d90d0f33e4d0651dbc5ed388a62c7c0b3a665cb27db805631d8771245b21129e
|
|
4
|
+
data.tar.gz: e87b028766648877eea33d3c2910d3879510a50d4425fd9b19bf96212cb141a7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7a4fdb6138b2c9e75bafa923f095479827d58c229fdc60f2ae8c2b5e2a6a04f8e39c6ed27cf26ab3c53a62f606c5931c851698c1b577f6bdb1bad45289b344e
|
|
7
|
+
data.tar.gz: 1d10bd660e02d4100ee58fb7607626cfaf2ef714811a9407d25ae12f9fe71ae3ed9fd36d8b21de8bdba6b288223ed9a8b58ae22deb6e3ac297d24692e90ca86e
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
test:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
steps:
|
|
12
|
+
- name: Check out code
|
|
13
|
+
uses: actions/checkout@v2
|
|
14
|
+
|
|
15
|
+
- name: Set up Ruby
|
|
16
|
+
uses: ruby/setup-ruby@v1
|
|
17
|
+
with:
|
|
18
|
+
ruby-version: 3.0 # Specify your project's Ruby version
|
|
19
|
+
|
|
20
|
+
- name: Install dependencies
|
|
21
|
+
run: bundle install
|
|
22
|
+
|
|
23
|
+
- name: Run tests
|
|
24
|
+
env:
|
|
25
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
|
26
|
+
run: |
|
|
27
|
+
bundle exec rspec
|
|
28
|
+
|
|
29
|
+
- name: Upload coverage to Code Climate
|
|
30
|
+
env:
|
|
31
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
|
32
|
+
run: |
|
|
33
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
34
|
+
chmod +x ./cc-test-reporter
|
|
35
|
+
./cc-test-reporter before-build
|
|
36
|
+
bundle exec rspec
|
|
37
|
+
./cc-test-reporter after-build --exit-code $?
|
data/Gemfile
CHANGED
|
@@ -2,11 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# Use the gemspec method to include dependencies specified in the gemspec file
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
gem "
|
|
11
|
-
gem "
|
|
12
|
-
gem "
|
|
8
|
+
# Additional development tools not required as part of the gem's runtime
|
|
9
|
+
group :development, :test do
|
|
10
|
+
gem "rspec", "~> 3.9"
|
|
11
|
+
gem "simplecov", "~> 0.21"
|
|
12
|
+
gem "rake", "~> 13.0"
|
|
13
|
+
gem "pry", "~> 0.14"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
group :development do
|
|
17
|
+
gem "rubocop", "~> 1.65", require: false
|
|
18
|
+
gem "rubocop-shopify", "~> 2.15", require: false
|
|
19
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
dev_suite (0.2.
|
|
4
|
+
dev_suite (0.2.5)
|
|
5
5
|
benchmark (~> 0.1)
|
|
6
6
|
get_process_mem (~> 1.0)
|
|
7
7
|
thor (~> 1.1)
|
|
@@ -14,6 +14,7 @@ GEM
|
|
|
14
14
|
bigdecimal (3.1.8)
|
|
15
15
|
coderay (1.1.3)
|
|
16
16
|
diff-lcs (1.5.1)
|
|
17
|
+
docile (1.4.1)
|
|
17
18
|
ffi (1.17.0)
|
|
18
19
|
ffi (1.17.0-aarch64-linux-gnu)
|
|
19
20
|
ffi (1.17.0-aarch64-linux-musl)
|
|
@@ -73,6 +74,12 @@ GEM
|
|
|
73
74
|
rubocop-shopify (2.15.1)
|
|
74
75
|
rubocop (~> 1.51)
|
|
75
76
|
ruby-progressbar (1.13.0)
|
|
77
|
+
simplecov (0.22.0)
|
|
78
|
+
docile (~> 1.1)
|
|
79
|
+
simplecov-html (~> 0.11)
|
|
80
|
+
simplecov_json_formatter (~> 0.1)
|
|
81
|
+
simplecov-html (0.12.3)
|
|
82
|
+
simplecov_json_formatter (0.1.4)
|
|
76
83
|
strscan (3.1.0)
|
|
77
84
|
thor (1.3.1)
|
|
78
85
|
unicode-display_width (2.5.0)
|
|
@@ -97,6 +104,7 @@ DEPENDENCIES
|
|
|
97
104
|
rspec (~> 3.9)
|
|
98
105
|
rubocop (~> 1.65)
|
|
99
106
|
rubocop-shopify (~> 2.15)
|
|
107
|
+
simplecov (~> 0.21)
|
|
100
108
|
|
|
101
109
|
BUNDLED WITH
|
|
102
110
|
2.5.17
|
data/README.md
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://rubygems.org/gems/dev_suite)
|
|
4
4
|
[](https://rubygems.org/gems/dev_suite)
|
|
5
|
-
[](https://codeclimate.com/github/patrick204nqh/dev_suite/maintainability)
|
|
6
|
+
[](https://codeclimate.com/github/patrick204nqh/dev_suite/test_coverage)
|
|
6
7
|
[](https://sonarcloud.io/summary/overall?id=patrick204nqh_dev_suite)
|
|
7
8
|
[](https://depfu.com/github/patrick204nqh/dev_suite?project_id=44065)
|
|
8
9
|
[](https://snyk.io/test/github/patrick204nqh/dev_suite)
|
|
@@ -107,9 +108,19 @@ DevSuite also provides a command-line interface for various utilities. Below are
|
|
|
107
108
|
DevSuite also provides a command-line interface for directory tree visualization. Use the following command to print the directory tree of the specified path:
|
|
108
109
|
|
|
109
110
|
```sh
|
|
110
|
-
$ devsuite tree [PATH]
|
|
111
|
+
$ devsuite tree [PATH] [OPTIONS]
|
|
111
112
|
```
|
|
112
113
|
|
|
114
|
+
**CLI Options**:
|
|
115
|
+
|
|
116
|
+
Below is a table describing the available options for the `devsuite tree` command:
|
|
117
|
+
|
|
118
|
+
| Option | Description | Example Usage |
|
|
119
|
+
|-----------------|--------------------------------------------------|------------------------------------------------|
|
|
120
|
+
| `--depth`, `-d` | Limit the depth of the directory tree displayed. | `$ devsuite tree /path --depth 2` |
|
|
121
|
+
| `--skip-hidden` | Skip hidden files and directories. | `$ devsuite tree /path --skip-hidden` |
|
|
122
|
+
| `--skip-types` | Exclude files of specific types. | `$ devsuite tree /path --skip-types .log .tmp` |
|
|
123
|
+
|
|
113
124
|
**Configuration Guide**:
|
|
114
125
|
Customize the visualization by setting configuration options:
|
|
115
126
|
```ruby
|
|
@@ -142,6 +153,59 @@ DevSuite also provides a command-line interface for various utilities. Below are
|
|
|
142
153
|
```
|
|
143
154
|
</details>
|
|
144
155
|
|
|
156
|
+
### Request Logging
|
|
157
|
+
<details>
|
|
158
|
+
<summary>Show more</summary>
|
|
159
|
+
|
|
160
|
+
**Purpose**: The `RequestLogger` feature enables detailed logging of HTTP requests and responses across different adapters (e.g., `Net::HTTP`, `Faraday`). This can be useful for debugging, monitoring, and auditing API interactions.
|
|
161
|
+
|
|
162
|
+
**How to Use**:
|
|
163
|
+
```ruby
|
|
164
|
+
require 'dev_suite'
|
|
165
|
+
|
|
166
|
+
DevSuite::RequestLogger.with_logging do
|
|
167
|
+
# Make an HTTP request using Net::HTTP
|
|
168
|
+
uri = URI('https://jsonplaceholder.typicode.com/posts')
|
|
169
|
+
response = Net::HTTP.get(uri)
|
|
170
|
+
end
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Configuration Guide**:
|
|
174
|
+
Customize the request logging behavior by setting configuration options:
|
|
175
|
+
```ruby
|
|
176
|
+
DevSuite::RequestLogger.configure do |config|
|
|
177
|
+
config.adapters = [:net_http]
|
|
178
|
+
...
|
|
179
|
+
end
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Configuration Options**:
|
|
183
|
+
|
|
184
|
+
Below is a table describing the available configuration settings:
|
|
185
|
+
|
|
186
|
+
| Setting | Description | Example Values |
|
|
187
|
+
|----------------|----------------------------------------------------|------------------------------------|
|
|
188
|
+
| `:adapters` | List of adapters for which logging is enabled. | `[:net_http, :faraday]` |
|
|
189
|
+
<!-- | `:log_level` | Set the logging level (e.g., info, debug). | `:info`, `:debug`, `:warn`, `:error` |
|
|
190
|
+
| `:log_response` | Enable or disable response logging. | `true`, `false` |
|
|
191
|
+
| `:log_emoji` | Customize emojis for request and response logs. | `{ request: :globe, response: :envelope }` | -->
|
|
192
|
+
|
|
193
|
+
**Adapters Supported**:
|
|
194
|
+
|
|
195
|
+
The `RequestLogger` currently supports the following adapters:
|
|
196
|
+
|
|
197
|
+
| Adapter | Description | Example Usage |
|
|
198
|
+
|--------------|--------------------------------------------|---------------------------------------------------|
|
|
199
|
+
| `Net::HTTP` | Logs requests made with the Net::HTTP class.| `DevSuite::RequestLogger::Adapter::NetHttp.new(config)` |
|
|
200
|
+
<!-- | `Faraday` | Logs requests made with the Faraday gem. | `DevSuite::RequestLogger::Adapter::Faraday.new(config)` | -->
|
|
201
|
+
|
|
202
|
+
**Sample Output**:
|
|
203
|
+
```bash
|
|
204
|
+
[INFO] 🌐 Net::HTTP Request: GET http://example.com
|
|
205
|
+
[DEBUG] 📄 Net::HTTP Response: 200 OK
|
|
206
|
+
```
|
|
207
|
+
</details>
|
|
208
|
+
|
|
145
209
|
## Development
|
|
146
210
|
|
|
147
211
|
After checking out the repo, run `bin/setup`for an interactive prompt that will allow you to experiment.
|
data/dev_suite.gemspec
CHANGED
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
30
30
|
spec.require_paths = ["lib"]
|
|
31
31
|
|
|
32
|
+
# Runtime dependencies
|
|
32
33
|
spec.add_dependency("benchmark", "~> 0.1")
|
|
33
34
|
spec.add_dependency("get_process_mem", "~> 1.0")
|
|
34
35
|
spec.add_dependency("thor", "~> 1.1")
|
|
@@ -4,36 +4,6 @@ module DevSuite
|
|
|
4
4
|
module CLI
|
|
5
5
|
module Commands
|
|
6
6
|
class Base < Thor
|
|
7
|
-
no_commands do
|
|
8
|
-
# Log message to console
|
|
9
|
-
def log(message, level: :info)
|
|
10
|
-
case level
|
|
11
|
-
when :info
|
|
12
|
-
puts "[INFO] #{message}"
|
|
13
|
-
when :warn
|
|
14
|
-
puts "[WARNING] #{message}"
|
|
15
|
-
when :error
|
|
16
|
-
puts "[ERROR] #{message}"
|
|
17
|
-
when :debug
|
|
18
|
-
puts "[DEBUG] #{message}" if ENV["DEBUG_MODE"]
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Handle common errors
|
|
23
|
-
def handle_error(error)
|
|
24
|
-
log("Error: #{error.message}", level: :error)
|
|
25
|
-
exit(1)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Default method to load configuration
|
|
29
|
-
def load_config(file)
|
|
30
|
-
YAML.load_file(file)
|
|
31
|
-
rescue Errno::ENOENT
|
|
32
|
-
log("Configuration file not found: #{file}", level: :error)
|
|
33
|
-
exit(1)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
7
|
desc "execute", "Execute the command"
|
|
38
8
|
def execute
|
|
39
9
|
raise NotImplementedError
|
|
@@ -5,14 +5,35 @@ module DevSuite
|
|
|
5
5
|
module Commands
|
|
6
6
|
class Tree < Base
|
|
7
7
|
desc "visualize PATH", "Visualize the directory structure at given PATH"
|
|
8
|
-
def execute(path)
|
|
9
|
-
log("Starting visualization for: #{path}")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
def execute(path, options: {})
|
|
9
|
+
Utils::Logger.log("Starting visualization for: #{path}", emoji: :start)
|
|
10
|
+
|
|
11
|
+
apply_configure(options)
|
|
12
|
+
visualize(path)
|
|
13
|
+
|
|
14
|
+
Utils::Logger.log("Visualization complete!", emoji: :success)
|
|
15
|
+
rescue StandardError => e
|
|
16
|
+
Utils::ErrorHandler.handle_error(e)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def visualize(path)
|
|
22
|
+
DirectoryTree.visualize(path)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def apply_configure(options)
|
|
26
|
+
option_config_mapping = {
|
|
27
|
+
depth: :max_depth,
|
|
28
|
+
skip_hidden: :skip_hidden,
|
|
29
|
+
skip_types: :skip_types,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
DirectoryTree::Config.configure do |config|
|
|
33
|
+
option_config_mapping.each do |option_key, config_key|
|
|
34
|
+
value = options[option_key]
|
|
35
|
+
config.settings.set(config_key, value) if value
|
|
36
|
+
end
|
|
16
37
|
end
|
|
17
38
|
end
|
|
18
39
|
end
|
data/lib/dev_suite/cli/main.rb
CHANGED
|
@@ -4,8 +4,15 @@ module DevSuite
|
|
|
4
4
|
module CLI
|
|
5
5
|
class Main < Thor
|
|
6
6
|
desc "tree DIRECTORY", "Prints the directory tree"
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
method_option :depth, aliases: "-d", type: :numeric, desc: "Limit the depth of the directory tree displayed"
|
|
8
|
+
method_option :skip_hidden, type: :boolean, default: false, desc: "Skip hidden files and directories"
|
|
9
|
+
method_option :skip_types,
|
|
10
|
+
type: :array,
|
|
11
|
+
default: [],
|
|
12
|
+
banner: "TYPE1 TYPE2",
|
|
13
|
+
desc: "Exclude files of specific types"
|
|
14
|
+
def tree(path = ".")
|
|
15
|
+
execute_command(Commands::Tree, path, options: options)
|
|
9
16
|
end
|
|
10
17
|
|
|
11
18
|
desc "version", "Displays the version of the dev_suite gem"
|
|
@@ -15,14 +22,10 @@ module DevSuite
|
|
|
15
22
|
|
|
16
23
|
private
|
|
17
24
|
|
|
18
|
-
def execute_command(command_class, *args)
|
|
19
|
-
command_class.new.execute(*args)
|
|
25
|
+
def execute_command(command_class, *args, **kargs)
|
|
26
|
+
command_class.new.execute(*args, **kargs)
|
|
20
27
|
rescue StandardError => e
|
|
21
|
-
handle_error(e)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def handle_error(error)
|
|
25
|
-
puts "An error occurred: #{error.message}"
|
|
28
|
+
Utils::ErrorHandler.handle_error(e)
|
|
26
29
|
end
|
|
27
30
|
end
|
|
28
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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module DirectoryTree
|
|
5
|
+
module Config
|
|
6
|
+
class Configuration < BaseConfiguration
|
|
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
|
+
# Define configuration attributes
|
|
15
|
+
config_attr :builder, default_value: :base, type: :symbol, resolver: ->(value) { Builder.create(value) }
|
|
16
|
+
config_attr :renderer, default_value: :simple, type: :symbol, resolver: ->(value) { Renderer.create(value) }
|
|
17
|
+
config_attr :visualizer, default_value: :tree, type: :symbol, resolver: ->(value) { Visualizer.create(value) }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -2,17 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module DirectoryTree
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
attr_reader :settings, :builder, :renderer
|
|
9
|
-
|
|
10
|
-
def initialize(settings: {}, builder: :base, renderer: :simple)
|
|
11
|
-
@settings = Settings.new(settings)
|
|
12
|
-
@builder = Builder.create(builder)
|
|
13
|
-
@renderer = Renderer.create(renderer)
|
|
14
|
-
freeze # Make the instance of this class immutable as well
|
|
15
|
-
end
|
|
5
|
+
module Config
|
|
6
|
+
require_relative "config/config"
|
|
16
7
|
end
|
|
17
8
|
end
|
|
18
9
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module DirectoryTree
|
|
5
|
+
require "pathname"
|
|
6
|
+
|
|
7
|
+
require_relative "node"
|
|
8
|
+
require_relative "config"
|
|
9
|
+
require_relative "renderer"
|
|
10
|
+
require_relative "builder"
|
|
11
|
+
require_relative "visualizer"
|
|
12
|
+
|
|
13
|
+
class << self
|
|
14
|
+
def visualize(path)
|
|
15
|
+
visualizer = Config.configuration.visualizer
|
|
16
|
+
visualizer.visualize(path)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -40,15 +40,15 @@ module DevSuite
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def hidden_file_skipped?(node)
|
|
43
|
-
settings.skip_hidden
|
|
43
|
+
settings.get(:skip_hidden) && node.hidden?
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def filetype_skipped?(node)
|
|
47
|
-
node.file? && settings.skip_types.include?(::File.extname(node.name))
|
|
47
|
+
node.file? && settings.get(:skip_types).include?(::File.extname(node.name))
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def exceeds_max_depth?(depth)
|
|
51
|
-
max_depth = settings.max_depth
|
|
51
|
+
max_depth = settings.get(:max_depth)
|
|
52
52
|
max_depth && depth > max_depth
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module DirectoryTree
|
|
5
|
+
module Visualizer
|
|
6
|
+
class Tree < Base
|
|
7
|
+
# Visualizes the directory tree
|
|
8
|
+
# @param path [String] The base path of the directory
|
|
9
|
+
def visualize(path)
|
|
10
|
+
path = Pathname.new(path)
|
|
11
|
+
validate_path!(path)
|
|
12
|
+
validate_size!(path)
|
|
13
|
+
|
|
14
|
+
root = build_root_node(path)
|
|
15
|
+
output = render_output(root)
|
|
16
|
+
|
|
17
|
+
puts output
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def validate_path!(path)
|
|
23
|
+
raise ArgumentError, "Invalid path" unless path.exist?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def validate_size!(path)
|
|
27
|
+
config = Config.configuration
|
|
28
|
+
max_size = config.settings.get(:max_size)
|
|
29
|
+
raise ArgumentError, "Directory too large to render" if directory_size(path) > max_size
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def directory_size(path)
|
|
33
|
+
path.children.reduce(0) do |size, child|
|
|
34
|
+
size + (child.directory? ? directory_size(child) : child.size)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def build_root_node(path)
|
|
39
|
+
config = Config.configuration
|
|
40
|
+
config.builder.build(path)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def render_output(root)
|
|
44
|
+
config = Config.configuration
|
|
45
|
+
config.renderer.render(node: root)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -2,20 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module DirectoryTree
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
renderer = Config.configuration.renderer
|
|
11
|
-
puts renderer.render(node: root)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
5
|
+
module Visualizer
|
|
6
|
+
require "pathname"
|
|
7
|
+
|
|
8
|
+
require_relative "visualizer/base"
|
|
9
|
+
require_relative "visualizer/tree"
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
class << self
|
|
12
|
+
def create(type)
|
|
13
|
+
case type
|
|
14
|
+
when :tree
|
|
15
|
+
Tree.new
|
|
16
|
+
else
|
|
17
|
+
raise ArgumentError, "Unknown renderer type: #{type}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
end
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module DirectoryTree
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
require_relative "directory_tree/node"
|
|
8
|
-
require_relative "directory_tree/config"
|
|
9
|
-
require_relative "directory_tree/settings"
|
|
10
|
-
require_relative "directory_tree/renderer"
|
|
11
|
-
require_relative "directory_tree/builder"
|
|
12
|
-
require_relative "directory_tree/visualizer"
|
|
5
|
+
require_relative "directory_tree/directory_tree"
|
|
13
6
|
end
|
|
14
7
|
end
|
|
@@ -25,7 +25,7 @@ module DevSuite
|
|
|
25
25
|
# @param benchmark_result [Benchmark::Tms] The benchmark result
|
|
26
26
|
# @param memory_stats [Hash] The memory statistics
|
|
27
27
|
def generate_report(results)
|
|
28
|
-
Config.configuration.
|
|
28
|
+
Config.configuration.reporter.generate(
|
|
29
29
|
description: @description,
|
|
30
30
|
results: results,
|
|
31
31
|
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DevSuite
|
|
4
|
+
module Performance
|
|
5
|
+
module Config
|
|
6
|
+
class Configuration < BaseConfiguration
|
|
7
|
+
# Define configuration attributes
|
|
8
|
+
config_attr :profilers,
|
|
9
|
+
default_value: [:execution_time, :memory],
|
|
10
|
+
type: :array,
|
|
11
|
+
resolver: :resolve_profilers
|
|
12
|
+
|
|
13
|
+
config_attr :reporter,
|
|
14
|
+
default_value: :simple,
|
|
15
|
+
type: :symbol,
|
|
16
|
+
resolver: :resolve_reporter
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def resolve_profilers(value)
|
|
21
|
+
Profiler.create_multiple(value)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def resolve_reporter(value)
|
|
25
|
+
Reporter.create(value)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -2,16 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module DevSuite
|
|
4
4
|
module Performance
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
attr_reader :profilers, :reportor
|
|
9
|
-
|
|
10
|
-
def initialize(profilers: [:execution_time, :memory], reportor: :simple)
|
|
11
|
-
@profilers = Profiler.create_multiple(profilers)
|
|
12
|
-
@reportor = Reportor.create(reportor)
|
|
13
|
-
freeze # Make the instance of this class immutable
|
|
14
|
-
end
|
|
5
|
+
module Config
|
|
6
|
+
require_relative "config/config"
|
|
15
7
|
end
|
|
16
8
|
end
|
|
17
9
|
end
|