trackler 2.1.0.54 → 2.1.0.55

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/ecmascript/exercises/accumulate/package.json +10 -68
  4. data/tracks/ecmascript/exercises/acronym/package.json +10 -68
  5. data/tracks/ecmascript/exercises/all-your-base/package.json +10 -68
  6. data/tracks/ecmascript/exercises/allergies/package.json +10 -68
  7. data/tracks/ecmascript/exercises/alphametics/package.json +10 -68
  8. data/tracks/ecmascript/exercises/anagram/package.json +10 -68
  9. data/tracks/ecmascript/exercises/atbash-cipher/package.json +10 -68
  10. data/tracks/ecmascript/exercises/beer-song/package.json +10 -68
  11. data/tracks/ecmascript/exercises/binary/package.json +10 -68
  12. data/tracks/ecmascript/exercises/binary-search/package.json +10 -68
  13. data/tracks/ecmascript/exercises/binary-search-tree/package.json +10 -68
  14. data/tracks/ecmascript/exercises/bob/package.json +10 -68
  15. data/tracks/ecmascript/exercises/bracket-push/package.json +10 -68
  16. data/tracks/ecmascript/exercises/circular-buffer/package.json +10 -68
  17. data/tracks/ecmascript/exercises/clock/package.json +10 -68
  18. data/tracks/ecmascript/exercises/connect/package.json +10 -68
  19. data/tracks/ecmascript/exercises/crypto-square/package.json +10 -68
  20. data/tracks/ecmascript/exercises/custom-set/package.json +10 -68
  21. data/tracks/ecmascript/exercises/diamond/package.json +10 -68
  22. data/tracks/ecmascript/exercises/difference-of-squares/package.json +10 -68
  23. data/tracks/ecmascript/exercises/diffie-hellman/package.json +10 -68
  24. data/tracks/ecmascript/exercises/etl/package.json +10 -68
  25. data/tracks/ecmascript/exercises/flatten-array/package.json +10 -68
  26. data/tracks/ecmascript/exercises/food-chain/package.json +10 -68
  27. data/tracks/ecmascript/exercises/gigasecond/package.json +10 -68
  28. data/tracks/ecmascript/exercises/grade-school/package.json +10 -68
  29. data/tracks/ecmascript/exercises/grains/package.json +10 -68
  30. data/tracks/ecmascript/exercises/hamming/package.json +10 -68
  31. data/tracks/ecmascript/exercises/hello-world/package.json +10 -68
  32. data/tracks/ecmascript/exercises/hexadecimal/package.json +10 -68
  33. data/tracks/ecmascript/exercises/isogram/package.json +10 -68
  34. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +10 -68
  35. data/tracks/ecmascript/exercises/largest-series-product/package.json +10 -68
  36. data/tracks/ecmascript/exercises/leap/package.json +10 -68
  37. data/tracks/ecmascript/exercises/linked-list/package.json +10 -68
  38. data/tracks/ecmascript/exercises/list-ops/package.json +10 -68
  39. data/tracks/ecmascript/exercises/luhn/package.json +10 -68
  40. data/tracks/ecmascript/exercises/matrix/package.json +10 -68
  41. data/tracks/ecmascript/exercises/meetup/package.json +10 -68
  42. data/tracks/ecmascript/exercises/nth-prime/package.json +10 -68
  43. data/tracks/ecmascript/exercises/ocr-numbers/package.json +10 -68
  44. data/tracks/ecmascript/exercises/octal/package.json +10 -68
  45. data/tracks/ecmascript/exercises/palindrome-products/package.json +10 -68
  46. data/tracks/ecmascript/exercises/pangram/package.json +10 -68
  47. data/tracks/ecmascript/exercises/pascals-triangle/package.json +10 -68
  48. data/tracks/ecmascript/exercises/perfect-numbers/package.json +10 -68
  49. data/tracks/ecmascript/exercises/phone-number/package.json +10 -68
  50. data/tracks/ecmascript/exercises/pig-latin/package.json +10 -68
  51. data/tracks/ecmascript/exercises/prime-factors/package.json +10 -68
  52. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +10 -68
  53. data/tracks/ecmascript/exercises/queen-attack/package.json +10 -68
  54. data/tracks/ecmascript/exercises/raindrops/package.json +10 -68
  55. data/tracks/ecmascript/exercises/rna-transcription/package.json +10 -68
  56. data/tracks/ecmascript/exercises/robot-name/package.json +10 -68
  57. data/tracks/ecmascript/exercises/robot-simulator/package.json +10 -68
  58. data/tracks/ecmascript/exercises/roman-numerals/package.json +10 -68
  59. data/tracks/ecmascript/exercises/saddle-points/package.json +10 -68
  60. data/tracks/ecmascript/exercises/say/package.json +10 -68
  61. data/tracks/ecmascript/exercises/scrabble-score/package.json +10 -68
  62. data/tracks/ecmascript/exercises/secret-handshake/package.json +10 -68
  63. data/tracks/ecmascript/exercises/series/package.json +10 -68
  64. data/tracks/ecmascript/exercises/sieve/package.json +10 -68
  65. data/tracks/ecmascript/exercises/simple-cipher/package.json +10 -68
  66. data/tracks/ecmascript/exercises/space-age/package.json +10 -68
  67. data/tracks/ecmascript/exercises/strain/package.json +10 -68
  68. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +10 -68
  69. data/tracks/ecmascript/exercises/triangle/package.json +10 -68
  70. data/tracks/ecmascript/exercises/trinary/package.json +10 -68
  71. data/tracks/ecmascript/exercises/two-bucket/package.json +10 -68
  72. data/tracks/ecmascript/exercises/word-count/package.json +10 -68
  73. data/tracks/ecmascript/exercises/wordy/package.json +10 -68
  74. data/tracks/ecmascript/package.json +10 -68
  75. data/tracks/go/.travis.yml +1 -1
  76. data/tracks/go/exercises/perfect-numbers/perfect_numbers_test.go +22 -0
  77. data/tracks/kotlin/.travis.yml +4 -2
  78. data/tracks/kotlin/bin/journey-test.sh +24 -9
  79. data/tracks/ocaml/docs/EXERCISE_README_INSERT.md +9 -1
  80. data/tracks/ocaml/exercises/forth/test.ml +3 -1
  81. data/tracks/ocaml/exercises/pangram/test.ml +2 -2
  82. data/tracks/ocaml/tools/test-generator/src/test_gen.ml +1 -1
  83. data/tracks/python/.travis.yml +1 -1
  84. data/tracks/python/docs/LEARNING.md +1 -0
  85. metadata +2 -2
