pdd 0.20.4 → 0.20.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc5c52ddb7620147399b0ed8cec3d13900d1d36e695c42021cf2e887b4b80d7c
4
- data.tar.gz: 6da8a3a29675c6359e427d2c16048f32a032fcc25247447ce110ac3e649b147b
3
+ metadata.gz: e3ff37e6f0ac2629e0b31888df2b56f7024512b04b07bd58c29a0525186a40f0
4
+ data.tar.gz: 61076844123f2eda0b32734b2c917ed6eb033956177197626219bda878add5b5
5
5
  SHA512:
6
- metadata.gz: e986672fe0a226d5577bd35d296f9d55685d0d77384e516d535b5cdd672a43c8e4d33a9167b6cf9e0397738b4dc7967a904324f5e77c6c48413bc4663d2e61c3
7
- data.tar.gz: c0086dc48c63539c09ea70bcea1d7fba64c1eb48fc51a6a2ffa65740e0333a38b6bb93b7dfe634b0e4e99d173539b19054922d2cbfebc78a88dc32a42f41bb36
6
+ metadata.gz: e9b46c3238588062c781b1b3705cf343d1ca0e70481b2546ffc407b9a5be6534d45b3c8d0d4ebaab0ac39630ebfc6652feb8c69a8dd8d787bf33eae1a9cb0935
7
+ data.tar.gz: 790b7d73f1b7ea5d2666864b238dfdde211572186d3d84c29a6d6448936b54ef87a567473b83fccfad83ec945ad6f9677a739b0730fde5199618dc79f6cc9ead
data/.gitignore CHANGED
@@ -1,7 +1,8 @@
1
- coverage/
1
+ coverage/**/*
2
2
  Gemfile.lock
3
- .idea/
3
+ .idea/**/*
4
4
  *.gem
5
- .bundle/
5
+ .bundle/**/*
6
6
  .DS_Store
7
- rdoc/
7
+ rdoc/**/*
8
+ tmp/**/*
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 features/**/*
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.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: zerocracy/home#assets/rubygems.yml
3
- s3cfg: zerocracy/home#assets/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
- env
12
- bundle install
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
- commanders: []
33
- deploy: {}
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-2018 Yegor Bugayenko
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? then
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 "/test/"
27
- add_filter "/features/"
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 "/test/"
35
- add_filter "/features/"
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.2.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
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014-2018 Yegor Bugayenko
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
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2014-2018 Yegor Bugayenko
3
+ Copyright (c) 2014-2021 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the 'Software'), to deal
data/README.md CHANGED
@@ -2,32 +2,32 @@
2
2
 
