ecosystems-bibliothecary 14.3.0 → 15.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/README.md +8 -23
  4. data/bibliothecary.gemspec +5 -9
  5. data/lib/bibliothecary/analyser.rb +0 -31
  6. data/lib/bibliothecary/cli.rb +35 -26
  7. data/lib/bibliothecary/configuration.rb +1 -6
  8. data/lib/bibliothecary/dependency.rb +1 -4
  9. data/lib/bibliothecary/parsers/bentoml.rb +0 -2
  10. data/lib/bibliothecary/parsers/bower.rb +0 -1
  11. data/lib/bibliothecary/parsers/cargo.rb +12 -10
  12. data/lib/bibliothecary/parsers/carthage.rb +51 -15
  13. data/lib/bibliothecary/parsers/clojars.rb +14 -18
  14. data/lib/bibliothecary/parsers/cocoapods.rb +100 -19
  15. data/lib/bibliothecary/parsers/cog.rb +0 -2
  16. data/lib/bibliothecary/parsers/conan.rb +156 -0
  17. data/lib/bibliothecary/parsers/conda.rb +0 -3
  18. data/lib/bibliothecary/parsers/cpan.rb +0 -2
  19. data/lib/bibliothecary/parsers/cran.rb +40 -19
  20. data/lib/bibliothecary/parsers/docker.rb +0 -2
  21. data/lib/bibliothecary/parsers/dub.rb +33 -8
  22. data/lib/bibliothecary/parsers/dvc.rb +0 -2
  23. data/lib/bibliothecary/parsers/elm.rb +13 -3
  24. data/lib/bibliothecary/parsers/go.rb +14 -5
  25. data/lib/bibliothecary/parsers/hackage.rb +132 -24
  26. data/lib/bibliothecary/parsers/haxelib.rb +14 -4
  27. data/lib/bibliothecary/parsers/hex.rb +37 -20
  28. data/lib/bibliothecary/parsers/homebrew.rb +0 -2
  29. data/lib/bibliothecary/parsers/julia.rb +0 -2
  30. data/lib/bibliothecary/parsers/maven.rb +35 -25
  31. data/lib/bibliothecary/parsers/meteor.rb +14 -4
  32. data/lib/bibliothecary/parsers/mlflow.rb +0 -2
  33. data/lib/bibliothecary/parsers/npm.rb +47 -59
  34. data/lib/bibliothecary/parsers/nuget.rb +22 -21
  35. data/lib/bibliothecary/parsers/ollama.rb +0 -2
  36. data/lib/bibliothecary/parsers/packagist.rb +0 -3
  37. data/lib/bibliothecary/parsers/pub.rb +0 -2
  38. data/lib/bibliothecary/parsers/pypi.rb +54 -35
  39. data/lib/bibliothecary/parsers/rubygems.rb +92 -27
  40. data/lib/bibliothecary/parsers/shard.rb +0 -1
  41. data/lib/bibliothecary/parsers/swift_pm.rb +77 -29
  42. data/lib/bibliothecary/parsers/vcpkg.rb +68 -17
  43. data/lib/bibliothecary/runner.rb +2 -15
  44. data/lib/bibliothecary/version.rb +1 -1
  45. data/lib/bibliothecary.rb +0 -4
  46. metadata +2 -110
  47. data/.codeclimate.yml +0 -25
  48. data/.github/CONTRIBUTING.md +0 -195
  49. data/.github/workflows/ci.yml +0 -25
  50. data/.gitignore +0 -10
  51. data/.rspec +0 -2
  52. data/.rubocop.yml +0 -69
  53. data/.ruby-version +0 -1
  54. data/.tidelift +0 -1
  55. data/CODE_OF_CONDUCT.md +0 -74
  56. data/Gemfile +0 -35
  57. data/Rakefile +0 -18
  58. data/bin/benchmark +0 -386
  59. data/bin/console +0 -15
  60. data/bin/setup +0 -8
  61. data/lib/bibliothecary/multi_parsers/bundler_like_manifest.rb +0 -26
  62. data/lib/bibliothecary/multi_parsers/cyclonedx.rb +0 -170
  63. data/lib/bibliothecary/multi_parsers/dependencies_csv.rb +0 -155
  64. data/lib/bibliothecary/multi_parsers/json_runtime.rb +0 -22
  65. data/lib/bibliothecary/multi_parsers/spdx.rb +0 -149
  66. data/lib/bibliothecary/purl_util.rb +0 -37
  67. data/lib/bibliothecary/runner/multi_manifest_filter.rb +0 -92
  68. data/lib/sdl_parser.rb +0 -30