@@ -10,9 +10,13 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "babel-jest": "^20.0.1",
13
- "babel-preset-env": "^1.4.0",
14
13
  "babel-plugin-transform-builtin-extend": "^1.1.2",
14
+ "babel-preset-env": "^1.4.0",
15
15
  "eslint": "^3.19.0",
16
+ "eslint-config-airbnb": "^15.0.1",
17
+ "eslint-plugin-import": "^2.2.0",
18
+ "eslint-plugin-jsx-a11y": "^5.0.1",
19
+ "eslint-plugin-react": "^7.0.1",
16
20
  "jest": "^20.0.1"
17
21
  },
18
22
  "jest": {
@@ -49,75 +53,12 @@
49
53
  "env": {
50
54
  "es6": true,
51
55
  "node": true,
52
- "jasmine": true
56
+ "jest": true
53
57
  },
54
- "extends": "eslint:recommended",
58
+ "extends": "airbnb",
55
59
  "rules": {
56
- "indent": [
57
- "off",
58
- 2
59
- ],
60
- "block-scoped-var": "off",
61
- "radix": "off",
62
- "no-use-before-define": "off",
63
- "one-var": [
64
- "off",
65
- "always"
66
- ],
67
- "quotes": [
68
- "off",
69
- "single",
70
- {
71
- "avoidEscape": true
72
- }
73
- ],
74
- "semi": [
75
- "off",
76
- "always"
77
- ],
78
- "semi-spacing": [
79
- "off",
80
- {
81
- "before": false,
82
- "after": true
83
- }
84
- ],
85
- "no-whitespace-before-property": "off",
86
- "space-before-blocks": [
87
- "off",
88
- "always"
89
- ],
90
- "space-before-function-paren": [
91
- "off",
92
- {
93
- "anonymous": "always",
94
- "named": "never"
95
- }
96
- ],
97
- "keyword-spacing": [
98
- "off",
99
- {
100
- "before": true,
101
- "after": true
102
- }
103
- ],
104
- "no-multi-spaces": "off",
105
- "no-trailing-spaces": "off",
106
- "curly": [
107
- "error",
108
- "all"
109
- ],
110
- "brace-style": [
111
- "error",
112
- "1tbs",
113
- {
114
- "allowSingleLine": true
115
- }
116
- ],
117
- "object-curly-spacing": [
118
- "off",
119
- "always"
120
- ]
60
+ "import/no-unresolved": "off",
61
+ "import/extensions": "off"
121
62
  }
122
63
  },
