coconductor 0.3.1 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64ea0f132cb287e2e1041e75d11b39323edfe687fed7d8fa4fb9a9b36bef0085
4
- data.tar.gz: 2606c0d12060499e5e7b9bbd6c1af97bd13caa2f1b89d676fbb78017715b61d6
3
+ metadata.gz: 295cf8fe4384c753c323d0617abf9b74436ad0887ae3558b4684b90819aabad1
4
+ data.tar.gz: cb50009fe71804e04ab800c3ab9e1d1e3d7490002d06d1e4f9d36121c67eab52
5
5
  SHA512:
6
- metadata.gz: 946313def06f3e404d007883b99381acea3d5998aafe8a54ac7c0fc2fa635714b541ae374396c260a40a3a9d5b8caf4b7cfa76bbe6cdb8df8ee8b2a23a2684e3
7
- data.tar.gz: 9926a2eb336283cdd1f4e17bba5a68ebae77a71076f7b60874367f36fb06f4df457749017c83c98828573817545f90fd48ed12113a7815158d795743b84ae677
6
+ metadata.gz: dfa120239578da0cc879d7029c54e3c2420270d3e07482113cba126bf8acaaa16d7d6222af94f00da03b0e685a27b2376c086d721db2fba821e7210d17ac9ab3
7
+ data.tar.gz: '081cc970eb3bfa46838849cc5e504d3af04dc2b8d007c8b8d4114993011fd862859392121ad3d25373c8cf84d8a41f838e5261799742752e2e2974cfcd17ffa9'
@@ -3,26 +3,20 @@ require 'toml'
3
3
  module Coconductor
4
4
  class InvalidCodeOfConduct < ArgumentError; end
5
5
  class CodeOfConduct