@@ -6,35 +6,86 @@ module Bibliothecary
6
6
  def self.mapping
7
7
  {
8
8
  match_filename("vcpkg.json", case_insensitive: true) => {
9
- kind: 'manifest',
9
+ kind: "manifest",
10
10
  parser: :parse_vcpkg_json,
11
- }
11
+ },
12
+ match_filename("_generated-vcpkg-list.json") => {
13
+ kind: "lockfile",
14
+ parser: :parse_vcpkg_list_json,
15
+ },
12
16
  }
13
17
  end
14
18
 
19
+
15
20
  def self.parse_vcpkg_json(file_contents, options: {})
16
- source = options.fetch(:filename, 'vcpkg.json')
21
+ source = options.fetch(:filename, nil)
17
22
  json = JSON.parse(file_contents)
18
- deps = json["dependencies"].map do |dependency|
19
- name = dependency.is_a?(Hash) ? dependency['name'] : dependency
20
- if dependency.is_a?(Hash)
21
- if dependency['version>=']
22
- requirement = ">=#{dependency['version>=']}"
23
- else
24
- requirement = dependency['version'] || dependency['version-semver'] || dependency['version-date'] || dependency['version-string'] || '*'
25
- end
23
+ deps = json["dependencies"] || []
24
+ return ParserResult.new(dependencies: []) if deps.empty?
25
+
26
+ overrides = {}
27
+ json["overrides"]&.each do |override|
28
+ next unless override.is_a?(Hash) && override["name"]
29
+
30
+ version = override["version"] || override["version-semver"] || override["version-date"] || override["version-string"]
31
+ overrides[override["name"]] = format_requirement(version, override["port-version"])
32
+ end
33
+
34
+ dependencies = deps.map do |dependency|
35
+ if dependency.is_a?(String)
36
+ name = dependency
37
+ requirement = nil
38
+ is_dev = false
26
39
  else
27
- requirement = '*'
40
+ name = dependency["name"]
41
+ requirement = dependency["version>="] ? ">=#{dependency['version>=']}" : nil
42
+ is_dev = dependency["host"] == true
28
43
  end