123
64
  "licenses": [
@@ -125,3 +66,4 @@
125
66
  ],
126
67
  "dependencies": {}
127
68
  }
69
+
@@ -10,9 +10,13 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "babel-jest": "^20.0.1",
13
- "babel-preset-env": "^1.4.0",
14
13
  "babel-plugin-transform-builtin-extend": "^1.1.2",
14
+ "babel-preset-env": "^1.4.0",
15
15
  "eslint": "^3.19.0",
16
+ "eslint-config-airbnb": "^15.0.1",
17
+ "eslint-plugin-import": "^2.2.0",
18
+ "eslint-plugin-jsx-a11y": "^5.0.1",
19
+ "eslint-plugin-react": "^7.0.1",
16
20
  "jest": "^20.0.1"
17
21
  },
18
22
  "jest": {
@@ -49,75 +53,12 @@
49
53
  "env": {
50
54
  "es6": true,
51
55
  "node": true,
52
- "jasmine": true
56
+ "jest": true
53
57
  },
54
- "extends": "eslint:recommended",
58
+ "extends": "airbnb",
55
59
  "rules": {
56
- "indent": [
57
- "off",
58
- 2
59
- ],
60
- "block-scoped-var": "off",
61
- "radix": "off",
62
- "no-use-before-define": "off",
63
- "one-var": [
64
- "off",
65
- "always"
66
- ],
67
- "quotes": [
68
- "off",
69
- "single",
70
- {
71
- "avoidEscape": true
72
- }
73
- ],
74
- "semi": [
75
- "off",
76
- "always"
77
- ],
78
- "semi-spacing": [
79
- "off",
80
- {
81
- "before": false,
82
- "after": true
83
- }
84
- ],
85
- "no-whitespace-before-property": "off",
86
- "space-before-blocks": [
87
- "off",
88
- "always"
89
- ],
90
- "space-before-function-paren": [
91
- "off",
92
- {
93
- "anonymous": "always",
94
- "named": "never"
95
- }
96
- ],
97
- "keyword-spacing": [
98
- "off",
99
- {
100
- "before": true,
101
- "after": true
102
- }
103
- ],
104
- "no-multi-spaces": "off",
105
- "no-trailing-spaces": "off",
106
- "curly": [
107
- "error",
108
- "all"
109
- ],
110
- "brace-style": [
111
- "error",
112
- "1tbs",
113
- {
114
- "allowSingleLine": true
115
- }
116
- ],
117
- "object-curly-spacing": [
118
- "off",
119
- "always"
120
- ]
60
+ "import/no-unresolved": "off",
61
+ "import/extensions": "off"
121
62
  }
122
63
  },
123
64
  "licenses": [
@@ -125,3 +66,4 @@
125
66
  ],
126
67
  "dependencies": {}
127
68
  }
69
+
@@ -10,9 +10,13 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "babel-jest": "^20.0.1",
13
- "babel-preset-env": "^1.4.0",
14
13
  "babel-plugin-transform-builtin-extend": "^1.1.2",
14
+ "babel-preset-env": "^1.4.0",
15
15
  "eslint": "^3.19.0",