3
3
  [![Donate via Zerocracy](https://www.0crat.com/contrib-badge/C3T46CUJJ.svg)](https://www.0crat.com/contrib/C3T46CUJJ)
4
4
 
5
- [![EO principles respected here](http://www.elegantobjects.org/badge.svg)](http://www.elegantobjects.org)
5
+ [![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)
6
6
  [![Managed by Zerocracy](https://www.0crat.com/badge/C3T46CUJJ.svg)](https://www.0crat.com/p/C3T46CUJJ)
7
- [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/pdd)](http://www.rultor.com/p/yegor256/pdd)
8
- [![We recommend RubyMine](http://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
7
+ [![DevOps By Rultor.com](http://www.rultor.com/b/cqfn/pdd)](http://www.rultor.com/p/cqfn/pdd)
8
+ [![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
9
9
 
10
- [![Build Status](https://travis-ci.org/yegor256/pdd.svg)](https://travis-ci.org/yegor256/pdd)
11
- [![Build status](https://ci.appveyor.com/api/projects/status/b59sdhuu0gcku15b?svg=true)](https://ci.appveyor.com/project/yegor256/pdd)
12
- [![PDD status](http://www.0pdd.com/svg?name=yegor256/pdd)](http://www.0pdd.com/p?name=yegor256/pdd)
10
+ [![Build Status](https://travis-ci.org/cqfn/pdd.svg)](https://travis-ci.org/cqfn/pdd)
11
+ [![Build status](https://ci.appveyor.com/api/projects/status/b59sdhuu0gcku15b?svg=true)](https://ci.appveyor.com/project/cqfn/pdd)
12
+ [![PDD status](http://www.0pdd.com/svg?name=cqfn/pdd)](http://www.0pdd.com/p?name=cqfn/pdd)
13
+ [![Test Coverage](https://img.shields.io/codecov/c/github/cqfn/pdd.svg)](https://codecov.io/github/cqfn/pdd?branch=master)
14
+ [![Hits-of-Code](https://hitsofcode.com/github/cqfn/pdd)](https://hitsofcode.com/view/github/cqfn/pdd)
15
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/cqfn/pdd/blob/master/LICENSE.txt)
13
16
 
14
17
  [![Gem Version](https://badge.fury.io/rb/pdd.svg)](http://badge.fury.io/rb/pdd)
15
- [![Dependency Status](https://gemnasium.com/yegor256/pdd.svg)](https://gemnasium.com/yegor256/pdd)
16
- [![Maintainability](https://api.codeclimate.com/v1/badges/c8e46256fdd8ddc817e5/maintainability)](https://codeclimate.com/github/yegor256/pdd/maintainability)
17
- [![Test Coverage](https://img.shields.io/codecov/c/github/yegor256/pdd.svg)](https://codecov.io/github/yegor256/pdd?branch=master)
18
- [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/yegor256/pdd/master/frames)
19
-
20
- ## What This is for?
18
+ [![Maintainability](https://api.codeclimate.com/v1/badges/c8e46256fdd8ddc817e5/maintainability)](https://codeclimate.com/github/cqfn/pdd/maintainability)
19
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/cqfn/pdd/master/frames)
21
20
 
22
21
  Read this article about
23
- [Puzzle Driven Development](http://www.yegor256.com/2009/03/04/pdd.html).
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. Read this first:
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
- ## How to Install?
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
- You can exclude certain files from the search, for example:
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
- <> - Omitable (enclosed data can be left out)
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
- It starts with `@todo`, followed by a space and a mandatory puzzle **marker**.
88
- Possible formats of puzzle markers (it doesn't matter what the
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 that `@todo` right in front
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 `678` are the IDs of the tickets these
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
- * `min-estimate:15` blocks all puzzles that don't have an estimate
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
- * `max-estimate:120` blocks all puzzles with estimates over 120 minutes.
152
+ - `max-estimate:120` blocks all puzzles with estimates over 120 minutes.
131
153
 
132
- * `available-roles:DEV,IMP,DES` specifies a list of roles that
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
- * `min-words:5` blocks puzzles with descriptions shorter than five words.
158
+ - `min-words:5` blocks puzzles with descriptions shorter than five words.
137
159
 
138
- * `max-duplicates:1` blocks more than one duplicate of any puzzle.
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
- * `ticket` is a ticket name puzzle marker starts from, in most
172
- cases it will be the number of GitHub issue.
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
- * `estimate` is the amount of minutes the puzzle is supposed to take.
197
+ - `estimate` is the amount of minutes the puzzle is supposed to take.
175
198
 
176
- * `id` is a unique ID of the puzzle. It is calculated by the
177
- internal algorithm that takes into account only the text of the puzzle.
178
- Thus, if you move the puzzle from one file to another, the ID won't
179
- change. Also, changing the location of a puzzle inside a file
180
- won't change its ID.
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
- * `lines` is where the puzzle is found, inside the file.
205
+ - `lines` is where the puzzle is found, inside the file.
183
206
 
184
- # How to contribute
207
+ ## How to contribute
185
208
 
186
209
  Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
187
- Make sure you build is green before you contribute
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 update
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-2018 Yegor Bugayenko
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-2018 Yegor Bugayenko
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-2018 Yegor Bugayenko
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