coconductor 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|