phraseapp_updater 2.1.1 → 3.0.0

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.
data/.circleci/config.yml DELETED
@@ -1,98 +0,0 @@
1
- version: 2.1
2
-
3
- executors:
4
- ruby:
5
- parameters:
6
- ruby-version:
7
- type: string
8
- default: "2.6"
9
- gemfile:
10
- type: string
11
- default: "Gemfile"
12
- docker:
13
- - image: circleci/ruby:<< parameters.ruby-version >>
14
- environment:
15
- BUNDLE_JOBS: 3
16
- BUNDLE_RETRY: 3
17
- BUNDLE_PATH: vendor/bundle
18
- RAILS_ENV: test
19
- BUNDLE_GEMFILE: << parameters.gemfile >>
20
-
21
- jobs:
22
- test:
23
- parameters:
24
- ruby-version:
25
- type: string
26
- executor:
27
- name: ruby
28
- ruby-version: << parameters.ruby-version >>
29
- parallelism: 1
30
- steps:
31
- - checkout
32
-
33
- - run:
34
- # Remove the non-appraisal gemfile for safety: we never want to use it.
35
- name: Prepare bundler
36
- command: bundle -v
37
-
38
- - run:
39
- name: Compute a gemfile lock
40
- command: bundle lock && cp "${BUNDLE_GEMFILE}.lock" /tmp/gem-lock
41
-
42
- - restore_cache:
43
- keys:
44
- - phraseapp_updater-v2-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
45
- - phraseapp_updater-v2
46
-
47
- - run:
48
- name: Bundle Install
49
- command: bundle check || bundle install
50
-
51
- - save_cache:
52
- key: phraseapp_updater-v2-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
53
- paths:
54
- - vendor/bundle
55
-
56
- - run:
57
- name: Run rspec
58
- command: bundle exec rspec --profile 10 --format RspecJunitFormatter --out test_results/rspec.xml --format progress
59
-
60
- - store_test_results:
61
- path: test_results
62
-
63
- publish:
64
- executor: ruby
65
- steps:
66
- - checkout
67
- - run:
68
- name: Setup Rubygems
69
- command: |
70
- mkdir ~/.gem &&
71
- echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials &&
72
- chmod 0600 ~/.gem/credentials
73
- - run:
74
- name: Publish to Rubygems
75
- command: |
76
- gem build phraseapp_updater.gemspec
77
- gem push phraseapp_updater-*.gem
78
-
79
-
80
- workflows:
81
- version: 2.1
82
- build:
83
- jobs:
84
- - test:
85
- name: 'ruby 2.5'
86
- ruby-version: "2.5"
87
- - test:
88
- name: 'ruby 2.6'
89
- ruby-version: "2.6"
90
- - publish:
91
- requires:
92
- - 'ruby 2.5'
93
- - 'ruby 2.6'
94
- filters:
95
- branches:
96
- only: master
97
- tags:
98
- ignore: /.*/
data/.envrc DELETED
@@ -1 +0,0 @@
1
- eval "$(lorri direnv)"
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.3
5
- before_install: gem install bundler -v 1.12.5
@@ -1,50 +0,0 @@
1
- # Contributor Code of Conduct
2
-
3
- As contributors and maintainers of this project, and in the interest of
4
- fostering an open and welcoming community, we pledge to respect all people who
5
- contribute through reporting issues, posting feature requests, updating
6
- documentation, submitting pull requests or patches, and other activities.
7
-
8
- We are committed to making participation in this project a harassment-free
9
- experience for everyone, regardless of level of experience, gender, gender
10
- identity and expression, sexual orientation, disability, personal appearance,
11
- body size, race, ethnicity, age, religion, or nationality.
12
-
13
- Examples of unacceptable behavior by participants include:
14
-
15
- * The use of sexualized language or imagery
16
- * Personal attacks
17
- * Trolling or insulting/derogatory comments
18
- * Public or private harassment
19
- * Publishing other's private information, such as physical or electronic
20
- addresses, without explicit permission
21
- * Other unethical or unprofessional conduct
22
-
23
- Project maintainers have the right and responsibility to remove, edit, or
24
- reject comments, commits, code, wiki edits, issues, and other contributions
25
- that are not aligned to this Code of Conduct, or to ban temporarily or
26
- permanently any contributor for other behaviors that they deem inappropriate,
27
- threatening, offensive, or harmful.
28
-
29
- By adopting this Code of Conduct, project maintainers commit themselves to
30
- fairly and consistently applying these principles to every aspect of managing
31
- this project. Project maintainers who do not follow or enforce the Code of
32
- Conduct may be permanently removed from the project team.
33
-
34
- This code of conduct applies both within project spaces and in public spaces
35
- when an individual is representing the project or its community.
36
-
37
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
- reported by contacting a project maintainer at kev@bibo.com.ph. All
39
- complaints will be reviewed and investigated and will result in a response that
40
- is deemed necessary and appropriate to the circumstances. Maintainers are
41
- obligated to maintain confidentiality with regard to the reporter of an
42
- incident.
43
-
44
- This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
- version 1.3.0, available at
46
- [http://contributor-covenant.org/version/1/3/0/][version]
47
-
48
- [homepage]: http://contributor-covenant.org
49
- [version]: http://contributor-covenant.org/version/1/3/0/
50
-
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in phraseapp_updater.gemspec
4
- gemspec
5
- gem 'byebug'
6
- gem 'rspec_junit_formatter'
7
-
8
- gem 'irb', require: false
data/README.markdown DELETED
@@ -1,177 +0,0 @@
1
- # PhraseAppUpdater
2
-
3
- [![Build Status](https://travis-ci.org/iknow/phraseapp_updater.svg?branch=master)](https://travis-ci.org/iknow/phraseapp_updater)
4
-
5
- **Version** 2.0.0
6
-
7
- This is a tool for managing synchronization between locale data in
8
- [PhraseApp](https://phraseapp.com) and committed in your project. It can perform
9
- JSON-aware three-way merges with respect to a common ancestor, and maintains a
10
- record of the common ancestor on PhraseApp using tags.
11
-
12
- Our workflow considers localization data stored on PhraseApp to be a working
13
- copy for a given branch. We expect developers working on the code and
14
- translators working on PhraseApp to both be able to make changes and have them
15
- integrated.
16
-
17
- PhraseApp provides [APIs](https://phraseapp.com/docs/api/v2/) and a [Ruby
18
- gem](https://github.com/phrase/phraseapp-ruby) for accessing them, but the API
19
- only allows either a) completely overwriting PhraseApp's data with local data or
20
- b) reapplying PhraseApp's data on top of the local data. Neither of these cases
21
- is appropriate for integrating changes made on both sides.
22
-
23
- What we want instead is a three way merge where the committed data wins on
24
- conflict. Non-conflicting changes on PhraseApp are preserved, while changes to
25
- the same key on both sides take the committed data. The result of the merge is
26
- then applied to both sides, keeping them up to date with each other.
27
-
28
- This is especially important when removing keys. Imagine we have the
29
- following, no-longer useful key:
30
-
31
- ```json
32
- unused:
33
- one: An unused
34
- ```
35
-
36
- On PhraseApp, we've added another plural form:
37
-
38
-
39
- ```json
40
- unused:
41
- one: An unused
42
- zero: No unused's
43
- ```
44
-
45
- And in our feature branch, we remove it. The result we want is that the key
46
- completely disappears, instead of getting a result like either of the above.
47
-
48
- ## Installation
49
-
50
- This gem provides a command line interface for performing the
51
- merge and uploading the result to PhraseApp. To use it, install the gem:
52
-
53
- `gem install phraseapp_updater`
54
-
55
- You may also use this gem programatically from your own application.
56
-
57
- Add this line to your application's Gemfile:
58
-
59
- ```ruby
60
- gem 'phraseapp_updater'
61
- ```
62
-
63
- And then execute:
64
-
65
- $ bundle
66
-
67
- Or install it yourself as:
68
-
69
- $ gem install phraseapp_updater
70
-
71
- ## Usage
72
-
73
- CLI
74
- ---
75
-
76
- **Setup**
77
-
78
- `phraseapp_updater setup` creates and initializes a PhraseApp project
79
- corresponding to your branch. It must be provided with the current git revision
80
- of the branch and the path to the locale files.
81
-
82
- ```
83
- phraseapp_updater setup --phraseapp_project_name=<yourbranch> --parent_commit=<yourhash> --phraseapp_api_key=<yourkey> --file-format=json <path_to_locales>
84
- ```
85
-
86
- **Synchronize**
87
-
88
- `phraseapp_updater synchronize` synchronizes a git remote branch with its
89
- corresponding PhraseApp project, incorporating changes from each side into the
90
- other. If both sides were changed, a three-way merge is performed. The result is
91
- uploaded to PhraseApp and committed and pushed to the git remote as appropriate.
92
-
93
- The option `--no_commit` may be provided to restrict changes to the PhraseApp
94
- side. If specified, then in the case that the branch was modified, the merge
95
- result will be uploaded to PhraseApp and the common ancestor updated to the
96
- branch head.
97
-
98
- ```
99
- phraseapp_updater synchronize <checkout_path> --prefix=config/locales --phraseapp_project_id=<yourid> --phraseapp_api_key=<yourkey> --file-format=json
100
- ```
101
-
102
- **Download**
103
-
104
- `phraseapp_updater download` downloads and normalizes locale files from
105
- PhraseApp, saving them to the specified location. The revision of the recorded
106
- common ancestor is printed to standard out.
107
-
108
- ```
109
- phraseapp_updater download --phraseapp_project_id=<yourid> --phraseapp_api_key=<yourkey> --file-format=json <target_path>
110
- ```
111
-
112
- **Upload**
113
-
114
- `phraseapp_updater upload` uploads normalized locale files from your branch to
115
- PhraseApp and resets the recorded common ancestor to the specified revision.
116
-
117
- ```
118
- phraseapp_updater upload --phraseapp_project_id=<yourid> --phraseapp_api_key=<yourkey> --file-format=json <path_to_locales>
119
- ```
120
-
121
- **Update Parent Commit**
122
- `phraseapp_updater update_parent_commit` records a new common ancestor on
123
- PhraseApp without changing the locales.
124
-
125
- ```
126
- phraseapp_updater update_parent_commit --phraseapp_project_id=<yourid> --phraseapp_api_key=<yourkey> --parent_commit=<yournewhash>
127
- ```
128
-
129
- **Merge**
130
-
131
- `phraseapp_updater merge` performs a content-aware three-way merge between
132
- locale files in three directories: `ancestor_path`, `our_path`, and
133
- `their_path`. In the case of conflicts, the changes from `our_path` are
134
- accepted. The results are normalized and written to the path specified with
135
- `to`.
136
-
137
- ```
138
- phraseapp_updater merge ancestor_path our_path their_path --to target_path --file-format=json
139
- ```
140
-
141
-
142
- **Diff**
143
-
144
- Performs a content-aware diff between locale files in two directories. Returns
145
- with exit status 1 or 0 to signal differences or no differences respectively
146
-
147
- ```
148
- phraseapp_updater diff path1 path2 --file-format=json
149
- ```
150
-
151
- ## Future Improvements
152
-
153
- If you'd like to contribute, these would be very helpful!
154
-
155
- * We'd like to use "unverified" translations on PhraseApp as the equivalent of
156
- an unstaged working copy. For this to work, we need to be able to recover
157
- previous translations at the same key. While PhraseApp doesn't itself keep
158
- this history, we could do this by restoring the absent keys from the diff
159
- between verified and unverified download from the common ancestor.
160
- * Expose the changed files on the command line.
161
- * Checking if PhraseApp files changed during execution before upload, to reduce the race condition window.
162
- * More specs for the API and shell.
163
-
164
- ## Development
165
-
166
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
167
-
168
- To install this gem onto your local machine, run `bundle exec rake install`. When everything is working, make a pull request.
169
-
170
- ## Contributing
171
-
172
- Bug reports and pull requests are welcome on GitHub at https://github.com/iknow/phraseapp_updater. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
173
-
174
- ## License
175
-
176
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
177
-
data/Rakefile DELETED
@@ -1,7 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
7
-
data/nix/gem/Gemfile DELETED
@@ -1,24 +0,0 @@
1
- source "https://rubygems.org/"
2
-
3
- gem "byebug", "11.0.1"
4
- gem "coderay", "1.1.2"
5
- gem "deep_merge", "1.2.1"
6
- gem "diff-lcs", "1.3"
7
- gem "hashdiff", "0.4.0"
8
- gem "io-console", "0.5.4"
9
- gem "irb", "1.2.1"
10
- gem "method_source", "0.9.2"
11
- gem "multi_json", "1.14.1"
12
- gem "oj", "2.18.5"
13
- gem "parallel", "1.19.1"
14
- gem "phraseapp-ruby", "1.6.0"
15
- gem "pry", "0.12.2"
16
- gem "rake", "10.5.0"
17
- gem "reline", "0.1.2"
18
- gem "rspec", "3.8.0"
19
- gem "rspec-core", "3.8.0"
20
- gem "rspec-expectations", "3.8.3"
21
- gem "rspec-mocks", "3.8.0"
22
- gem "rspec-support", "3.8.0"
23
- gem "rspec_junit_formatter", "0.4.1"
24
- gem "thor", "0.20.3"
data/nix/gem/Gemfile.lock DELETED
@@ -1,68 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- byebug (11.0.1)
5
- coderay (1.1.2)
6
- deep_merge (1.2.1)
7
- diff-lcs (1.3)
8
- hashdiff (0.4.0)
9
- io-console (0.5.4)
10
- irb (1.2.1)
11
- reline (>= 0.0.1)
12
- method_source (0.9.2)
13
- multi_json (1.14.1)
14
- oj (2.18.5)
15
- parallel (1.19.1)
16
- phraseapp-ruby (1.6.0)
17
- pry (0.12.2)
18
- coderay (~> 1.1.0)
19
- method_source (~> 0.9.0)
20
- rake (10.5.0)
21
- reline (0.1.2)
22
- io-console (~> 0.5)
23
- rspec (3.8.0)
24
- rspec-core (~> 3.8.0)
25
- rspec-expectations (~> 3.8.0)
26
- rspec-mocks (~> 3.8.0)
27
- rspec-core (3.8.0)
28
- rspec-support (~> 3.8.0)
29
- rspec-expectations (3.8.3)
30
- diff-lcs (>= 1.2.0, < 2.0)
31
- rspec-support (~> 3.8.0)
32
- rspec-mocks (3.8.0)
33
- diff-lcs (>= 1.2.0, < 2.0)
34
- rspec-support (~> 3.8.0)
35
- rspec-support (3.8.0)
36
- rspec_junit_formatter (0.4.1)
37
- rspec-core (>= 2, < 4, != 2.12.0)
38
- thor (0.20.3)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- byebug (= 11.0.1)
45
- coderay (= 1.1.2)
46
- deep_merge (= 1.2.1)
47
- diff-lcs (= 1.3)
48
- hashdiff (= 0.4.0)
49
- io-console (= 0.5.4)
50
- irb (= 1.2.1)
51
- method_source (= 0.9.2)
52
- multi_json (= 1.14.1)
53
- oj (= 2.18.5)
54
- parallel (= 1.19.1)
55
- phraseapp-ruby (= 1.6.0)
56
- pry (= 0.12.2)
57
- rake (= 10.5.0)
58
- reline (= 0.1.2)
59
- rspec (= 3.8.0)
60
- rspec-core (= 3.8.0)
61
- rspec-expectations (= 3.8.3)
62
- rspec-mocks (= 3.8.0)
63
- rspec-support (= 3.8.0)
64
- rspec_junit_formatter (= 0.4.1)
65
- thor (= 0.20.3)
66
-
67
- BUNDLED WITH
68
- 1.17.3
data/nix/gem/gemset.nix DELETED
@@ -1,230 +0,0 @@
1
- {
2
- byebug = {
3
- groups = ["default"];
4
- platforms = [];
5
- source = {
6
- remotes = ["https://rubygems.org"];
7
- sha256 = "1mmkls9n56l4gx2k0dnyianwz36z2zgpxli5bpsbr7jbw7hn2x6j";
8
- type = "gem";
9
- };
10
- version = "11.0.1";
11
- };
12
- coderay = {
13
- groups = ["default"];
14
- platforms = [];
15
- source = {
16
- remotes = ["https://rubygems.org"];
17
- sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
18
- type = "gem";
19
- };
20
- version = "1.1.2";
21
- };
22
- deep_merge = {
23
- groups = ["default"];
24
- platforms = [];
25
- source = {
26
- remotes = ["https://rubygems.org"];
27
- sha256 = "1q3picw7zx1xdkybmrnhmk2hycxzaa0jv4gqrby1s90dy5n7fmsb";
28
- type = "gem";
29
- };
30
- version = "1.2.1";
31
- };
32
- diff-lcs = {
33
- groups = ["default"];
34
- platforms = [];
35
- source = {
36
- remotes = ["https://rubygems.org"];
37
- sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
38
- type = "gem";
39
- };
40
- version = "1.3";
41
- };
42
- hashdiff = {
43
- groups = ["default"];
44
- platforms = [];
45
- source = {
46
- remotes = ["https://rubygems.org"];
47
- sha256 = "1ncwxv7jbm3jj9phv6dd514463bkjwggxk10n2z100wf4cjcicrk";
48
- type = "gem";
49
- };
50
- version = "0.4.0";
51
- };
52
- io-console = {
53
- groups = ["default"];
54
- platforms = [];
55
- source = {
56
- remotes = ["https://rubygems.org"];
57
- sha256 = "109yzpv9kslwra2mxnjsg3r6mwxkbqmxihj266qdvccapghi05wg";
58
- type = "gem";
59
- };
60
- version = "0.5.4";
61
- };
62
- irb = {
63
- dependencies = ["reline"];
64
- groups = ["default"];
65
- platforms = [];
66
- source = {
67
- remotes = ["https://rubygems.org"];
68
- sha256 = "1r1y8i46qd5izdszzzn5jxvwvq00m89rk0hm8cs8f21p7nlwmh5w";
69
- type = "gem";
70
- };
71
- version = "1.2.1";
72
- };
73
- method_source = {
74
- groups = ["default"];
75
- platforms = [];
76
- source = {
77
- remotes = ["https://rubygems.org"];
78
- sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
79
- type = "gem";
80
- };
81
- version = "0.9.2";
82
- };
83
- multi_json = {
84
- groups = ["default"];
85
- platforms = [];
86
- source = {
87
- remotes = ["https://rubygems.org"];
88
- sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr";
89
- type = "gem";
90
- };
91
- version = "1.14.1";
92
- };
93
- oj = {
94
- groups = ["default"];
95
- platforms = [];
96
- source = {
97
- remotes = ["https://rubygems.org"];
98
- sha256 = "1jli4mi1xpmm8564pc09bfvv7znzqghidwa3zfw21r365ihmbv2p";
99
- type = "gem";
100
- };
101
- version = "2.18.5";
102
- };
103
- parallel = {
104
- groups = ["default"];
105
- platforms = [];
106
- source = {
107
- remotes = ["https://rubygems.org"];
108
- sha256 = "12jijkap4akzdv11lm08dglsc8jmc87xcgq6947i1s3qb69f4zn2";
109
- type = "gem";
110
- };
111
- version = "1.19.1";
112
- };
113
- phraseapp-ruby = {
114
- groups = ["default"];
115
- platforms = [];
116
- source = {
117
- remotes = ["https://rubygems.org"];
118
- sha256 = "14n2hhwjn32xk0qk6rprs3awnrddhnd4zckyd0a4j8lv8k648pnn";
119
- type = "gem";
120
- };
121
- version = "1.6.0";
122
- };
123
- pry = {
124
- dependencies = ["coderay" "method_source"];
125
- groups = ["default"];
126
- platforms = [];
127
- source = {
128
- remotes = ["https://rubygems.org"];
129
- sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
130
- type = "gem";
131
- };
132
- version = "0.12.2";
133
- };
134
- rake = {
135
- groups = ["default"];
136
- platforms = [];
137
- source = {
138
- remotes = ["https://rubygems.org"];
139
- sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
140
- type = "gem";
141
- };
142
- version = "10.5.0";
143
- };
144
- reline = {
145
- dependencies = ["io-console"];
146
- groups = ["default"];
147
- platforms = [];
148
- source = {
149
- remotes = ["https://rubygems.org"];
150
- sha256 = "0908ijrngc3wkn5iny7d0kxkp74w6ixk2nwzzngplplfla1vkp8x";
151
- type = "gem";
152
- };
153
- version = "0.1.2";
154
- };
155
- rspec = {
156
- dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
157
- groups = ["default"];
158
- platforms = [];
159
- source = {
160
- remotes = ["https://rubygems.org"];
161
- sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
162
- type = "gem";
163
- };
164
- version = "3.8.0";
165
- };
166
- rspec-core = {
167
- dependencies = ["rspec-support"];
168
- groups = ["default"];
169
- platforms = [];
170
- source = {
171
- remotes = ["https://rubygems.org"];
172
- sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
173
- type = "gem";
174
- };
175
- version = "3.8.0";
176
- };
177
- rspec-expectations = {
178
- dependencies = ["diff-lcs" "rspec-support"];
179
- groups = ["default"];
180
- platforms = [];
181
- source = {
182
- remotes = ["https://rubygems.org"];
183
- sha256 = "1c4gs5ybf7km0qshdm92p38zvg32n1j2kr5fgs2icacz7xf2y6fy";
184
- type = "gem";
185
- };
186
- version = "3.8.3";
187
- };
188
- rspec-mocks = {
189
- dependencies = ["diff-lcs" "rspec-support"];
190
- groups = ["default"];
191
- platforms = [];
192
- source = {
193
- remotes = ["https://rubygems.org"];
194
- sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
195
- type = "gem";
196
- };
197
- version = "3.8.0";
198
- };
199
- rspec-support = {
200
- groups = ["default"];
201
- platforms = [];
202
- source = {
203
- remotes = ["https://rubygems.org"];
204
- sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
205
- type = "gem";
206
- };
207
- version = "3.8.0";
208
- };
209
- rspec_junit_formatter = {
210
- dependencies = ["rspec-core"];
211
- groups = ["default"];
212
- platforms = [];
213
- source = {
214
- remotes = ["https://rubygems.org"];
215
- sha256 = "1aynmrgnv26pkprrajvp7advb8nbh0x4pkwk6jwq8qmwzarzk21p";
216
- type = "gem";
217
- };
218
- version = "0.4.1";
219
- };
220
- thor = {
221
- groups = ["default"];
222
- platforms = [];
223
- source = {
224
- remotes = ["https://rubygems.org"];
225
- sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
226
- type = "gem";
227
- };
228
- version = "0.20.3";
229
- };
230
- }