pdd 0.20.4 → 0.20.8
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/.gitignore +5 -4
- data/.overcommit.yml +96 -0
- data/.pdd +15 -1
- data/.rubocop.yml +3 -2
- data/.rultor.yml +14 -15
- data/.simplecov +6 -6
- data/.travis.yml +2 -2
- data/Gemfile +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +72 -67
- data/Rakefile +7 -1
- data/assets/puzzles.xsd +1 -1
- data/assets/puzzles.xsl +1 -1
- data/bin/pdd +30 -19
- data/features/catches_broken_puzzles.feature +1 -16
- data/features/cli.feature +1 -1
- data/features/html_output.feature +1 -1
- data/features/rake.feature +21 -0
- data/features/step_definitions/steps.rb +11 -4
- data/features/support/env.rb +2 -1
- data/features/uses_config.feature +1 -1
- data/lib/pdd/puzzle.rb +1 -1
- data/lib/pdd/rake_task.rb +39 -0
- data/lib/pdd/rule/duplicates.rb +2 -1
- data/lib/pdd/rule/estimates.rb +1 -1
- data/lib/pdd/rule/roles.rb +2 -1
- data/lib/pdd/rule/text.rb +2 -1
- data/lib/pdd/source.rb +59 -47
- data/lib/pdd/sources.rb +34 -13
- data/lib/pdd/version.rb +3 -3
- data/lib/pdd.rb +20 -15
- data/pdd.gemspec +13 -10
- data/test/test__helper.rb +15 -2
- data/test/test_duplicates.rb +2 -2
- data/test/test_estimates.rb +2 -2
- data/test/test_pdd.rb +4 -2
- data/test/test_rake_task.rb +18 -0
- data/test/test_roles.rb +2 -2
- data/test/test_source.rb +154 -47
- data/test/test_source_todo.rb +36 -9
- data/test/test_sources.rb +18 -2
- data/test/test_text.rb +2 -2
- data/utils/glob.rb +67 -0
- metadata +51 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3ff37e6f0ac2629e0b31888df2b56f7024512b04b07bd58c29a0525186a40f0
|
4
|
+
data.tar.gz: 61076844123f2eda0b32734b2c917ed6eb033956177197626219bda878add5b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9b46c3238588062c781b1b3705cf343d1ca0e70481b2546ffc407b9a5be6534d45b3c8d0d4ebaab0ac39630ebfc6652feb8c69a8dd8d787bf33eae1a9cb0935
|
7
|
+
data.tar.gz: 790b7d73f1b7ea5d2666864b238dfdde211572186d3d84c29a6d6448936b54ef87a567473b83fccfad83ec945ad6f9677a739b0730fde5199618dc79f6cc9ead
|
data/.gitignore
CHANGED
data/.overcommit.yml
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# Use this file to configure the Overcommit hooks you wish to use. This will
|
2
|
+
# extend the default configuration defined in:
|
3
|
+
# https://github.com/sds/overcommit/blob/master/config/default.yml
|
4
|
+
#
|
5
|
+
# At the topmost level of this YAML file is a key representing type of hook
|
6
|
+
# being run (e.g. pre-commit, commit-msg, etc.). Within each type you can
|
7
|
+
# customize each hook, such as whether to only run it on certain files (via
|
8
|
+
# `include`), whether to only display output if it fails (via `quiet`), etc.
|
9
|
+
#
|
10
|
+
# For a complete list of hooks, see:
|
11
|
+
# https://github.com/sds/overcommit/tree/master/lib/overcommit/hook
|
12
|
+
#
|
13
|
+
# For a complete list of options that you can use to customize hooks, see:
|
14
|
+
# https://github.com/sds/overcommit#configuration
|
15
|
+
|
16
|
+
PreCommit:
|
17
|
+
ALL:
|
18
|
+
problem_on_unmodified_line: report
|
19
|
+
requires_files: true
|
20
|
+
required: false
|
21
|
+
quiet: false
|
22
|
+
|
23
|
+
AuthorEmail:
|
24
|
+
enabled: true
|
25
|
+
description: 'Check author email'
|
26
|
+
requires_files: false
|
27
|
+
required: true
|
28
|
+
quiet: true
|
29
|
+
pattern: '^[^@]+@.*$'
|
30
|
+
|
31
|
+
AuthorName:
|
32
|
+
enabled: true
|
33
|
+
description: 'Check for author name'
|
34
|
+
requires_files: false
|
35
|
+
required: true
|
36
|
+
quiet: true
|
37
|
+
|
38
|
+
BundleCheck:
|
39
|
+
enabled: true
|
40
|
+
description: 'Check Gemfile dependencies'
|
41
|
+
required_executable: 'bundle'
|
42
|
+
flags: ['check']
|
43
|
+
include:
|
44
|
+
- 'Gemfile'
|
45
|
+
- 'Gemfile.lock'
|
46
|
+
- '*.gemspec'
|
47
|
+
|
48
|
+
BundleOutdated:
|
49
|
+
enabled: true
|
50
|
+
description: 'List installed gems with newer versions available'
|
51
|
+
required_executable: 'bundle'
|
52
|
+
flags: ['outdated', '--strict', '--parseable']
|
53
|
+
|
54
|
+
RuboCop:
|
55
|
+
enabled: true
|
56
|
+
description: 'Analyze with RuboCop'
|
57
|
+
required_executable: 'bundle'
|
58
|
+
flags: ['exec', 'rubocop']
|
59
|
+
|
60
|
+
# Hooks that are run against every commit message after a user has written it.
|
61
|
+
# These hooks are useful for enforcing policies on commit messages written for a
|
62
|
+
# project.
|
63
|
+
CommitMsg:
|
64
|
+
ALL:
|
65
|
+
requires_files: false
|
66
|
+
quiet: false
|
67
|
+
|
68
|
+
EmptyMessage:
|
69
|
+
enabled: true
|
70
|
+
description: 'Check for empty commit message'
|
71
|
+
quiet: true
|
72
|
+
|
73
|
+
MessageFormat:
|
74
|
+
enabled: true
|
75
|
+
description: 'Check commit message matches expected pattern'
|
76
|
+
pattern: '(\[#)(.+)(\]\s)(.+)'
|
77
|
+
expected_pattern_message: '[#<Issue Id>] <Commit Message Description>'
|
78
|
+
sample_message: '[#167] Refactored onboarding flow'
|
79
|
+
|
80
|
+
PrePush:
|
81
|
+
ALL:
|
82
|
+
requires_files: false
|
83
|
+
required: false
|
84
|
+
quiet: false
|
85
|
+
|
86
|
+
RakeTarget:
|
87
|
+
enabled: true
|
88
|
+
quite: true
|
89
|
+
description: 'Run rake targets'
|
90
|
+
targets:
|
91
|
+
- 'rubocop'
|
92
|
+
- 'test'
|
93
|
+
- 'xcop'
|
94
|
+
required_executable: 'bundle'
|
95
|
+
flags: ['exec', 'rake']
|
96
|
+
|
data/.pdd
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
--source=.
|
2
2
|
--verbose
|
3
|
+
--skip-errors
|
4
|
+
--skip-gitignore
|
5
|
+
--include lib/pdd/sources.rb
|
6
|
+
--exclude .idea/**/*
|
7
|
+
--exclude .bundle/**/*
|
3
8
|
--exclude target/**/*
|
4
9
|
--exclude coverage/**/*
|
5
|
-
--exclude
|
10
|
+
--exclude test_assets/**/*
|
6
11
|
--exclude README.md
|
12
|
+
--exclude features/cli.feature
|
13
|
+
--exclude features/parsing.feature
|
14
|
+
--exclude features/catches_broken_puzzles.feature
|
15
|
+
--exclude features/uses_config.feature
|
16
|
+
--exclude features/html_output.feature
|
17
|
+
--exclude features/avoiding_duplicates.feature
|
18
|
+
--exclude features/applies_rules.feature
|
19
|
+
--exclude features/unicode.feature
|
7
20
|
--exclude lib/pdd/source.rb
|
8
21
|
--exclude test/test_source.rb
|
22
|
+
--exclude test/test_source_todo.rb
|
9
23
|
--exclude test/test_pdd.rb
|
10
24
|
--exclude src/main/resources/images/**/*
|
11
25
|
--rule min-words:20
|
data/.rubocop.yml
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
|
-
- 'bin/**/*'
|
4
3
|
- 'assets/**/*'
|
5
4
|
DisplayCopNames: true
|
6
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.3
|
7
6
|
|
8
7
|
Layout/EndOfLine:
|
9
8
|
EnforcedStyle: lf
|
@@ -17,3 +16,5 @@ Style/MultilineBlockChain:
|
|
17
16
|
Enabled: false
|
18
17
|
Metrics/BlockLength:
|
19
18
|
Max: 50
|
19
|
+
Style/FrozenStringLiteralComment:
|
20
|
+
Enabled: false
|
data/.rultor.yml
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
assets:
|
2
|
-
rubygems.yml:
|
3
|
-
s3cfg:
|
2
|
+
rubygems.yml: yegor256/home#assets/rubygems.yml
|
3
|
+
s3cfg: yegor256/home#assets/s3cfg
|
4
4
|
install: |
|
5
5
|
export GEM_HOME=~/.ruby
|
6
6
|
export GEM_PATH=$GEM_HOME:$GEM_PATH
|
7
|
-
sudo gem install pdd
|
8
|
-
sudo gem install xcop
|
7
|
+
sudo gem install pdd -v 0.20.5
|
8
|
+
sudo gem install xcop -v 0.6
|
9
|
+
bundle install
|
9
10
|
release:
|
10
11
|
script: |-
|
11
|
-
|
12
|
-
bundle
|
13
|
-
LC_ALL=US-ASCII rake
|
12
|
+
pdd -f /dev/null
|
13
|
+
LC_ALL=US-ASCII bundle exec rake
|
14
14
|
rm -rf *.gem
|
15
15
|
sed -i "s/1\.0\.snapshot/${tag}/g" lib/pdd/version.rb
|
16
16
|
git add lib/pdd/version.rb
|
@@ -18,16 +18,15 @@ release:
|
|
18
18
|
gem build pdd.gemspec
|
19
19
|
chmod 0600 ../rubygems.yml
|
20
20
|
gem push *.gem --config-file ../rubygems.yml
|
21
|
-
sudo gem install pdd
|
22
21
|
pdd --source=$(pwd) --verbose --file=pdd.xml -e=test/** -e=features/** -e=coverage/**/* -e=README.md
|
23
22
|
s3cmd --no-progress put pdd.xml --config=../s3cfg s3://pdd.teamed.io/pdd.xml
|
24
23
|
s3cmd --no-progress put assets/puzzles.xsd --acl-public --config=../s3cfg s3://pdd-xsd.teamed.io/${tag}.xsd
|
25
24
|
s3cmd --no-progress put assets/puzzles.xsl --acl-public --config=../s3cfg s3://pdd-xsl.teamed.io/${tag}.xsl
|
26
|
-
commanders:
|
27
|
-
- yegor256
|
28
|
-
architect:
|
29
|
-
- yegor256
|
30
|
-
- davvd
|
31
25
|
merge:
|
32
|
-
|
33
|
-
|
26
|
+
script: |-
|
27
|
+
pdd -f /dev/null
|
28
|
+
LC_ALL=US-ASCII bundle exec rake
|
29
|
+
deploy:
|
30
|
+
script: |-
|
31
|
+
echo 'Nothing to deploy'
|
32
|
+
exit -1
|
data/.simplecov
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2014-
|
1
|
+
# Copyright (c) 2014-2021 Yegor Bugayenko
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the 'Software'), to deal
|
@@ -18,21 +18,21 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
19
|
# SOFTWARE.
|
20
20
|
|
21
|
-
if Gem.win_platform?
|
21
|
+
if Gem.win_platform?
|
22
22
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
23
23
|
SimpleCov::Formatter::HTMLFormatter
|
24
24
|
]
|
25
25
|
SimpleCov.start do
|
26
|
-
add_filter
|
27
|
-
add_filter
|
26
|
+
add_filter '/test/'
|
27
|
+
add_filter '/features/'
|
28
28
|
end
|
29
29
|
else
|
30
30
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
31
31
|
SimpleCov::Formatter::HTMLFormatter
|
32
32
|
)
|
33
33
|
SimpleCov.start do
|
34
|
-
add_filter
|
35
|
-
add_filter
|
34
|
+
add_filter '/test/'
|
35
|
+
add_filter '/features/'
|
36
36
|
minimum_coverage 90
|
37
37
|
end
|
38
38
|
end
|
data/.travis.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.
|
3
|
+
- 2.3.0
|
4
4
|
cache: bundler
|
5
5
|
branches:
|
6
6
|
only:
|
@@ -8,6 +8,6 @@ branches:
|
|
8
8
|
install:
|
9
9
|
- travis_retry bundle update
|
10
10
|
script:
|
11
|
-
- rake
|
11
|
+
- bundle exec rake
|
12
12
|
after_success:
|
13
13
|
- "bash <(curl -s https://codecov.io/bash)"
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -2,32 +2,32 @@
|
|
2
2
|
|
3
3
|
[](https://www.0crat.com/contrib/C3T46CUJJ)
|
4
4
|
|
5
|
-
[](https://www.elegantobjects.org)
|
6
6
|
[](https://www.0crat.com/p/C3T46CUJJ)
|
7
|
-
[](http://www.rultor.com/p/cqfn/pdd)
|
8
|
+
[](https://www.jetbrains.com/ruby/)
|
9
9
|
|
10
|
-
[](https://ci.appveyor.com/project/
|
12
|
-
[](https://travis-ci.org/cqfn/pdd)
|
11
|
+
[](https://ci.appveyor.com/project/cqfn/pdd)
|
12
|
+
[](http://www.0pdd.com/p?name=cqfn/pdd)
|
13
|
+
[](https://codecov.io/github/cqfn/pdd?branch=master)
|
14
|
+
[](https://hitsofcode.com/view/github/cqfn/pdd)
|
15
|
+
[](https://github.com/cqfn/pdd/blob/master/LICENSE.txt)
|
13
16
|
|
14
17
|
[](http://badge.fury.io/rb/pdd)
|
15
|
-
[](https://codecov.io/github/yegor256/pdd?branch=master)
|
18
|
-
[](http://rubydoc.info/github/yegor256/pdd/master/frames)
|
19
|
-
|
20
|
-
## What This is for?
|
18
|
+
[](https://codeclimate.com/github/cqfn/pdd/maintainability)
|
19
|
+
[](http://rubydoc.info/github/cqfn/pdd/master/frames)
|
21
20
|
|
22
21
|
Read this article about
|
23
|
-
[
|
22
|
+
[_Puzzle Driven Development_](http://www.yegor256.com/2009/03/04/pdd.html).
|
24
23
|
Check also patent application [US 12/840,306](http://www.google.com/patents/US20120023476)
|
25
24
|
|
26
25
|
Also, check [0pdd.com](http://www.0pdd.com): a hosted service,
|
27
|
-
where this command line tool works for you.
|
28
|
-
[PDD in Action](http://www.yegor256.com/2017/04/05/pdd-in-action.html).
|
26
|
+
where this command line tool works for you.
|
29
27
|
|
30
|
-
|
28
|
+
Read
|
29
|
+
[_PDD in Action_](http://www.yegor256.com/2017/04/05/pdd-in-action.html)
|
30
|
+
and watch [this webinar](https://www.youtube.com/watch?v=nsYGC2aUwfQ).
|
31
31
|
|
32
32
|
Install it first:
|
33
33
|
|
@@ -35,15 +35,19 @@ Install it first:
|
|
35
35
|
$ gem install pdd
|
36
36
|
```
|
37
37
|
|
38
|
-
## How to Run?
|
39
|
-
|
40
38
|
Run it locally and read its output:
|
41
39
|
|
42
40
|
```bash
|
43
41
|
$ pdd --help
|
44
42
|
```
|
45
43
|
|
46
|
-
|
44
|
+
### File and Directory Selection
|
45
|
+
You can exclude & include certain number of files from the search via these options:
|
46
|
+
|
47
|
+
`` --exclude=glob ``
|
48
|
+
|
49
|
+
You can skip any file(s) with a name suffix that matches the pattern glob, using wildcard matching;
|
50
|
+
a name suffix is either the whole path and name, or reg expr, for example:
|
47
51
|
|
48
52
|
```bash
|
49
53
|
pdd --exclude=src/**/*.java --exclude=target/**/*
|
@@ -51,6 +55,17 @@ pdd --exclude=src/**/*.java # exclude .java files in src/
|
|
51
55
|
pdd --exclude=src/**/* # exclude all files in src/
|
52
56
|
```
|
53
57
|
|
58
|
+
`` --include=glob ``
|
59
|
+
|
60
|
+
Search only files whose name matches glob, using wildcard matching as described under ``--exclude``.
|
61
|
+
If contradictory ``--include`` and ``--exclude`` options are given, the last matching one wins.
|
62
|
+
If no ``--include`` or ``--exclude`` options are given, all files from working directory are included, example:
|
63
|
+
аомтрптм
|
64
|
+
```bash
|
65
|
+
pdd --include=src/**/*.py # include only .py files in src/
|
66
|
+
pdd --include=src/**/* # include all files in src/
|
67
|
+
```
|
68
|
+
|
54
69
|
## How to Format?
|
55
70
|
|
56
71
|
Every puzzle has to be formatted like this (pay attention
|
@@ -62,10 +77,12 @@ to the leading space in every consecutive line):
|
|
62
77
|
*/
|
63
78
|
[related code]
|
64
79
|
```
|
80
|
+
|
65
81
|
\[\] - Replace with apropriate data (see text enclosed in brackets)
|
66
|
-
<>
|
82
|
+
<> - Omitable (enclosed data can be left out)
|
67
83
|
|
68
84
|
Example:
|
85
|
+
|
69
86
|
```java
|
70
87
|
/**
|
71
88
|
* @todo #234:15m/DEV This is something to do later
|
@@ -84,10 +101,13 @@ The specified markers will be included in the issues body
|
|
84
101
|
along with some predefined text. If your comment is longer
|
85
102
|
than 40 characters, it will be truncated in the title.
|
86
103
|
|
87
|
-
|
88
|
-
|
104
|
+
There are 3 supported keywords, one of which must precede the mandatory
|
105
|
+
puzzle marker. They are `@todo`, `TODO` and `TODO:`.
|
106
|
+
|
107
|
+
As an example, it starts with `@todo`, followed by a space and a mandatory
|
108
|
+
puzzle **marker**. Possible formats of puzzle markers (it doesn't matter what the
|
89
109
|
line starts with and where it is located,
|
90
|
-
as long as you have
|
110
|
+
as long as you have one of the 3 supported keywords right in front
|
91
111
|
of the mandatory marker):
|
92
112
|
|
93
113
|
```
|
@@ -96,12 +116,14 @@ of the mandatory marker):
|
|
96
116
|
# @todo #55:45min
|
97
117
|
@todo #67/DES
|
98
118
|
;; @todo #678:40m/DEV
|
119
|
+
// TODO: #1:30min
|
120
|
+
(* TODO #42 *)
|
99
121
|
```
|
100
122
|
|
101
123
|
Here `DES` and `DEV` are the roles of people who must fix that puzzles;
|
102
124
|
`45min` and `40m` is the amount of time the puzzle should take;
|
103
|
-
`224`, `TEST-13`, `55`, `67`, and `
|
104
|
-
puzzles are coming from.
|
125
|
+
`224`, `TEST-13`, `55`, `67`, `678`, `1`, and `42` are the IDs of the tickets
|
126
|
+
these puzzles are coming from.
|
105
127
|
|
106
128
|
Markers are absolutely necessary for all puzzles, because they allow
|
107
129
|
us to build a hierarchical dependency tree of all puzzles, like
|
@@ -124,18 +146,18 @@ parameter specified after a colon.
|
|
124
146
|
|
125
147
|
Here is a list of rules available now:
|
126
148
|
|
127
|
-
|
149
|
+
- `min-estimate:15` blocks all puzzles that don't have an estimate
|
128
150
|
or their estimates are less than 15 minutes.
|
129
151
|
|
130
|
-
|
152
|
+
- `max-estimate:120` blocks all puzzles with estimates over 120 minutes.
|
131
153
|
|
132
|
-
|
154
|
+
- `available-roles:DEV,IMP,DES` specifies a list of roles that
|
133
155
|
are allowed in puzzles. Puzzles without explicitly specified
|
134
156
|
roles will be rejected.
|
135
157
|
|
136
|
-
|
158
|
+
- `min-words:5` blocks puzzles with descriptions shorter than five words.
|
137
159
|
|
138
|
-
|
160
|
+
- `max-duplicates:1` blocks more than one duplicate of any puzzle.
|
139
161
|
This rule is used by default and you can't configure it at the moment,
|
140
162
|
it must always be set to `1`.
|
141
163
|
|
@@ -164,33 +186,40 @@ The XML produced will look approximately like this (here is a
|
|
164
186
|
</puzzle>
|
165
187
|
</puzzles>
|
166
188
|
```
|
189
|
+
NOTE: puzzles are saved with utf-8 encoding
|
167
190
|
|
168
191
|
[XSD Schema](http://pdd-xsd.teamed.io/0.19.4.xsd) is here.
|
169
192
|
The most interesting parts of each puzzle are:
|
170
193
|
|
171
|
-
|
172
|
-
|
194
|
+
- `ticket` is a ticket name puzzle marker starts from, in most
|
195
|
+
cases it will be the number of GitHub issue.
|
173
196
|
|
174
|
-
|
197
|
+
- `estimate` is the amount of minutes the puzzle is supposed to take.
|
175
198
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
199
|
+
- `id` is a unique ID of the puzzle. It is calculated by the
|
200
|
+
internal algorithm that takes into account only the text of the puzzle.
|
201
|
+
Thus, if you move the puzzle from one file to another, the ID won't
|
202
|
+
change. Also, changing the location of a puzzle inside a file
|
203
|
+
won't change its ID.
|
181
204
|
|
182
|
-
|
205
|
+
- `lines` is where the puzzle is found, inside the file.
|
183
206
|
|
184
|
-
|
207
|
+
## How to contribute
|
185
208
|
|
186
209
|
Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
|
187
|
-
Make sure
|
210
|
+
Make sure your build is green before you contribute
|
188
211
|
your pull request. You will need to have [Ruby](https://www.ruby-lang.org/en/) 2.3+ and
|
189
212
|
[Bundler](https://bundler.io/) installed. Then:
|
190
213
|
|
191
214
|
```
|
192
|
-
$ bundle
|
193
|
-
$ rake
|
215
|
+
$ bundle install --path .bundle
|
216
|
+
$ bundle exec rake
|
217
|
+
```
|
218
|
+
|
219
|
+
Next, install and run overcommit to install hooks (required once)
|
220
|
+
```
|
221
|
+
$ gem install overcommit -v '=0.58.0'
|
222
|
+
$ overcommit --install
|
194
223
|
```
|
195
224
|
|
196
225
|
If it's clean and you don't see any error messages, submit your pull request.
|
@@ -200,27 +229,3 @@ This is how you run the tool locally to test how it works:
|
|
200
229
|
```bash
|
201
230
|
$ ./bin/pdd --help
|
202
231
|
```
|
203
|
-
|
204
|
-
## License
|
205
|
-
|
206
|
-
(The MIT License)
|
207
|
-
|
208
|
-
Copyright (c) 2016-2018 Yegor Bugayenko
|
209
|
-
|
210
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
211
|
-
of this software and associated documentation files (the 'Software'), to deal
|
212
|
-
in the Software without restriction, including without limitation the rights
|
213
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
214
|
-
copies of the Software, and to permit persons to whom the Software is
|
215
|
-
furnished to do so, subject to the following conditions:
|
216
|
-
|
217
|
-
The above copyright notice and this permission notice shall be included in all
|
218
|
-
copies or substantial portions of the Software.
|
219
|
-
|
220
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
221
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
222
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
223
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
224
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
225
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
226
|
-
SOFTWARE.
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2014-
|
1
|
+
# Copyright (c) 2014-2021 Yegor Bugayenko
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the 'Software'), to deal
|
@@ -66,6 +66,12 @@ Xcop::RakeTask.new :xcop do |task|
|
|
66
66
|
task.excludes = ['target/**/*', 'coverage/**/*']
|
67
67
|
end
|
68
68
|
|
69
|
+
require 'pdd/rake_task'
|
70
|
+
desc 'Collecting and parsing all puzzles in project'
|
71
|
+
PDD::RakeTask.new :pdd do |task|
|
72
|
+
task.includes = ['**/*']
|
73
|
+
end
|
74
|
+
|
69
75
|
require 'cucumber/rake/task'
|
70
76
|
Cucumber::Rake::Task.new(:features) do |t|
|
71
77
|
t.cucumber_opts = 'features --format progress'
|
data/assets/puzzles.xsd
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<!--
|
3
3
|
(The MIT License)
|
4
4
|
|
5
|
-
Copyright (c) 2014-
|
5
|
+
Copyright (c) 2014-2021 Yegor Bugayenko
|
6
6
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
8
|
of this software and associated documentation files (the 'Software'), to deal
|
data/assets/puzzles.xsl
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<!--
|
3
3
|
(The MIT License)
|
4
4
|
|
5
|
-
Copyright (c) 2014-
|
5
|
+
Copyright (c) 2014-2021 Yegor Bugayenko
|
6
6
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
8
|
of this software and associated documentation files (the 'Software'), to deal
|