16
+ "eslint-config-airbnb": "^15.0.1",
17
+ "eslint-plugin-import": "^2.2.0",
18
+ "eslint-plugin-jsx-a11y": "^5.0.1",
19
+ "eslint-plugin-react": "^7.0.1",
16
20
  "jest": "^20.0.1"
17
21
  },
18
22
  "jest": {
@@ -49,75 +53,12 @@
49
53
  "env": {
50
54
  "es6": true,
51
55
  "node": true,
52
- "jasmine": true
56
+ "jest": true
53
57
  },
54
- "extends": "eslint:recommended",
58
+ "extends": "airbnb",
55
59
  "rules": {
56
- "indent": [
57
- "off",
58
- 2
59
- ],
60
- "block-scoped-var": "off",
61
- "radix": "off",
62
- "no-use-before-define": "off",
63
- "one-var": [
64
- "off",
65
- "always"
66
- ],
67
- "quotes": [
68
- "off",
69
- "single",
70
- {
71
- "avoidEscape": true
72
- }
73
- ],
74
- "semi": [
75
- "off",
76
- "always"
77
- ],
78
- "semi-spacing": [
79
- "off",
80
- {
81
- "before": false,
82
- "after": true
83
- }
84
- ],
85
- "no-whitespace-before-property": "off",
86
- "space-before-blocks": [
87
- "off",
88
- "always"
89
- ],
90
- "space-before-function-paren": [
91
- "off",
92
- {
93
- "anonymous": "always",
94
- "named": "never"
95
- }
96
- ],
97
- "keyword-spacing": [
98
- "off",
99
- {
100
- "before": true,
101
- "after": true
102
- }
103
- ],
104
- "no-multi-spaces": "off",
105
- "no-trailing-spaces": "off",
106
- "curly": [
107
- "error",
108
- "all"
109
- ],
110
- "brace-style": [
111
- "error",
112
- "1tbs",
113
- {
114
- "allowSingleLine": true
115
- }
116
- ],
117
- "object-curly-spacing": [
118
- "off",
119
- "always"
120
- ]
60
+ "import/no-unresolved": "off",
61
+ "import/extensions": "off"
121
62
  }
122
63
  },
123
64
  "licenses": [
@@ -125,3 +66,4 @@
125
66
  ],
126
67
  "dependencies": {}
127
68
  }
69
+
@@ -45,7 +45,7 @@ install: true
45
45
  # See https://github.com/exercism/configlet.
46
46
  before_script:
47
47
  - bin/fetch-configlet
48
- - bin/configlet .
48
+ - bin/configlet lint .
49
49
 
50
50
  # Our "build" is to run `go test` which is what our users do.
51
51
  # -cpu 2 is for our problems that involve concurrency to test that they
@@ -40,3 +40,25 @@ func TestClassifiesCorrectly(t *testing.T) {
40
40
  }
41
41
  }
42
42
  }
43
+
44
+ // Test that the classifications are not equal to each other.
45
+ // If they are equal, then the tests will return false positives.
46
+ func TestClassificationsNotEqual(t *testing.T) {
47
+ classifications := []struct {
48
+ class Classification
49
+ name string
50
+ }{
51
+ {ClassificationAbundant, "ClassificationAbundant"},
52
+ {ClassificationDeficient, "ClassificationDeficient"},
53
+ {ClassificationPerfect, "ClassificationPerfect"},
54
+ }
55
+
56
+ for i, pair1 := range classifications {
57
+ for j := i + 1; j < len(classifications); j++ {
58
+ pair2 := classifications[j]
59
+ if pair1.class == pair2.class {
60
+ t.Fatalf("%s should not be equal to %s", pair1.name, pair2.name)
61
+ }
62
+ }
63
+ }
64
+ }
@@ -2,6 +2,9 @@
2
2
  language: java
3
3
  jdk:
4
4
  - oraclejdk8
5
+ env:
6
+ - SCRIPT=bin/unit-tests.sh
7
+ - SCRIPT=bin/journey-test.sh
5
8
 
6
9
  # http://docs.travis-ci.com/user/migrating-from-legacy