6
- VENDORED_CODES_OF_CONDUCT = %w[
7
- citizen-code-of-conduct
8
- contributor-covenant
9
- ].freeze
10
-
11
- KEY_REGEX = %r{
12
- (?<family>#{Regexp.union(VENDORED_CODES_OF_CONDUCT)})
13
- /version
14
- /(?<major>\d)/(?<minor>\d)(/(?<patch>\d))?
15
- /#{Coconductor::ProjectFiles::CodeOfConductFile::FILENAME_REGEX}
16
- }ix
17
- FIELD_REGEX = /\[(?<name>[A-Z_ ]{2,}).*\]/
18
-
19
6
  class << self
20
7
  def all
21
8
  @all ||= keys.map { |key| new(key) }
22
9
  end
23
10
 
24
- def find(key)
25
- all.find { |coc| coc.key == key }
11
+ def latest
12
+ @latest ||= families.map { |family| find(family) }
13
+ end
14
+
15
+ # Returns the code of conduct specified by the key with version,
16
+ # or the latest in the family if only the family is specified
17
+ def find(key_or_family)
18
+ match = all.find { |coc| coc.key == key_or_family }
19
+ match || latest_in_family(key_or_family)
26
20
  end
27
21
  alias [] find
28
22
  alias find_by_key find
@@ -40,17 +34,38 @@ module Coconductor
40
34
  end
41
35
  end
42
36
 
37
+ def latest_in_family(family, language: nil)
38
+ cocs = all.select do |coc|
39
+ coc.language == language && coc.family == family
40
+ end
41
+ cocs.max_by(&:version)
42
+ end
43
+
44
+ def families
45
+ @families ||= Dir["#{vendor_dir}/*"].map do |dir|
46
+ File.basename(dir)
47
+ end
48
+ end
49
+
43
50
  private
44
51
 
45
52
  def vendored_codes_of_conduct
46
53
  @vendored_codes_of_conduct ||= begin
47
- cocs = "{#{VENDORED_CODES_OF_CONDUCT.join(',')}}"
54
+ cocs = "{#{families.join(',')}}"
48
55
  path = File.join vendor_dir, cocs, '**', '*.md'
49
56
  Dir.glob(path)
50
57
  end
51
58
  end
52
59
  end
53
60
 
61
+ KEY_REGEX = %r{
62
+ (?<family>#{Regexp.union(CodeOfConduct.families)})
63
+ /version
64
+ /(?<major>\d)/(?<minor>\d)(/(?<patch>\d))?
65
+ /#{Coconductor::ProjectFiles::CodeOfConductFile::FILENAME_REGEX}
66
+ }ix
67
+ FIELD_REGEX = /\[(?<name>[A-Z_ ]{2,}).*\]/
68
+
54
69
  attr_reader :key
55
70
  attr_writer :content
56
71
  include Licensee::ContentHelper
@@ -87,6 +102,7 @@ module Coconductor
87
102
  def content
88
103
  @content ||= parts.last
89
104
  end
105
+ alias body content
90
106
 
91
107
  def inspect
92
108
  "#<Licensee::CodeOfConduct key=#{key}>"
@@ -104,6 +120,10 @@ module Coconductor
104
120
  family == 'citizen-code-of-conduct'
105
121
  end
106
122
 
123
+ def no_code_of_conduct?
124
+ family == 'no-code-of-conduct'
125
+ end
126
+
107
127
  def fields
108
128
  content.scan(FIELD_REGEX).flatten
109
129
  end
@@ -111,11 +131,13 @@ module Coconductor
111
131
  private
112
132
 
113
133
  def filename
114
- if contributor_covenant?
115
- filename = 'code-of-conduct'
116
- elsif citizen_code_of_conduct?
117
- filename = 'citizen_code_of_conduct'
118
- end
134
+ filename = if contributor_covenant?
135
+ 'code-of-conduct'
136
+ elsif citizen_code_of_conduct?
137
+ 'citizen_code_of_conduct'
138
+ else
139
+ 'CODE_OF_CONDUCT'
140
+ end
119
141
 
120
142
  filename << '.' + language if language
121
143
  filename << '.md'
@@ -1,3 +1,3 @@
1
1
  module Coconductor
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
@@ -4,18 +4,32 @@ require 'fileutils'
4
4
  require 'open-uri'
5
5
  require 'toml'
6
6
 
7
+ def mkdir(dir)
8
+ FileUtils.rm_rf(dir)
9
+ FileUtils.mkdir_p(dir)
10
+ end
11
+
12
+ def download_and_write(url, version: '1.0', dir: '', file: 'CODE_OF_CONDUCT.md')
13
+ content = URI.open(url).read
14
+ meta = { 'version' => version }
15
+ toml = TOML::Generator.new(meta).body
16
+ content = ['+++', toml, '+++', content].join("\n")
17
+ path = File.join(dir, 'version', *version.split('.'), file)
18
+ FileUtils.mkdir_p File.dirname(path)
19
+ File.write(path, content)
20
+ end
21
+
7
22
  repo = 'ContributorCovenant/contributor_covenant'
8
- dir = File.expand_path 'vendor/contributor-covenant'
23
+ dir = File.expand_path '../vendor/contributor-covenant', __dir__
9
24
  include_path = '*/content/version'
10
25
 
11
- FileUtils.rm_rf(dir)
12
- FileUtils.mkdir_p(dir)
26
+ mkdir(dir)
13
27
 
14
28
  tar_args = "--include=#{include_path} --strip-components=2 -C #{dir}"
15
29
  `curl -L "https://api.github.com/repos/#{repo}/tarball" | tar xf - #{tar_args}`
16
30
 
17
31
  repo = 'stumpsyn/policies'
18
- dir = 'vendor/citizen-code-of-conduct'
32
+ dir = File.expand_path '../vendor/citizen-code-of-conduct', __dir__
19
33
  file = 'citizen_code_of_conduct.md'
20
34
  versions = {
21
35
  '2.0' => 'd0594789ea324a42e26b495034952b6ce08d9f51',
@@ -24,16 +38,18 @@ versions = {
24
38
  '2.3' => 'b1eb8deb5da073c2bd02a8e742e017edfc422554'
25
39
  }
26
40
 
27
- FileUtils.rm_rf(dir)
28
- FileUtils.mkdir_p(dir)
41
+ mkdir(dir)
29
42
 
30
43
  versions.each do |version, sha|
31
44
  url = "https://github.com/#{repo}/raw/#{sha}/#{file}"
32
- content = URI.open(url).read
33
- meta = { 'version' => version }
34
- toml = TOML::Generator.new(meta).body
35
- content = ['+++', toml, '+++', content].join("\n")
36
- path = File.join(dir, 'version', *version.split('.'), file)
37
- FileUtils.mkdir_p File.dirname(path)
38
- File.write(path, content)
45
+ download_and_write(url, version: version, dir: dir, file: file)
39
46
  end
47
+
48
+ repo = 'domgetter/NCoC'
49
+ dir = 'vendor/no-code-of-conduct'
50
+ file = 'CODE_OF_CONDUCT.md'
51
+
52
+ mkdir(dir)
53
+
54
+ url = "https://github.com/#{repo}/raw/master/#{file}"
55
+ download_and_write(url, dir: dir, file: file)
@@ -8,7 +8,7 @@ aliases = ["/version/1/4/uk"]
8
8
  ## Наші зобовʼязання
9
9
 
10
10
  В інтересах зміцнення відкритого і дружнього середовища, ми, як учасники та
11
- супроводжувачі, зобовʼязуємось прймати участь в розбудові нашого проекту та
11
+ супроводжувачі, зобовʼязуємось приймати участь в розбудові нашого проекту та
12
12
  спільноти навколо нього, уникаючи будь-яких образ та притискань в залежності
13
13
  від віку, статури, особливих потреб, етнічної та гендерної приналежності,
14
14
  самовираження, досвіду, національності, зовнішнього вигляду, раси, сексуальної
@@ -20,7 +20,7 @@ aliases = ["/version/1/4/uk"]
20
20
 
21
21
  * Використання доброзичливої та зрозумілої мови
22
22
  * Повага до різних точок зору та досвіду
23
- * Вічливе сприйняття конструктивної критики
23
+ * Ввічливе сприйняття конструктивної критики
24
24
  * Зосередження уваги на тому, що краще для спільноти
25
25
  * Демонстрація співпереживання по відношенню до інших членів спільноти
26
26
 
@@ -28,44 +28,44 @@ aliases = ["/version/1/4/uk"]
28
28
 
29
29
  * Використання виразів і зображень сексуального характеру, небажана увага
30
30
  сексуального характеру чи вислови
31
- * Тролінг, або образливі/принизливі коментарі або персональні чи політичні
31
+ * Тролінг, образливі/принизливі коментарі або персональні чи політичні
32
32
  випади
33
33
  * Публічні чи приватні домагання
34
34
  * Оприлюднення приватної інформації інших осіб, наприклад поштової чи
35
35
  електронної адреси, без явної на те згоди
36
- * Інша поведінка, яка обґрунтовано може вважатись недоречної в професійному оточені
36
+ * Інша поведінка, яка обґрунтовано може вважатись недоречною в професійному оточенні
37
37
 
38
38
  ## Наші обовʼязки
39
39
 
40
40
  Супроводжувачі проекту несуть відповідальність за розʼяснення стандартів
41
- прийнятної поведінки і очікують у віповідь, на належне і справедливе
41
+ прийнятної поведінки, і від них очікується належне і справедливе
42
42
  виправлення у відповідь на будь-які випадки неприйнятної поведінки.
43
43
 
44
44
  Супроводжувачі проекту несуть відповідальність та мають право вилучати,
45
- змінювати або відхиляти коментарі, коміти, код, зміни у вікі, в проблеми, а
46
- також ішний вклад в проект, що невідповідає Кодексу поведінки, чи блокувати
45
+ змінювати або відхиляти коментарі, коміти, код, зміни у вікі, записи
46
+ та інший вклад в проект, що не відповідає Кодексу поведінки, чи блокувати
47
47
  тимчасово або назавжди будь-якого учасника за його поведінку, якщо вони
48
48
  вважають такі дії недоцільними, загрозливими, образливими або шкідливими.
49
49
 
50
50
  ## Сфера застосування
51
51
 
52
- Цей Кодекс поведінки застосовується як в середині проекту так і публічно,
52
+ Цей Кодекс поведінки застосовується як в середині проекту, так і публічно,
53
53
  коли особа представляє проект або його спільноту. Приклади представлення
54
54
  проекту або його спільноти включають використання офіційної адреси
55
55
  електронної пошти, публікації в соцальних мережах від імені проекта, або виступи
56
- на оналайн чи оффлайн подіях в якості представника проекту. Способи
56
+ на онлайн чи оффлайн подіях в якості представника проекту. Способи
57
57
  представництва можуть бути уточнені супроводжувачами проекта.
58
58
 
59
59
  ## Правозастосування
60
60
 
61
- Про випадки образливого, або іншого неприпустимого поводження можна повідомити
61
+ Про випадки образливого або іншого неприпустимого поводження можна повідомити,
62
62
  надіславши листа до команди проекта за адресою [АДРЕСА_Е-ПОШТИ]. Всі скарги
63
63
  будуть розглянуті та перевірені, що призведе до реакції, що вважається
64
64
  необхідною і доцільною відповідно до обставин. Команда проекту зобовʼязується
65
- зберігати конфеденційність позивача. Інші деталі, щодо правозастосування можуть
65
+ зберігати конфеденційність позивача. Інші деталі щодо правозастосування можуть
66
66
  оприлюднюватись окремо.
67
67
 
68
- Супроводжувачі проекту, які не дотримуються або порушують Кодекс поведінки
68
+ Супроводжувачі проекту, які не дотримуються або порушують Кодекс поведінки,
69
69
  можуть зіткнутися з тимчасовими або постійними наслідками, які визначені членами
70
70
  керівництва проекту.
71
71
 
@@ -0,0 +1,9 @@
1
+ +++
2
+ version = "1.0"
3
+
4
+ +++
5
+ # Contributor Code of Conduct
6
+
7
+ This project adheres to No Code of Conduct. We are all adults. We accept anyone's contributions. Nothing else matters.
8
+
9
+ For more information please visit the [No Code of Conduct](https://github.com/domgetter/NCoC) homepage.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coconductor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-30 00:00:00.000000000 Z
11
+ date: 2018-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: licensee
@@ -226,6 +226,7 @@ files:
226
226
  - vendor/contributor-covenant/version/1/4/code-of-conduct.uk.md
227
227
  - vendor/contributor-covenant/version/1/4/code-of-conduct.zh-cn.md
228
228
  - vendor/contributor-covenant/version/1/4/code-of-conduct.zh-tw.md
229
+ - vendor/no-code-of-conduct/version/1/0/CODE_OF_CONDUCT.md
229
230
  homepage: https://github.com/benbalter/coconductor
230
231
  licenses:
231
232
  - MIT