29
- Bibliothecary::Dependency.new(
44
+
45
+ next if name.nil? || name.empty?
46
+
47
+ requirement = overrides[name] if overrides[name]
48
+
49
+ Dependency.new(
30
50
  platform: platform_name,
31
51
  name: name,
32
- requirement: requirement,
33
- type: 'runtime',
52
+ requirement: requirement || "*",
53
+ type: is_dev ? "development" : "runtime",
34
54
  source: source
35
55
  )
36
- end.uniq
37
- Bibliothecary::ParserResult.new(dependencies: deps)
56
+ end.compact.uniq
57
+
58
+ ParserResult.new(dependencies: dependencies)
59
+ end
60
+
61
+ def self.parse_vcpkg_list_json(file_contents, options: {})
62
+ source = options.fetch(:filename, nil)
63
+ json = JSON.parse(file_contents)
64
+
65
+ dependencies = json.values.map do |package_info|
66
+ name = package_info["package_name"]
67
+ next if name.nil? || name.empty?
68
+
69
+ Dependency.new(
70
+ platform: platform_name,
71
+ name: name,
72
+ requirement: format_requirement(package_info["version"], package_info["port_version"]),
73
+ type: "runtime",
74
+ source: source
75
+ )
76
+ end.compact
77
+
78
+ ParserResult.new(dependencies: dependencies)
79
+ end
80
+
81
+ def self.format_requirement(version, port_version)
82
+ return "*" unless version
83
+
84
+ if port_version && port_version > 0
85
+ "#{version}##{port_version}"
86
+ else
87
+ version
88
+ end
38
89
  end
39
90
  end
40
91
  end
@@ -177,9 +177,9 @@ module Bibliothecary
177
177
  DESCRIPTION
178
178
  META.json META.yml cpanfile
179
179
  cabal.config
180
- cyclonedx.json cyclonedx.xml
181
- dependencies.csv
182
180
  docker-compose.yml docker-compose.yaml Dockerfile
181
+ conanfile.py conanfile.txt conan.lock
182
+ _generated-vcpkg-list.json
183
183
  MLmodel
184
184
  Modelfile
185
185
  dvc.yaml
@@ -192,7 +192,6 @@ module Bibliothecary
192
192
  def common_extensions
193
193
  @common_extensions ||= %w[
194
194
  .gemspec .nuspec .csproj .cabal .podspec .podspec.json
195
- .spdx .cdx.json .cdx.xml
196
195
  ].freeze
197
196
  end
198
197
 
@@ -315,16 +314,6 @@ module Bibliothecary
315
314
  @configuration.ignored_files
316
315
  end
317
316
 
318
- # We don't know what file groups are in multi file manifests until
319
- # we process them. In those cases, process those, then reject the
320
- # RelatedFilesInfo objects that aren't in the manifest.
321
- #
322
- # This means we're likely analyzing these files twice in processing,
323
- # but we need that accurate package manager information.
324
- def filter_multi_manifest_entries(path, related_files_info_entries)
325
- MultiManifestFilter.new(path: path, related_files_info_entries: related_files_info_entries, runner: self).results
326
- end
327
-
328
317
  private
329
318
 
330
319
  # Get the list of all package managers that apply to the file provided
@@ -340,5 +329,3 @@ module Bibliothecary
340
329
  end
341
330
  end
342
331
  end
343
-
344
- require_relative "runner/multi_manifest_filter"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bibliothecary
4
- VERSION = "14.3.0"
4
+ VERSION = "15.0.0"
5
5
  end
data/lib/bibliothecary.rb CHANGED
@@ -9,13 +9,9 @@ require "bibliothecary/runner"
9
9
  require "bibliothecary/exceptions"
10
10
  require "bibliothecary/file_info"
11
11
  require "bibliothecary/related_files_info"
12
- require "bibliothecary/purl_util"
13
12
  require "find"
14
13
  require "tomlrb"
15
14
 
16
- Dir[File.expand_path("bibliothecary/multi_parsers/*.rb", __dir__)].each do |file|
17
- require file
18
- end
19
15
  Dir[File.expand_path("bibliothecary/parsers/*.rb", __dir__)].each do |file|
20
16
  require file
21
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecosystems-bibliothecary
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.3.0
4
+ version: 15.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Nesbitt
@@ -23,20 +23,6 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
- - !ruby/object:Gem::Dependency
27
- name: commander
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
26
  - !ruby/object:Gem::Dependency
41
27
  name: csv
42
28
  requirement: !ruby/object:Gem::Requirement
@@ -51,20 +37,6 @@ dependencies:
51
37
  - - ">="
52
38
  - !ruby/object:Gem::Version
53
39
  version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: deb_control
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
40
  - !ruby/object:Gem::Dependency
69
41
  name: json
70
42
  requirement: !ruby/object:Gem::Requirement
@@ -79,20 +51,6 @@ dependencies:
79
51
  - - "~>"
80
52
  - !ruby/object:Gem::Version
81
53
  version: '2.8'
82
- - !ruby/object:Gem::Dependency
83
- name: librariesio-gem-parser
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :runtime
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
54
  - !ruby/object:Gem::Dependency
97
55
  name: ox
98
56
  requirement: !ruby/object:Gem::Requirement
@@ -107,20 +65,6 @@ dependencies:
107
65
  - - ">="
108
66
  - !ruby/object:Gem::Version
109
67
  version: 2.8.1
110
- - !ruby/object:Gem::Dependency
111
- name: packageurl-ruby
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- type: :runtime
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
68
  - !ruby/object:Gem::Dependency
125
69
  name: racc
126
70
  requirement: !ruby/object:Gem::Requirement
@@ -135,20 +79,6 @@ dependencies:
135
79
  - - ">="
136
80
  - !ruby/object:Gem::Version
137
81
  version: '0'
138
- - !ruby/object:Gem::Dependency
139
- name: sdl4r
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- type: :runtime
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
82
  - !ruby/object:Gem::Dependency
153
83
  name: tomlrb
154
84
  requirement: !ruby/object:Gem::Requirement
@@ -163,49 +93,18 @@ dependencies:
163
93
  - - "~>"
164
94
  - !ruby/object:Gem::Version
165
95
  version: '2.0'
166
- - !ruby/object:Gem::Dependency
167
- name: typhoeus
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '0'
173
- type: :runtime
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- version: '0'
180
96
  email:
181
97
  - andrewnez@gmail.com
182
98
  executables:
183
- - benchmark
184
99
  - bibliothecary
185
- - console
186
- - setup
187
100
  extensions: []
188
101
  extra_rdoc_files: []
189
102
  files:
190
- - ".codeclimate.yml"
191
- - ".github/CONTRIBUTING.md"
192
- - ".github/workflows/ci.yml"
193
- - ".gitignore"
194
- - ".rspec"
195
- - ".rubocop.yml"
196
- - ".ruby-version"
197
- - ".tidelift"
198
103
  - CHANGELOG.md
199
- - CODE_OF_CONDUCT.md
200
- - Gemfile
201
104
  - LICENSE.txt
202
105
  - README.md
203
- - Rakefile
204
106
  - bibliothecary.gemspec
205
- - bin/benchmark
206
107
  - bin/bibliothecary
207
- - bin/console
208
- - bin/setup
209
108
  - lib/bibliothecary.rb
210
109
  - lib/bibliothecary/analyser.rb
211
110
  - lib/bibliothecary/analyser/analysis.rb
@@ -216,11 +115,6 @@ files:
216
115
  - lib/bibliothecary/dependency.rb
217
116
  - lib/bibliothecary/exceptions.rb
218
117
  - lib/bibliothecary/file_info.rb
219
- - lib/bibliothecary/multi_parsers/bundler_like_manifest.rb
220
- - lib/bibliothecary/multi_parsers/cyclonedx.rb
221
- - lib/bibliothecary/multi_parsers/dependencies_csv.rb
222
- - lib/bibliothecary/multi_parsers/json_runtime.rb
223
- - lib/bibliothecary/multi_parsers/spdx.rb
224
118
  - lib/bibliothecary/parser_result.rb
225
119
  - lib/bibliothecary/parsers/actions.rb
226
120
  - lib/bibliothecary/parsers/bentoml.rb
@@ -230,6 +124,7 @@ files:
230
124
  - lib/bibliothecary/parsers/clojars.rb
231
125
  - lib/bibliothecary/parsers/cocoapods.rb
232
126
  - lib/bibliothecary/parsers/cog.rb
127
+ - lib/bibliothecary/parsers/conan.rb
233
128
  - lib/bibliothecary/parsers/conda.rb
234
129
  - lib/bibliothecary/parsers/cpan.rb
235
130
  - lib/bibliothecary/parsers/cran.rb
@@ -256,14 +151,11 @@ files:
256
151
  - lib/bibliothecary/parsers/shard.rb
257
152
  - lib/bibliothecary/parsers/swift_pm.rb
258
153
  - lib/bibliothecary/parsers/vcpkg.rb
259
- - lib/bibliothecary/purl_util.rb
260
154
  - lib/bibliothecary/related_files_info.rb
261
155
  - lib/bibliothecary/runner.rb
262
- - lib/bibliothecary/runner/multi_manifest_filter.rb
263
156
  - lib/bibliothecary/version.rb
264
157
  - lib/dockerfile_parser.rb
265
158
  - lib/modelfile_parser.rb
266
- - lib/sdl_parser.rb
267
159
  homepage: https://github.com/ecosyste-ms/bibliothecary
268
160
  licenses:
269
161
  - AGPL-3.0
data/.codeclimate.yml DELETED
@@ -1,25 +0,0 @@
1
- ---
2
- engines:
3
- duplication:
4
- enabled: true
5
- config:
6
- languages:
7
- - ruby
8
- - javascript
9
- - python
10
- - php
11
- fixme:
12
- enabled: true
13
- rubocop:
14
- enabled: true
15
- ratings:
16
- paths:
17
- - "**.inc"
18
- - "**.js"
19
- - "**.jsx"
20
- - "**.module"
21
- - "**.php"
22
- - "**.py"
23
- - "**.rb"
24
- exclude_paths:
25
- - spec/
@@ -1,195 +0,0 @@
1
- ## Contributing to Libraries.io :heart:
2
- Thanks for considering contributing. These guidelines outline how to contribute to the [Libraries.io](http://github.com/librariesio) project.
3
-
4
- ## Table of Contents
5
- [What is Libraries.io all about?](#whats-librariesio-about)
6
-
7
- [Who is Libraries.io for?](#who-is-librariesio-for)
8
-
9
- [What should I know Before I get started?](#what-should-i-know-before-i-get-started)
10
- * [Code of conduct](#code-of-conduct)
11
- * [Language](#language)
12
- * [Installation and setup](#setup)
13
-
14
- [How can I contribute?](#how-can-i-contribute)
15
- * [Reporting bugs](#reporting-bugs)
16
- * [Suggesting enhancements](#suggesting-enhancements)
17
- * [Suggesting a new feature](#suggesting-new-features)
18
- * [Your first contribution](#your-first-contribution)
19
- * [Tackling something meatier](#tackling-something-meatier)
20
-
21
- [How can I talk to other contributors?](#how-can-i-talk-to-other-contributors)
22
- * [Chat](#chat)
23
- * [Video](#video)
24
- * [Social media](#twitter)
25
-
26
- [Who Are Libraries.io's Users?](#who-are-librariesios-users)
27
-
28
- [Our workflow](#workflow)
29
-
30
-
31
- ## What's Libraries.io About?
32
- _Our goal is to raise the quality of all software._
33
-
34
- By outlining our [mission and strategy](/strategy.md) we hope to give you more power to make decisions and determine how best to spend your time. Specifically we tackle three distinct problems:
35
-
36
- * Discovery: _Helping developers make faster, more informed decisions about the software that they use._
37
- * Maintainability: _Helping maintainers understand more about the software they depend upon and the consumers of their software._
38
- * Sustainability: _Supporting undervalued software by highlighting shortfalls in contribution and funneling support to them._
39
-
40
- The first of these problems is our foccus for Libraries.io. The other two we are trying to tackle at [Tidelift](https://tidelift.com).
41
-
42
- ## Who is Libraries.io For?
43
- Libraries.io currently caters for the needs of three distinct user groups:
44
-
45
- * Google: _is hungry for your linked datas so she can serve you up search traffic_
46
- * Searcher: _is a developer with a problem, she is looking for something to help solve it._
47
- * Maintainer: _has a project that is used within and/or incorporates open dependencies. She needs to ensure her project(s) are working as expected for users._
48
-
49
- These groups have been expanded into [personas](/personas.md) for contributors to reference.
50
-
51
- ## What Should I Know Before I Get Started?
52
-
53
- ### Code of Conduct
54
- Libraries.io is an open and inclusive [community of people](https://github.com/orgs/librariesio/people) working together. We expect contributors to abide by our [contributor code of conduct](CODE_OF_CONDUCT.md) which basically say 'be excellent to each other'. Please report unacceptable behavior to conduct@libraries.io
55
-
56
- ### Language
57
- We communicate predominately in English. Contributions to the project should be made with English as the first language. We are happy for members of the community to communicate in a language other than English in chat, email and video but be aware that this might be considered exclusive by other members of the community.
58
-
59
- ### Documentation
60
- Documentation for the project as a whole is available at [docs.libraries.io](https://docs.libraries.io). These pages are generated from the [documentation](https://github.com/librariesio/documentation) repo. Documentation that needs to be in every repo is replicated in [required-files](https://github.com/librariesio/required-files) (currently limited to [GitHub templates](https://github.com/blog/2111-issue-and-pull-request-templates)). Otherwise documentation will be specific to that repo. For example the main [Libraries.io](https://github.com/librariesio/libraries.io) `README.md` contains information about installing and running the main rails application.
61
-
62
- ### Setup
63
- If you wish to make contributions to Libraries.io then you'll need a local version of the site to test. You can find instructions to install the correct Ruby version, Postgres, and to set up the database in our [README](https://github.com/librariesio/libraries.io/blob/master/README.md#getting-started).
64
-
65
- ## How Can I Contribute?
66
-
67
- ### Reporting Bugs
68
-
69
- The simplest thing that you can do to help us is by filing good bug reports, so here we go:
70
-
71
- #### Before Submitting a Bug Report
72
-
73
- * Double-check that the bug is persistent. The site is still in it's infancy and sometimes artifacts may appear and disappear.
74
- * Double-check the bug hasn't already been reported [on our issue tracker](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3Alibrariesio), they *should* be labelled `bug` or `bugsnag`.
75
-
76
- If something hasn't been raised, you can go ahead and create a new issue using [the template](/issue_template.md). If you'd like to help investigate further or fix the bug just mention it in your issue and check out our [workflow](#workflow).
77
-
78
- ### Suggesting Enhancements
79
-
80
- The next simplest thing you can do to help us is by telling us how we can improve the features we already support, here we go:
81
-
82
- #### Before Submitting an Enhancement
83
-
84
- * Check that the enhancement is not already [in our issue tracker](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3Alibrariesio), they should be labelled 'enhancement'.
85
-
86
- If there isn't already an issue for feature then go ahead and create a new issue for it using the [template](/issue_template.md). If you'd like to work on the enhancement then just mention it in a comment and check out our [workflow](#workflow).
87
-
88
- ### Suggesting New Features
89
-
90
- If you're into this zone then you need to understand a little more about what we're trying to achieve:
91
-
92
- #### Before Suggesting a Feature
93
-
94
- * Check that it aligns with [our strategy](strategy.md) and is specifically not in line with something we have said we will not do (for the moment this is anything to do with ranking *people*).
95
- * Check that the feature is not already [in our issue tracker](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3Alibrariesio), they should be tagged 'feature'.
96
-
97
- If you're still thinking about that killer feature that no one else is thinking about then *please* create an issue for it using the [template](/issue_template.md).
98
-
99
- ### Your First Contribution
100
- You're in luck! We label issues that are ideal for first time contributors with [`first-pr`](https://github.com/search?l=&q=is%3Aopen+is%3Aissue+org%3Alibrariesio+label%3Afirst-pr&ref=advsearch&type=Issues&utf8=%E2%9C%93). For someone who wants something a little more meaty you might find an issue that needs some assistance with [`help wanted`](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3Alibrariesio+label%3A%22help+wanted%22&type=Issues). Next you'll want to read our [workflow](#workflow).
101
-
102
- ### Tackling Something Meatier
103
-
104
- Tickets are labeled by size, skills required and to indicate workflow. Details can be found in our [labelling policy](/labelling.md).
105
-
106
- To get you started you might want to check out issues concerning [documentation](https://github.com/librariesio/documentation/issues/), [user experience](https://github.com/librariesio/libraries.io/labels/ux), [visual design](https://github.com/librariesio/libraries.io/issues/labels/visual%20design) or perhaps something already [awaiting help](https://github.com/librariesio/libraries.io/labels/help%20wanted). You may find the following useful:
107
-
108
- * Our [strategy](/strategy.md) which outlines what our goals are, how we are going to achieve those goals and what we are specifically going to avoid.
109
- * An [overview](/overview.md) of the components that make up the Libraries.io project and run the [https://libraries.io](https://libraries.io) site.
110
-
111
- ## How Can I Talk To Other Contributors?
112
-
113
- ### Chat
114
- We use [Slack](http://slack.io) for chat. There's an open invitation available to anyone who wishes to join the conversation at [http://slack.libraries.io](http://slack.libraries.io).
115
-
116
- We try to use the following channels accordingly:
117
-
118
- * `#general` channel is used for general, water cooler-type conversation, contributor updates and issue discussion.
119
- * `#events` is used to share and discuss events that may be of interest to or attended by members of the community
120
- * `#activity` contains notifications from the various platforms that we use to keep the Libraries.io project turning. Including notifications from GitHub, Twitter and our servers.
121
-
122
- Members are encouraged to openly discuss their work, their lives, share views and ask for help using chat. It should be considered a *safe space* in which there is *no such thing as a stupid question*. Conversely no one contributor should ever be expected to have read something said in a chat. If someone should know something then it should be written down as an issue and/or documented in an obvious place for others to find.
123
-
124
- ### Video
125
- [Google Hangouts](http://hangouts.google.com) is our preferred tool for video chat. We operate an [open hangout](http://bit.ly/2kWtYak) for anyone to jump into at any time to discuss issues face to face.
126
-
127
- ### Regular updates
128
- Contributors are encouraged to share what they're working on. We do this through daily or weekly updates in the `#general` channel on Slack. Updates should take the format 'currently working on X, expecting to move onto Y, blocked on Z' where x, y and z are issues in our [issue tracker](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3Alibrariesio).
129
-
130
- Additionally we host an [open hangout](http://bit.ly/2kWtYak) for any contributor to join at *5pm BST/GMT on a Tuesday* to discuss their work, the next week's priorities and to ask questions of other contributors regarding any aspect of the project. Again this is considered a *safe space* in which *there is no such thing as a stupid question*.
131
-
132
- ### Mail
133
- The [core team](https://github.com/orgs/librariesio/teams/core) operate a mailing list for project updates. If you'd like to subscribe you'll find a form in the footer on [Libraries.io](http://libraries.io).
134
-
135
- ### Twitter
136
- We have an account on Twitter at [@librariesio](http://twitter.com/librariesio). This is predominately used to retweet news, events and musings by contributors rather than as a direct method of communication. Contributors are encouraged to use @librariesio in a tweet when talking about the project, so that we may retweet if appropriate. The account is moderated and protected by the [core team](https://github.com/orgs/librariesio/teams/core).
137
-
138
- ### Facebook
139
- We have a Facebook page at [@libraries.io](https://www.facebook.com/libraries.io). Again this is predominantly used to gather and reflect news, events and musings by contributors rather than as a direct method of communication. Contributors are encouraged to reference Libraries.io in a post when talking about the project, so that we may reflect this if appropriate. Again the account is moderated and protected by the [core team](https://github.com/orgs/librariesio/teams/core).
140
-
141
- ### Medium
142
- We have a Medium account at [@librariesio](https://medium.com/@librariesio) and once again it is used to reflect news, events and musings by contributors rather than a direct method of communication. Contributors are encouraged to reference @librariesio in a post when talking about the project, so that we may recommend it if appropriate. Again the account is moderated and protected by the [core team](https://github.com/orgs/librariesio/teams/core).
143
-
144
- ## Who Are Libraries.io's Users?
145
- Libraries.io focusses on the following personas:
146
-
147
- ### Google
148
- _Is hungry for linked data so she can serve you up search traffic_
149
-
150
- ### 'Searcher'
151
- _Is a developer with a problem, she is looking for something to help solve it._
152
-
153
- ### 'Extender'
154
- _Has her own ideas. She wants access to the raw data so that she can mash up her own service and offer it to the world._
155
-
156
- ## Workflow
157
- In general we use [GitHub](https://help.github.com/) and [Git](https://git-scm.com/docs/gittutorial) to support our workflow. If you are unfamiliar with those tools then you should check them out until you feel you have a basic understanding of GitHub and a working understanding of Git. Specifically you should understand how forking, branching, committing, PRing and merging works.
158
-
159
- #### Forking
160
- We prefer that contributors fork the project in order to contribute.
161
-
162
- #### Branching
163
- We *try* to use principles of [GitHub-flow](https://lucamezzalira.com/2014/03/10/git-flow-vs-github-flow/) in our branching model. That is the `master` branch will always be deployable to the live site, and that every branch from that will be used to add a feature, fix a bug, improve something or otherwise represent an atomic unit of work.
164
-
165
- #### Ticketing
166
- We *try* to create an issue for everything. That is any bug, feature or enhancement that is worth an open, focussed and documented discussion.
167
-
168
- #### Labelling
169
- We constrain labels as they are a key part of our workflow. Tickets will be labeled according to our [labelling policy](/labelling.md).
170
-
171
- #### Templates
172
- We use templates to guide contributors toward good practice in [filing bugs, requesting enhancements and features](/issue_template.md) and in [issuing pull-requests](/pull_request_template.md).
173
-
174
- #### Commenting
175
- If it is possible to comment your contribution — for instance if you are contributing code — then do so in a way that is simple, clear, concise and lowers the level of understanding necessary for others to comprehend what comes afterward. If you are contributing code it is very likely it will be rejected if it does not contain sufficient comments.
176
-
177
- #### Committing
178
- When committing to a branch be sure to use plain, simple language that describes the incremental changes made on the branch toward the overall goal. Avoid unnecessary complexity. Simplify whenever possible. Assume a reasonable but not comprehensive knowledge of the tools, techniques and context of your work.
179
-
180
- #### Testing
181
- When adding or fixing functionality, tests should be added to help reduce future regressions and breakage. All tests are ran automatically when new commits are pushed to a branch. Pull requests with broken/missing tests are not likely to be merged.
182
-
183
- #### Submitting for Review
184
- Once a piece of work (in a branch) is complete it should be readied for review. This is your last chance to ensure that your contribution is [properly tested](#testing). If you are contributing code it is likely your contribution will be rejected if it would lower the test-coverage. Once this is done you can submit a pull-request following the [template](/pull_request_template.md).
185
-
186
- It is likely that your contributions will need to be checked by at least one member of the [core team](https://github.com/orgs/librariesio/teams/core) prior to merging. It is also incredibly likely that your contribution may need some re-work in order to be accepted. Particularly if it lacks an appropriate level of comments, tests or it is difficult to understand your commits. Please do not take offense if this is the case. We understand that contributors give their time because they want to improve the project but please understand it is another's responsibility to ensure that the project is maintainable, and good practices like these are key to ensuring that is possible.
187
-
188
- #### Reviewing a PR
189
- We appreciate that it may be difficult to offer constructive criticism, but it is a necessary part of ensuring the project is maintainable and successful. If it is difficult to understand something, request it is better documented and/or commented. If you do not feel assured of the robustness of a contribution, request it is better tested. If it is unclear what the goal of the piece of work is and how it relates to the [strategy](/strategy.md), request a clarification in the corresponding issue. If a pull-request has no corresponding issue, decreases test coverage or otherwise decreases the quality of the project. Reject it. Otherwise, merge it.
190
-
191
- #### Merging
192
- As we keep the `master` branch in a permanent state of 'deployment ready' once-merged your contribution will be live on the next deployment.
193
-
194
- #### Deploying
195
- Any member of the [deployers](https://github.com/orgs/librariesio/teams/deployers) team are able to redeploy the site. If you require a deployment then you might find one of them in our `#general` [chat channel on Slack](slack.libraries.io).
@@ -1,25 +0,0 @@
1
- name: Bibliothecary CI
2
-
3
- on:
4
- push:
5
- branches: [ main ]
6
- pull_request:
7
- branches: [ main ]
8
-
9
- jobs:
10
- build:
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
-
16
- - name: Set up Ruby
17
- uses: ruby/setup-ruby@v1
18
- with:
19
- ruby-version: 4.0.0
20
-
21
- - name: Install dependencies
22
- run: bundle install
23
-
24
- - name: Run tests
25
- run: bundle exec rake
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.gem
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color