percy-common 3.1.0 → 3.1.2
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/.rubocop.yml +2 -0
- data/.rubocop_todo.yml +12 -0
- data/RELEASING.md +7 -10
- data/lib/percy/common/version.rb +1 -1
- data/lib/percy/redis_client.rb +55 -39
- data/percy-common.gemspec +2 -2
- data/release.sh +67 -0
- metadata +14 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5f341799d420673ccbf3e89c87071851ba6de8f8511f3db298caf0d301e21b2
|
4
|
+
data.tar.gz: 9f9ef8f3f3f488ef54fceff7c492e52294e75e66a892a3816a1699c09ac2c48b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7448ce54194d6faf1a413f667411f1ae8b37979d1f804aa5cfac36e4dbf9fe4208e40fc55c39b142672e39403b7a61d6334d39138c7c510d8b403f62dfbc84d2
|
7
|
+
data.tar.gz: d3a713c1ef85413520241bcb5f93db074eeacfe14e3f60c702cf46e4487d0e781c28dedcc8a47b96f1ac39e5957f823a600d348a83d2ac4c3247fd6d6283fbf6
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2020-04-30 16:00:36 -0700 using RuboCop version 0.77.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
RSpec/LeakyConstantDeclaration:
|
11
|
+
Exclude:
|
12
|
+
- 'spec/percy/keyword_struct_spec.rb'
|
data/RELEASING.md
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
# Releasing
|
2
2
|
|
3
|
-
1.
|
4
|
-
1.
|
5
|
-
1. `git add lib/percy/common/version.rb`
|
6
|
-
1. `git commit -m "version bump to X.X.X"`
|
7
|
-
1. `git push origin master`
|
8
|
-
1. `git tag vX.X.X`
|
9
|
-
1. `git push --tags`
|
10
|
-
1. `bundle exec rake build`
|
11
|
-
1. `gem push pkg/percy-common-X.X.X.gem`
|
3
|
+
1. Ensure you are on the expected branch (presumably `master`) and the current branch is up-to-date.
|
4
|
+
1. Run `./release.sh`
|
12
5
|
1. Visit [RubyGems.org](https://rubygems.org/gems/percy-common) and see the gem has been published
|
13
|
-
|
6
|
+
|
7
|
+
# Creating a Release on GitHub
|
8
|
+
|
9
|
+
Finish the pre-started release opened by the script, or [create a new release](https://github.com/percy/percy-common/releases/new):
|
10
|
+
|
14
11
|
1. Enter "vX.X.X" as the tag version. It should auto complete to say "Existing Tag"
|
15
12
|
1. Enter "vX.X.X" as the release title
|
16
13
|
1. Write a brief description as to what is included in this release. Linking to specific PRs is great.
|
data/lib/percy/common/version.rb
CHANGED
data/lib/percy/redis_client.rb
CHANGED
@@ -4,17 +4,15 @@ require 'redis'
|
|
4
4
|
|
5
5
|
module Percy
|
6
6
|
class RedisClient
|
7
|
-
|
7
|
+
class InvalidConfiguration < ArgumentError
|
8
|
+
end
|
8
9
|
attr_reader :client
|
10
|
+
attr_reader :options
|
9
11
|
|
10
|
-
def initialize(
|
11
|
-
@
|
12
|
-
@
|
13
|
-
|
14
|
-
ssl: ssl_enabled?,
|
15
|
-
ssl_params: ssl_params,
|
16
|
-
),
|
17
|
-
)
|
12
|
+
def initialize(given_options = {})
|
13
|
+
@provided_options = given_options
|
14
|
+
@options = ssl_options.merge(given_options)
|
15
|
+
@client = ::Redis.new(options)
|
18
16
|
end
|
19
17
|
|
20
18
|
private def ssl_enabled?
|
@@ -22,59 +20,77 @@ module Percy
|
|
22
20
|
end
|
23
21
|
|
24
22
|
private def provided_url
|
25
|
-
|
23
|
+
@provided_options&.dig(:url)
|
24
|
+
end
|
25
|
+
|
26
|
+
private def ssl_options
|
27
|
+
{
|
28
|
+
ssl: ssl_enabled?,
|
29
|
+
ssl_params: ssl_params,
|
30
|
+
}
|
26
31
|
end
|
27
32
|
|
28
33
|
private def ssl_params
|
29
34
|
return {} unless ssl_enabled?
|
30
35
|
|
31
36
|
{
|
32
|
-
ca_file:
|
37
|
+
ca_file: certificate_authority,
|
33
38
|
cert: OpenSSL::X509::Certificate.new(client_certificate),
|
34
39
|
key: OpenSSL::PKey::RSA.new(private_key),
|
35
40
|
}
|
36
41
|
end
|
37
42
|
|
38
43
|
private def client_certificate
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
)
|
44
|
+
@provided_options&.dig(:ssl_params, :cert) ||
|
45
|
+
client_certificate_from_env ||
|
46
|
+
client_certificate_from_path
|
43
47
|
end
|
44
48
|
|
45
|
-
private def
|
46
|
-
ENV
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
private def client_certificate_from_env
|
50
|
+
ENV['REDIS_SSL_CLIENT_CERTIFICATE']
|
51
|
+
end
|
52
|
+
|
53
|
+
private def client_certificate_from_path
|
54
|
+
File.read(fetch_key('REDIS_SSL_CLIENT_CERTIFICATE_PATH'))
|
50
55
|
end
|
51
56
|
|
52
57
|
private def private_key
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
58
|
+
provided_private_key ||
|
59
|
+
private_key_from_env ||
|
60
|
+
private_key_from_path
|
61
|
+
end
|
62
|
+
|
63
|
+
private def provided_private_key
|
64
|
+
@provided_options&.dig(:ssl_params, :key)
|
65
|
+
end
|
66
|
+
|
67
|
+
private def private_key_from_env
|
68
|
+
ENV['REDIS_SSL_PRIVATE_KEY']
|
69
|
+
end
|
70
|
+
|
71
|
+
private def private_key_from_path
|
72
|
+
File.read(fetch_key('REDIS_SSL_PRIVATE_KEY_PATH'))
|
73
|
+
end
|
74
|
+
|
75
|
+
private def certificate_authority
|
76
|
+
provided_certificate_authority ||
|
77
|
+
certificate_authority_from_path
|
78
|
+
end
|
79
|
+
|
80
|
+
private def provided_certificate_authority
|
81
|
+
@provided_options&.dig(:ssl_params, :ca_file)
|
57
82
|
end
|
58
83
|
|
59
|
-
private def
|
60
|
-
|
61
|
-
'REDIS_SSL_PRIVATE_KEY_PATH',
|
62
|
-
File.join(cert_path, 'user_private.key'),
|
63
|
-
)
|
84
|
+
private def certificate_authority_from_path
|
85
|
+
fetch_key('REDIS_SSL_CERTIFICATE_AUTHORITY_PATH')
|
64
86
|
end
|
65
87
|
|
66
|
-
private def
|
67
|
-
ENV.fetch(
|
68
|
-
'REDIS_SSL_CERTIFICATE_AUTHORITY_PATH',
|
69
|
-
File.join(cert_path, 'server_ca.pem'),
|
70
|
-
)
|
88
|
+
private def fetch_key(key)
|
89
|
+
ENV.fetch(key) { missing_key(key) }
|
71
90
|
end
|
72
91
|
|
73
|
-
private def
|
74
|
-
|
75
|
-
'REDIS_SSL_CERTIFICATE_PATH',
|
76
|
-
File.expand_path('../../redis', __dir__),
|
77
|
-
)
|
92
|
+
private def missing_key(key)
|
93
|
+
raise InvalidConfiguration, "#{key} is not defined"
|
78
94
|
end
|
79
95
|
end
|
80
96
|
end
|
data/percy-common.gemspec
CHANGED
@@ -19,11 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
|
20
20
|
spec.add_dependency 'dogstatsd-ruby', '~> 4.4.0'
|
21
21
|
spec.add_dependency 'excon', '~> 0.57'
|
22
|
-
spec.add_dependency 'redis', '
|
22
|
+
spec.add_dependency 'redis', '>= 4.1.3', '< 5.0.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 2.1.4'
|
25
25
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
26
|
-
spec.add_development_dependency 'percy-style', '~> 0.
|
26
|
+
spec.add_development_dependency 'percy-style', '~> 0.7.0'
|
27
27
|
spec.add_development_dependency 'rake', '~> 12.3'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.2'
|
29
29
|
end
|
data/release.sh
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
cd "$(dirname "$0")" || exit 1
|
6
|
+
CURDIR="$(pwd)"
|
7
|
+
|
8
|
+
PERCY_COMMON_VERSION="$(grep "VERSION" lib/percy/common/version.rb | awk -F "'" '{print $2}')"
|
9
|
+
|
10
|
+
echo "Current percy-common version: $PERCY_COMMON_VERSION"
|
11
|
+
|
12
|
+
if [[ $# -lt 1 ]]; then
|
13
|
+
echo "Usage $0 <version>"
|
14
|
+
exit 1
|
15
|
+
fi
|
16
|
+
|
17
|
+
rm "$CURDIR/"percy-common*.gem >/dev/null 2>&1 || true
|
18
|
+
|
19
|
+
delete_existing_version() {
|
20
|
+
git tag -d "v$1" || true
|
21
|
+
git push origin ":v$1" || true
|
22
|
+
gem yank percy-common -v "$1" || true
|
23
|
+
}
|
24
|
+
|
25
|
+
if [[ $1 =~ ^.*delete$ ]]; then
|
26
|
+
shift
|
27
|
+
echo "Preparing to delete $1"
|
28
|
+
sleep 3
|
29
|
+
delete_existing_version "$PERCY_COMMON_VERSION"
|
30
|
+
else
|
31
|
+
CLEAN=$(
|
32
|
+
git diff-index --quiet HEAD --
|
33
|
+
echo $?
|
34
|
+
)
|
35
|
+
if [[ "$CLEAN" == "0" ]]; then
|
36
|
+
if [[ $1 == '--force' ]]; then
|
37
|
+
shift
|
38
|
+
if [[ -n $1 ]]; then
|
39
|
+
echo "Deleting version $1"
|
40
|
+
sleep 1
|
41
|
+
delete_existing_version "$1"
|
42
|
+
else
|
43
|
+
echo "Missing release version"
|
44
|
+
exit 1
|
45
|
+
fi
|
46
|
+
fi
|
47
|
+
VERSION=$1
|
48
|
+
echo "Releasing $VERSION"
|
49
|
+
sleep 1
|
50
|
+
|
51
|
+
sed -i "" -e "s/$PERCY_COMMON_VERSION/$VERSION/g" "lib/percy/common/version.rb"
|
52
|
+
git add "lib/percy/common/version.rb"
|
53
|
+
git commit -a -m "Release $VERSION" || true
|
54
|
+
|
55
|
+
git tag -a "v$VERSION" -m "$1" || true
|
56
|
+
git push origin "v$VERSION" || true
|
57
|
+
|
58
|
+
bundle exec rake build
|
59
|
+
gem push "$CURDIR/pkg/percy-common-"*.gem
|
60
|
+
open "https://github.com/percy/percy-common/releases/new?tag=v$VERSION&title=$VERSION"
|
61
|
+
rm "$CURDIR/pkg/percy-common-"*.gem
|
62
|
+
else
|
63
|
+
echo "Please commit your changes and try again"
|
64
|
+
exit 1
|
65
|
+
fi
|
66
|
+
fi
|
67
|
+
echo "Done"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dogstatsd-ruby
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: redis
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 4.1.3
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 5.0.0
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: 4.1.3
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 5.0.0
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: bundler
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +92,14 @@ dependencies:
|
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
95
|
+
version: 0.7.0
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
102
|
+
version: 0.7.0
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: rake
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,6 +139,7 @@ files:
|
|
133
139
|
- ".gitignore"
|
134
140
|
- ".rspec"
|
135
141
|
- ".rubocop.yml"
|
142
|
+
- ".rubocop_todo.yml"
|
136
143
|
- Gemfile
|
137
144
|
- Guardfile
|
138
145
|
- LICENSE
|
@@ -149,6 +156,7 @@ files:
|
|
149
156
|
- lib/percy/redis_client.rb
|
150
157
|
- lib/percy/stats.rb
|
151
158
|
- percy-common.gemspec
|
159
|
+
- release.sh
|
152
160
|
homepage: ''
|
153
161
|
licenses: []
|
154
162
|
metadata: {}
|