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 +4 -4
- data/lib/coconductor/code_of_conduct.rb +43 -21
- data/lib/coconductor/version.rb +1 -1
- data/script/vendor-codes-of-conduct +29 -13
- data/vendor/contributor-covenant/version/1/4/code-of-conduct.uk.md +12 -12
- data/vendor/no-code-of-conduct/version/1/0/CODE_OF_CONDUCT.md +9 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 295cf8fe4384c753c323d0617abf9b74436ad0887ae3558b4684b90819aabad1
|
4
|
+
data.tar.gz: cb50009fe71804e04ab800c3ab9e1d1e3d7490002d06d1e4f9d36121c67eab52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
25
|
-
|
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 = "{#{
|
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
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
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'
|
data/lib/coconductor/version.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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-
|
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
|