monoz 0.4.0 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +46 -25
- data/lib/monoz/services/run_service.rb +73 -5
- data/lib/monoz/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8690b4b3d6adc785adfa22b77c24f72fb2524aa57f337b9d58723b29d9c95e37
|
4
|
+
data.tar.gz: ffce67da4773d0a25c7c0844fcbe35e5ee21b6e8aff7ada1541e5cf7fdaf6feb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf09e686e3baddbe8bb618d7372044f0d862a0cbe2b2f787490d98b8d5dce1f40d0c78891c4a910c1d162c3998586d9d96e24671c49a8ea6f23b54d6a4f4fe2d
|
7
|
+
data.tar.gz: 21015ca0dbdf5b9ac345043415156003c1ed02e46244b0ca6f20858a8d9b9d99d35060d6f23a4f44ca9076c2ece7f6868466b0a73bbe660336de79284340f95d
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Monoz is a command-line tool that helps you manage your **ruby** monorepo. It provides an easy way to manage multiple related **ruby** projects and their dependencies in a single repository. Monoz helps you keep track of your projects and their interdependencies, making it easier to maintain and scale your codebase.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Getting started
|
6
6
|
|
7
7
|
You can install Monoz by running the following command:
|
8
8
|
|
@@ -10,8 +10,6 @@ You can install Monoz by running the following command:
|
|
10
10
|
$ gem install monoz
|
11
11
|
```
|
12
12
|
|
13
|
-
## Getting started
|
14
|
-
|
15
13
|
To initialize a Monoz repository in the current directory, simply run:
|
16
14
|
|
17
15
|
```console
|
@@ -29,7 +27,9 @@ This will create a new Monoz repo with the following structure:
|
|
29
27
|
└── monoz.yml
|
30
28
|
```
|
31
29
|
|
32
|
-
|
30
|
+
## Projects
|
31
|
+
|
32
|
+
### Add a project
|
33
33
|
|
34
34
|
Once you've initialized your Monoz repository, you can start adding projects to it.
|
35
35
|
|
@@ -72,6 +72,13 @@ To update the dependencies of all projects in the Monoz repository, simply run:
|
|
72
72
|
|
73
73
|
```console
|
74
74
|
$ monoz bundle update
|
75
|
+
|
76
|
+
kiqr_core: bundle update ✓
|
77
|
+
content_api: bundle update ✓
|
78
|
+
core_api: bundle update ✓
|
79
|
+
kiqr_cloud: bundle update ✓
|
80
|
+
|
81
|
+
The command ran successfully in all projects without any errors.
|
75
82
|
```
|
76
83
|
|
77
84
|
Note that when you add a new dependency to a project, you'll need to run `monoz bundle` to update its `Gemfile.lock` file before you can use the new dependency. Similarly, if you update the dependencies of a project's `Gemfile`, you'll need to run `monoz bundle` to update its `Gemfile.lock` file with the new versions.
|
@@ -95,6 +102,27 @@ Error: The command bundle exec rubocop failed to run in one or more project dire
|
|
95
102
|
|
96
103
|
This will execute the `bundle exec rubocop` command in each project directory, ensuring that all the necessary dependencies are installed and loaded for each project. Similarly, you can run other bundler commands such as `bundle install`, `bundle update`, and so on, by appending the desired arguments to the `monoz bundle` command.
|
97
104
|
|
105
|
+
### List projects
|
106
|
+
|
107
|
+
You can inspect the projects in your Monoz repository using the `monoz projects` command. This command will display a table that shows the projects in the repository, their type (app or gem), the gem name (if it's a gem), the test framework(s) used, and the projects that depend on them.
|
108
|
+
|
109
|
+
Here's an example output of the `monoz projects` command:
|
110
|
+
|
111
|
+
```console
|
112
|
+
$ monoz projects
|
113
|
+
|
114
|
+
o---------------o--------o-------------o---------------------o-------------------------------------o
|
115
|
+
| Project | Type | Gem Name | Test Framework(s) | Dependants |
|
116
|
+
o---------------o--------o-------------o---------------------o-------------------------------------o
|
117
|
+
| content_api | app | | rspec | |
|
118
|
+
| core_api | app | | rspec | |
|
119
|
+
| kiqr_cloud | app | | rspec | |
|
120
|
+
| kiqr_core | gem | kiqr_core | rspec | content_api, core_api, kiqr_cloud |
|
121
|
+
o---------------o--------o-------------o---------------------o-------------------------------------o
|
122
|
+
```
|
123
|
+
|
124
|
+
## Runing commands
|
125
|
+
|
98
126
|
### Running commands in projects
|
99
127
|
|
100
128
|
You can run any command in all projects of your Monoz repository using the `monoz run` command. Simply provide the command you want to run as an argument, and Monoz will execute it in each project directory.
|
@@ -144,20 +172,32 @@ example_com: bin/dev
|
|
144
172
|
23:41:06 css.1 | Done in 354ms.
|
145
173
|
```
|
146
174
|
|
147
|
-
###
|
175
|
+
### Filtering projects
|
148
176
|
|
149
177
|
The `--filter` option in Monoz allows you to select certain projects based on specific criteria. This is useful if you only want to run a command on a specific subset of projects, rather than all of them. To use the `--filter` option, you simply specify a filter expression after the option. The filter expression is a comma-separated list of keywords that match the project names or tags in your Monoz configuration.
|
150
178
|
|
151
|
-
For example, suppose you have a Monoz configuration with several projects, some of which are tagged as **apps** and some of which are tagged as **gems**. You can use the
|
179
|
+
For example, suppose you have a Monoz configuration with several projects, some of which are tagged as **apps** and some of which are tagged as **gems**. You can use the `--filter` option to select only the **apps** projects by running the following command:
|
152
180
|
|
153
181
|
```console
|
154
182
|
$ monoz bundle --filter=apps
|
183
|
+
|
184
|
+
content_api: bundle ✓
|
185
|
+
core_api: bundle ✓
|
186
|
+
kiqr_cloud: bundle ✓
|
187
|
+
|
188
|
+
The command ran successfully in all project directories without any errors.
|
155
189
|
```
|
156
190
|
|
157
191
|
Similarly, if you only want to list only gem projects, you can use the following command:
|
158
192
|
|
159
193
|
```console
|
160
194
|
$ monoz projects --filter=gems
|
195
|
+
|
196
|
+
o-------------o--------o-------------o----------------------o-------------------------------------o
|
197
|
+
| Project | Type | Gem name | Found Framework(s) | Dependants |
|
198
|
+
o-------------o--------o-------------o----------------------o-------------------------------------o
|
199
|
+
| kiqr_core | gem | kiqr_core | rspec | content_api, core_api, kiqr_cloud |
|
200
|
+
o-------------o--------o-------------o----------------------o-------------------------------------o
|
161
201
|
```
|
162
202
|
|
163
203
|
You can also use multiple keywords in the filter expression to select projects that match any of the keywords. For example, to run the `mrsk deploy` command on all **apps** and **apis** projects, you can use the following command:
|
@@ -172,25 +212,6 @@ Finally, you can also specify individual project names in the filter expression.
|
|
172
212
|
$ monoz run rubocop --filter="gem1,gem2"
|
173
213
|
```
|
174
214
|
|
175
|
-
### List projects
|
176
|
-
|
177
|
-
You can inspect the projects in your Monoz repository using the `monoz projects` command. This command will display a table that shows the projects in the repository, their type (app or gem), the gem name (if it's a gem), the test framework(s) used, and the projects that depend on them.
|
178
|
-
|
179
|
-
Here's an example output of the `monoz projects` command:
|
180
|
-
|
181
|
-
```console
|
182
|
-
$ monoz projects
|
183
|
-
|
184
|
-
o---------------o--------o-------------o---------------------o-------------------------------------o
|
185
|
-
| Project | Type | Gem Name | Test Framework(s) | Dependants |
|
186
|
-
o---------------o--------o-------------o---------------------o-------------------------------------o
|
187
|
-
| content_api | app | | rspec | |
|
188
|
-
| core_api | app | | rspec | |
|
189
|
-
| kiqr_cloud | app | | rspec | |
|
190
|
-
| kiqr_core | gem | kiqr_core | rspec | content_api, core_api, kiqr_cloud |
|
191
|
-
o---------------o--------o-------------o---------------------o-------------------------------------o
|
192
|
-
```
|
193
|
-
|
194
215
|
## Contributing
|
195
216
|
We welcome contributions from everyone! If you're interested in contributing to Monoz, please check out our contributing guidelines for more information.
|
196
217
|
|
@@ -5,6 +5,67 @@ require "fileutils"
|
|
5
5
|
require "open3"
|
6
6
|
|
7
7
|
module Monoz
|
8
|
+
class Spinner
|
9
|
+
include Thor::Shell
|
10
|
+
|
11
|
+
def initialize(message, prefix: nil)
|
12
|
+
@spinner = nil
|
13
|
+
@message = message
|
14
|
+
@prefix = prefix
|
15
|
+
end
|
16
|
+
|
17
|
+
def start
|
18
|
+
@spinner = main
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def success!
|
23
|
+
@spinner.kill
|
24
|
+
say_formatted(" \u2713 ", [:bold, :green])
|
25
|
+
say() # line break
|
26
|
+
end
|
27
|
+
|
28
|
+
def error!
|
29
|
+
@spinner.kill
|
30
|
+
say_formatted(" \u2717 ", [:bold, :red])
|
31
|
+
say() # line break
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def reset
|
36
|
+
say("\r", nil, false)
|
37
|
+
end
|
38
|
+
|
39
|
+
def say_formatted(suffix, suffix_formatting = nil)
|
40
|
+
if @prefix != nil
|
41
|
+
say "\r[#{@prefix}] ", [:blue, :bold], nil
|
42
|
+
say @message, nil, false
|
43
|
+
say suffix, suffix_formatting, false
|
44
|
+
else
|
45
|
+
say "\r#{@message}", nil, false
|
46
|
+
say suffix, suffix_formatting, false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def main
|
51
|
+
spinner_count = 0
|
52
|
+
|
53
|
+
Thread.new do
|
54
|
+
loop do
|
55
|
+
dots = case spinner_count % 3
|
56
|
+
when 0 then "."
|
57
|
+
when 1 then ".."
|
58
|
+
when 2 then "..."
|
59
|
+
end
|
60
|
+
|
61
|
+
say_formatted(dots)
|
62
|
+
spinner_count += 1
|
63
|
+
sleep(0.5)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
8
69
|
module Services
|
9
70
|
class RunService < Monoz::Services::BaseService
|
10
71
|
attr_reader :errors, :warnings
|
@@ -40,17 +101,24 @@ module Monoz
|
|
40
101
|
end
|
41
102
|
|
42
103
|
@projects.each do |project|
|
43
|
-
say "#{project.name}: ", [:bold, :blue]
|
44
|
-
Monoz.tty? ? say(command.join(" ")) : say("#{command.join(" ")} ")
|
104
|
+
# say "#{project.name}: ", [:bold, :blue]
|
105
|
+
# Monoz.tty? ? say(command.join(" ")) : say("#{command.join(" ")} ")
|
106
|
+
|
107
|
+
if Monoz.tty?
|
108
|
+
say "[#{project.name}] ", [:blue, :bold], nil
|
109
|
+
say command.join(" ")
|
110
|
+
else
|
111
|
+
spinner = Monoz::Spinner.new(command.join(" "), prefix: project.name).start
|
112
|
+
end
|
45
113
|
|
46
114
|
response = run_commands_in_project(project, *command)
|
47
115
|
|
48
116
|
if response.success?
|
49
|
-
|
117
|
+
spinner.success! unless Monoz.tty?
|
50
118
|
else
|
51
|
-
|
119
|
+
spinner.error! unless Monoz.tty?
|
52
120
|
say response.output
|
53
|
-
say ""
|
121
|
+
say "" # line break
|
54
122
|
@errors << {
|
55
123
|
project: project.name,
|
56
124
|
command: command.join(" "),
|
data/lib/monoz/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monoz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kjellberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|