mani 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +15 -0
- data/LICENSE +16 -23
- data/README.md +4 -5
- data/examples/chording.rb +2 -2
- data/examples/hello.rb +1 -1
- data/examples/workspace_initializer.rb +24 -15
- data/lib/mani/tokenizer.rb +4 -4
- data/lib/mani/version.rb +1 -1
- data/mani.gemspec +4 -4
- data/spec/lib/tokenizer_spec.rb +20 -20
- metadata +10 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 248edfb40ba571b80bebfae697eaef292df540d27c687bad2ed6849291359bcc
|
4
|
+
data.tar.gz: 7c0b0a77e213473a24f65115c099a45d3902a15106a804ab9a1de9c242bfd6c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 305a2cce7a56e7a23c4c911e55558ac008eb4667ee872deb96eef1313511f9067605635c372740efed02dd9719a959ebd14f67d1183ac5322689adfbc2729d7c
|
7
|
+
data.tar.gz: b6845503ea060fa5e151dcb9f9e48a06d033c9a3fc81b2ca37fbae053c5ef9032d4edd377aff3438e2b4eab7b15a6c67a64f70486a09745bfa420829556a012e
|
data/.rubocop.yml
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
|
4
|
+
Metrics/AbcSize:
|
5
|
+
Max: 23
|
6
|
+
|
1
7
|
Metrics/CyclomaticComplexity:
|
2
8
|
Max: 8
|
3
9
|
|
@@ -6,3 +12,12 @@ Metrics/PerceivedComplexity:
|
|
6
12
|
|
7
13
|
Metrics/MethodLength:
|
8
14
|
Max: 18
|
15
|
+
|
16
|
+
Style/FrozenStringLiteralComment:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Style/MutableConstant:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Style/SignalException:
|
23
|
+
Enabled: false
|
data/LICENSE
CHANGED
@@ -1,26 +1,19 @@
|
|
1
|
-
Copyright
|
1
|
+
Copyright 2014-2021 xcip <xcip@protonmail.com>
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
5
|
+
the Software without restriction, including without limitation the rights to
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8
|
+
so, subject to the following conditions:
|
5
9
|
|
6
|
-
|
7
|
-
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
8
12
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
21
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
22
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
23
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
24
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
25
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ visiting websites, and typing text) can be scripted using a simple Ruby DSL.
|
|
6
6
|
While [xmonad](http://xmonad.org/) is currently the only supported window
|
7
7
|
manager, Mani can support any window manager for the X Window System with just
|
8
8
|
a few lines of code. Please open an
|
9
|
-
[issue](https://
|
9
|
+
[issue](https://gitlab.com/xcip/mani/-/issues) to add support for your
|
10
10
|
favorite window manager.
|
11
11
|
|
12
12
|
## Demo
|
@@ -272,7 +272,7 @@ Please follow the guidelines below.
|
|
272
272
|
|
273
273
|
### Issue Reporting
|
274
274
|
|
275
|
-
* Use the [issue tracker](https://
|
275
|
+
* Use the [issue tracker](https://gitlab.com/xcip/mani/-/issues) to report
|
276
276
|
any issues or ideas for improvements.
|
277
277
|
* Check that the issue has not already been reported.
|
278
278
|
* Check that the issue has not already been fixed in the latest code (i.e., on
|
@@ -284,7 +284,6 @@ Please follow the guidelines below.
|
|
284
284
|
|
285
285
|
### Pull Requests
|
286
286
|
|
287
|
-
* Read [how to properly contribute to open source projects on Github](http://gun.io/blog/how-to-github-fork-branch-and-pull-request).
|
288
287
|
* Fork the project.
|
289
288
|
* Use a topic/feature branch to easily amend a pull request later, if
|
290
289
|
necessary.
|
@@ -305,8 +304,8 @@ Please follow the guidelines below.
|
|
305
304
|
### Code Conventions
|
306
305
|
|
307
306
|
**Mani** follows the conventions laid out in the
|
308
|
-
[Ruby Style Guide](https://github.com/
|
309
|
-
conventions are enforced by [RuboCop](https://github.com/
|
307
|
+
[Ruby Style Guide](https://github.com/rubocop/ruby-style-guide). These
|
308
|
+
conventions are enforced by [RuboCop](https://github.com/rubocop/rubocop).
|
310
309
|
|
311
310
|
```
|
312
311
|
make install
|
data/examples/chording.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
Mani.new(window_manager: :xmonad) do
|
2
|
-
window :
|
2
|
+
window :termite, launch: 'termite' do
|
3
3
|
# Copy the most recent report id
|
4
4
|
run %q(
|
5
5
|
ssh 127.0.0.1 -p 49154
|
@@ -10,7 +10,7 @@ Mani.new(window_manager: :xmonad) do
|
|
10
10
|
run 'exit'
|
11
11
|
end
|
12
12
|
|
13
|
-
window :
|
13
|
+
window :firefox, launch: 'firefox-developer-edition', delay: 1 do
|
14
14
|
# Paste the report id within the url
|
15
15
|
visit 'localhost:8080/reports/{{ctrl+v}}/preview'
|
16
16
|
end
|
data/examples/hello.rb
CHANGED
@@ -1,38 +1,47 @@
|
|
1
1
|
Mani.new(window_manager: :xmonad) do
|
2
2
|
workspace 1 do
|
3
|
-
window :
|
4
|
-
run '
|
5
|
-
run 'glances'
|
3
|
+
window :atop, launch: 'termite' do
|
4
|
+
run 'atop'
|
6
5
|
end
|
6
|
+
|
7
|
+
window :pavucontrol, launch: 'pavucontrol'
|
7
8
|
end
|
8
9
|
|
9
10
|
workspace 2 do
|
10
|
-
window :
|
11
|
-
|
12
|
-
window :mutt, launch: 'urxvt' do
|
13
|
-
run 'mutt'
|
11
|
+
window :firefox_email, launch: 'firefox-developer-edition -P email', delay: 1.5 do
|
12
|
+
visit 'mail.zoho.com'
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
17
16
|
workspace 3 do
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
window :vim, launch: 'termite' do
|
18
|
+
run 'nvim'
|
19
|
+
end
|
21
20
|
end
|
22
21
|
|
23
22
|
workspace 4 do
|
24
|
-
window :
|
23
|
+
window :firefox_work, launch: 'firefox-developer-edition -P work', delay: 1.5 do
|
24
|
+
visit 'outlook.office.com'
|
25
|
+
|
26
|
+
browser_tab :new do
|
27
|
+
visit 'teams.microsoft.com'
|
28
|
+
end
|
25
29
|
|
26
|
-
|
30
|
+
# Switch back to the first tab
|
31
|
+
browser_tab 1
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
workspace 8 do
|
30
|
-
window :
|
31
|
-
visit '
|
36
|
+
window :firefox, launch: 'firefox-developer-edition', delay: 1.5 do
|
37
|
+
visit 'localhost:8080'
|
32
38
|
|
33
39
|
browser_tab :new do
|
34
|
-
visit '
|
40
|
+
visit 'https://discord.com/channels/@me'
|
35
41
|
end
|
42
|
+
|
43
|
+
# Switch back to the first tab
|
44
|
+
browser_tab 1
|
36
45
|
end
|
37
46
|
end
|
38
47
|
end
|
data/lib/mani/tokenizer.rb
CHANGED
@@ -68,10 +68,7 @@ class Mani
|
|
68
68
|
return tokens
|
69
69
|
end
|
70
70
|
|
71
|
-
if
|
72
|
-
static = strip_comment_delimiters(match + scanner.rest)
|
73
|
-
tokens.concat [[:static, static]]
|
74
|
-
else
|
71
|
+
if scanner.check_until SEQUENCE_CLOSE
|
75
72
|
static = strip_comment_delimiters match.chomp(SEQUENCE_OPEN_DELIMITER)
|
76
73
|
tokens.concat [[:static, static]] unless static.empty?
|
77
74
|
|
@@ -82,6 +79,9 @@ class Mani
|
|
82
79
|
tokens.concat [[:sequence, sequence]] unless sequence.empty?
|
83
80
|
|
84
81
|
tokenize scanner, tokens
|
82
|
+
else
|
83
|
+
static = strip_comment_delimiters(match + scanner.rest)
|
84
|
+
tokens.concat [[:static, static]]
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
data/lib/mani/version.rb
CHANGED
data/mani.gemspec
CHANGED
@@ -3,12 +3,12 @@ require 'mani/version'
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = 'mani'
|
6
|
-
gem.homepage = 'https://
|
7
|
-
gem.license = '
|
6
|
+
gem.homepage = 'https://gitlab.com/xcip/mani'
|
7
|
+
gem.license = 'MIT'
|
8
8
|
gem.summary = 'A window automation tool'
|
9
9
|
gem.description = 'A window automation tool'
|
10
|
-
gem.email = '
|
11
|
-
gem.authors = ['
|
10
|
+
gem.email = 'xcip@protonmail.com'
|
11
|
+
gem.authors = ['xcip']
|
12
12
|
|
13
13
|
gem.version = Mani::Version::VERSION
|
14
14
|
|
data/spec/lib/tokenizer_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe Mani::Tokenizer do
|
|
8
8
|
source = 'static'
|
9
9
|
actual = Mani::Tokenizer.get_tokens source
|
10
10
|
expected = [[:static, 'static']]
|
11
|
-
actual.must_equal expected
|
11
|
+
_(actual).must_equal expected
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -19,7 +19,7 @@ describe Mani::Tokenizer do
|
|
19
19
|
expected = [
|
20
20
|
[:static, 'static {{ static'],
|
21
21
|
]
|
22
|
-
actual.must_equal expected
|
22
|
+
_(actual).must_equal expected
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -30,7 +30,7 @@ describe Mani::Tokenizer do
|
|
30
30
|
expected = [
|
31
31
|
[:static, 'static }} static']
|
32
32
|
]
|
33
|
-
actual.must_equal expected
|
33
|
+
_(actual).must_equal expected
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -41,7 +41,7 @@ describe Mani::Tokenizer do
|
|
41
41
|
expected = [
|
42
42
|
[:static, 'static {{ static']
|
43
43
|
]
|
44
|
-
actual.must_equal expected
|
44
|
+
_(actual).must_equal expected
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -52,7 +52,7 @@ describe Mani::Tokenizer do
|
|
52
52
|
expected = [
|
53
53
|
[:static, 'static }} static']
|
54
54
|
]
|
55
|
-
actual.must_equal expected
|
55
|
+
_(actual).must_equal expected
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -63,7 +63,7 @@ describe Mani::Tokenizer do
|
|
63
63
|
expected = [
|
64
64
|
[:static, 'static {{seq}} static'],
|
65
65
|
]
|
66
|
-
actual.must_equal expected
|
66
|
+
_(actual).must_equal expected
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -74,7 +74,7 @@ describe Mani::Tokenizer do
|
|
74
74
|
expected = [
|
75
75
|
[:static, 'static {{seq}} static'],
|
76
76
|
]
|
77
|
-
actual.must_equal expected
|
77
|
+
_(actual).must_equal expected
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
@@ -85,7 +85,7 @@ describe Mani::Tokenizer do
|
|
85
85
|
expected = [
|
86
86
|
[:static, 'static {{seq}} static'],
|
87
87
|
]
|
88
|
-
actual.must_equal expected
|
88
|
+
_(actual).must_equal expected
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -94,7 +94,7 @@ describe Mani::Tokenizer do
|
|
94
94
|
source = '{{}}'
|
95
95
|
actual = Mani::Tokenizer.get_tokens source
|
96
96
|
expected = []
|
97
|
-
actual.must_equal expected
|
97
|
+
_(actual).must_equal expected
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -107,7 +107,7 @@ describe Mani::Tokenizer do
|
|
107
107
|
[:sequence, 'seq'],
|
108
108
|
[:static, ' static']
|
109
109
|
]
|
110
|
-
actual.must_equal expected
|
110
|
+
_(actual).must_equal expected
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
@@ -120,7 +120,7 @@ describe Mani::Tokenizer do
|
|
120
120
|
[:sequence, 'seq {{ '],
|
121
121
|
[:static, ' static']
|
122
122
|
]
|
123
|
-
actual.must_equal expected
|
123
|
+
_(actual).must_equal expected
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -133,7 +133,7 @@ describe Mani::Tokenizer do
|
|
133
133
|
[:sequence, 'seq }} '],
|
134
134
|
[:static, ' static']
|
135
135
|
]
|
136
|
-
actual.must_equal expected
|
136
|
+
_(actual).must_equal expected
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -146,7 +146,7 @@ describe Mani::Tokenizer do
|
|
146
146
|
[:sequence, 'seq {{ nested }} '],
|
147
147
|
[:static, ' static']
|
148
148
|
]
|
149
|
-
actual.must_equal expected
|
149
|
+
_(actual).must_equal expected
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -159,7 +159,7 @@ describe Mani::Tokenizer do
|
|
159
159
|
[:sequence, 'seq'],
|
160
160
|
[:static, ' }} static']
|
161
161
|
]
|
162
|
-
actual.must_equal expected
|
162
|
+
_(actual).must_equal expected
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
@@ -172,7 +172,7 @@ describe Mani::Tokenizer do
|
|
172
172
|
[:sequence, 'nested {{seq'],
|
173
173
|
[:static, ' }} static']
|
174
174
|
]
|
175
|
-
actual.must_equal expected
|
175
|
+
_(actual).must_equal expected
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
@@ -186,7 +186,7 @@ describe Mani::Tokenizer do
|
|
186
186
|
[:sequence, 'second seq'],
|
187
187
|
[:static, ' more static']
|
188
188
|
]
|
189
|
-
actual.must_equal expected
|
189
|
+
_(actual).must_equal expected
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
@@ -197,7 +197,7 @@ describe Mani::Tokenizer do
|
|
197
197
|
expected = [
|
198
198
|
[:static, ' static '],
|
199
199
|
]
|
200
|
-
actual.must_equal expected
|
200
|
+
_(actual).must_equal expected
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
@@ -208,7 +208,7 @@ describe Mani::Tokenizer do
|
|
208
208
|
expected = [
|
209
209
|
[:static, '}} static {{'],
|
210
210
|
]
|
211
|
-
actual.must_equal expected
|
211
|
+
_(actual).must_equal expected
|
212
212
|
end
|
213
213
|
end
|
214
214
|
|
@@ -219,7 +219,7 @@ describe Mani::Tokenizer do
|
|
219
219
|
expected = [
|
220
220
|
[:static, '}} static {{'],
|
221
221
|
]
|
222
|
-
actual.must_equal expected
|
222
|
+
_(actual).must_equal expected
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
@@ -230,7 +230,7 @@ describe Mani::Tokenizer do
|
|
230
230
|
expected = [
|
231
231
|
[:static, '%{{ static %}} more static'],
|
232
232
|
]
|
233
|
-
actual.must_equal expected
|
233
|
+
_(actual).must_equal expected
|
234
234
|
end
|
235
235
|
end
|
236
236
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mani
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- xcip
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: x_do_bindings
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.2.1
|
27
27
|
description: A window automation tool
|
28
|
-
email:
|
28
|
+
email: xcip@protonmail.com
|
29
29
|
executables:
|
30
30
|
- mani
|
31
31
|
extensions: []
|
@@ -51,11 +51,11 @@ files:
|
|
51
51
|
- mani.gemspec
|
52
52
|
- spec.rb
|
53
53
|
- spec/lib/tokenizer_spec.rb
|
54
|
-
homepage: https://
|
54
|
+
homepage: https://gitlab.com/xcip/mani
|
55
55
|
licenses:
|
56
|
-
-
|
56
|
+
- MIT
|
57
57
|
metadata: {}
|
58
|
-
post_install_message:
|
58
|
+
post_install_message:
|
59
59
|
rdoc_options: []
|
60
60
|
require_paths:
|
61
61
|
- lib
|
@@ -70,9 +70,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
|
-
|
74
|
-
|
75
|
-
signing_key:
|
73
|
+
rubygems_version: 3.1.2
|
74
|
+
signing_key:
|
76
75
|
specification_version: 4
|
77
76
|
summary: A window automation tool
|
78
77
|
test_files:
|