7
10
  sudo: false
@@ -23,8 +26,7 @@ before_script:
23
26
  - export PATH=$TRAVIS_BUILD_DIR/bin:$PATH # ensure our tools are prefered over included ones.
24
27
 
25
28
  script:
26
- - bin/unit-tests.sh
27
- - bin/journey-test.sh
29
+ - $SCRIPT
28
30
 
29
31
  # configure caching (https://docs.travis-ci.com/user/languages/java/#Caching)
30
32
  before_cache:
@@ -3,6 +3,7 @@
3
3
  TRACK=kotlin
4
4
  TRACK_REPO="$TRACK"
5
5
  TRACK_SRC_EXT="kt"
6
+ CPU_CORES=`getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`
6
7
 
7
8
  on_exit() {
8
9
  echo ">>> on_exit()"
@@ -96,6 +97,14 @@ get_cpu_architecture() {
96
97
  esac
97
98
  }
98
99
 
100
+ get_optimal_amount_of_jobs() {
101
+ if [ "$CPU_CORES" -gt "1" ]; then
102
+ echo $((CPU_CORES-1))
103
+ else
104
+ echo 1
105
+ fi
106
+ }
107
+
99
108
  download_exercism_cli() {
100
109
  local os="$1"
101
110
  local arch="$2"
@@ -162,7 +171,7 @@ make_local_trackler() {
162
171
  cp -r ${track_root}/exercises tracks/${TRACK}
163
172
 
164
173
  gem install bundler
165
- bundle install
174
+ bundle install --jobs $(get_optimal_amount_of_jobs)
166
175
  gem build trackler.gemspec
167
176
 
168
177
  # Make *this* the gem that x-api uses when we build x-api.
@@ -179,7 +188,7 @@ start_x_api() {
179
188
  pushd $xapi_home
180
189
 
181
190
  gem install bundler
182
- bundle install
191
+ bundle install --jobs $(get_optimal_amount_of_jobs)
183
192
  RACK_ENV=development rackup &
184
193
  xapi_pid=$!
185
194
  sleep 5
@@ -266,18 +275,24 @@ main() {
266
275
 
267
276
  clean "${build_dir}"
268
277
 
269
- # Make a local version of trackler that includes the source from this repo.
270
- git_clone "x-api" "${xapi_home}"
271
- git_clone "trackler" "${trackler_home}"
272
- assert_ruby_installed "${trackler_home}"
278
+ # Download everything we need in parallel
279
+ git_clone "x-api" "${xapi_home}" &
280
+ git_clone "trackler" "${trackler_home}" &
281
+ download_exercism_cli $(get_operating_system) $(get_cpu_architecture) "${exercism_home}" &
282
+ wait
283
+
284
+ # Check and install the ruby stuff we need in parallel
285
+ assert_ruby_installed "${trackler_home}" &
286
+ assert_ruby_installed "${xapi_home}" &
287
+ wait
288
+
289
+ # Make a local version of trackler
273
290
  make_local_trackler "${trackler_home}" "${xapi_home}"
274
291
 
275
- # Stand-up a local instance of x-api so we can fetch the exercises through it.
276
- assert_ruby_installed "${xapi_home}"
292
+ # Start-up a local instance of x-api so we can fetch the exercises through it.
277
293
  start_x_api "${xapi_home}"
278
294
 
279
295
  # Create a CLI install and config just for this build; this script does not use your CLI install.
280
- download_exercism_cli $(get_operating_system) $(get_cpu_architecture) "${exercism_home}"
281
296
  configure_exercism_cli "${exercism_home}" "${exercism_configfile}" "${xapi_port}"
282
297
 
283
298
  solve_all_exercises "${exercism_home}" "${exercism_configfile}"
@@ -4,9 +4,17 @@ For installation and learning resources, refer to the
4
4
  [exercism help page](http://exercism.io/languages/ocaml).
5
5
 
6
6
  ## Installation
7
- To work on the exercises, you will need `Opam` and `Core`. Consult [opam](https://opam.ocaml.org) website for instructions on how to install for your OS. Once `opam` is installed open a terminal window and run the following command to install core:
7
+ To work on the exercises, you will need `Opam` and `Core`. Consult [opam](https://opam.ocaml.org) website for instructions on how to install `opam` for your OS. Once `opam` is installed open a terminal window and run the following command to install core:
8
8
 
9
+ ```bash
9
10
  opam install core
11
+ ```
12
+
13
+ To run the tests you will need `OUnit`. Install it using `opam`:
14
+
15
+ ```bash
16
+ opam install ounit
17
+ ```
10
18
 
11
19
  ## Running Tests
12
20
  A Makefile is provided with a default target to compile your solution and run the tests. At the command line, type:
@@ -1,4 +1,4 @@
1
- (* Test/exercise version: "1.1.0" *)
1
+ (* Test/exercise version: "1.2.0" *)
2
2
 
3
3
  open Core
4
4
  open OUnit2
@@ -122,6 +122,8 @@ let user_defined_words_tests = [
122
122
  ae (Some [1; 1; 1]) (evaluate [": foo dup ;"; ": foo dup dup ;"; "1 foo"]);
123
123
  "can override built-in words" >::
124
124
  ae (Some [1; 1]) (evaluate [": swap dup ;"; "1 swap"]);
125
+ "can override built-in operators" >::
126
+ ae (Some [12]) (evaluate [": + * ;"; "3 4 +"]);
125
127
  "cannot redefine numbers" >::
126
128
  ae None (evaluate [": 1 2 ;"]);
127
129
  "errors if executing a non-existent word" >::
@@ -1,4 +1,4 @@
1
- (* Test/exercise version: "1.0.0" *)
1
+ (* Test/exercise version: "1.1.0" *)
2
2
 
3
3
  open Core
4
4
  open OUnit2
@@ -24,7 +24,7 @@ let tests = [
24
24
  "pangram with mixed case and punctuation" >::
25
25
  ae true (is_pangram "\"Five quacking Zephyrs jolt my wax bed.\"");
26
26
  "upper and lower case versions of the same character should not be counted separately" >::
27
- ae false (is_pangram "the quick brown fox jumped over the lazy FOX");
27
+ ae false (is_pangram "the quick brown fox jumps over with lazy FX");
28
28
  ]
29
29
 
30
30
  let () =
@@ -22,7 +22,7 @@ let command =
22
22
  empty
23
23
  +> flag "-l" (optional string) ~doc:"language to generate tests for"
24
24
  +> flag "-t" (optional_with_default "./templates" is_directory) ~doc:"string Directory containing templates."
25
- +> flag "-c" (optional_with_default "../../../x-common/exercises" is_directory) ~doc:"string Directory containing canonical data."
25
+ +> flag "-c" (optional_with_default "../../../problem-specifications/exercises" is_directory) ~doc:"string Directory containing canonical data."
26
26
  +> flag "-o" (optional string) ~doc:"string Directory to output generated tests."
27
27
  +> flag "-g" (optional string) ~doc:"string Directory to backup generated tests."
28
28
  +> flag "-f" (optional string) ~doc:"string Filter out files not matching this string."
@@ -23,4 +23,4 @@ before_script:
23
23
  script:
24
24
  - ./test/check-exercises.py
25
25
  - ./bin/fetch-configlet
26
- - ./bin/configlet .
26
+ - ./bin/configlet lint .
@@ -11,6 +11,7 @@ With this premise, a good, beginner friendly, starting point for those who don't
11
11
 
12
12
  ## Other Resources
13
13
 
14
+ - [Automate the Boring Stuff with Python (Book)](https://automatetheboringstuff.com/)
14
15
  - [Python3 Beginner Tutorial](https://www.youtube.com/playlist?list=PL1A2CSdiySGJd0LJRRSwQZbPZaDP0q67j)
15
16
  - [Learn Python The Hard Way (Book)](http://learnpythonthehardway.org/book/)
16
17
  - [Offical Python3 **Documentation** and **Reference**](https://docs.python.org/3/)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.54
4
+ version: 2.1.0.55
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-12 00:00:00.000000000 Z
11
+ date: 2017-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip