ad_state_of_the_back 0.1.3
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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '034811597bad97e468a77e1942525ae2cc3c91332cb91815b8f931c0ef424b92'
|
4
|
+
data.tar.gz: 83a7cf0542a0e70d9220473a284195031e33bc803ef6be80e915806373a54cac
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9b0acbfb2b335ab194711c0879c6cfea472431de3783fcf458b573f3a621a56329b2d22d749b294270dcfff22506b814fc2a5ac0d9d262052ca7a8a57f028c0a
|
7
|
+
data.tar.gz: 52a90ae63ffaa039633fd28a20130d6bc862b923facd9db8f2a89a12b5bb7437bc25ad120cf4bc7f6987c6da76dfd0546635f5cdd52e0a13d70d6facb09b4219
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module AdStateOfTheBack
|
2
|
+
class GemfileParser
|
3
|
+
def initialize
|
4
|
+
@lockfile_parser = Bundler::LockfileParser.new(Bundler.read_file(Bundler.default_lockfile))
|
5
|
+
end
|
6
|
+
|
7
|
+
def rails_version
|
8
|
+
rails_spec = @lockfile_parser.specs.detect{ |spec| spec.name == 'rails' }
|
9
|
+
return unless rails_spec
|
10
|
+
rails_spec.version.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def ruby_version
|
14
|
+
@lockfile_parser.ruby_version
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module AdStateOfTheBack
|
2
|
+
class GoogleSpreadsheetRepository
|
3
|
+
APPLICATION_NAME = 'AD State of the Back'.freeze
|
4
|
+
SCOPE = Google::Apis::SheetsV4::AUTH_SPREADSHEETS
|
5
|
+
|
6
|
+
RUBY_VERSION_COLUMN = 'B'
|
7
|
+
RAILS_VERSION_COLUMN = 'C'
|
8
|
+
LAST_CHECKED_COLUMN = 'H'
|
9
|
+
|
10
|
+
def initialize(spreadsheet_id:)
|
11
|
+
@spreadsheet_id = spreadsheet_id
|
12
|
+
|
13
|
+
@service = Google::Apis::SheetsV4::SheetsService.new
|
14
|
+
@service.client_options.application_name = APPLICATION_NAME
|
15
|
+
@service.authorization = authorize
|
16
|
+
end
|
17
|
+
|
18
|
+
def update_spreadsheet_line(spreadsheet_line:, **values_to_update)
|
19
|
+
value_range_array = values_to_update.map do |info_to_update, value|
|
20
|
+
self.class.create_value_range_object(
|
21
|
+
info_to_update: info_to_update,
|
22
|
+
spreadsheet_line: spreadsheet_line,
|
23
|
+
value: value
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
request_body = self.class.create_batch_update_values_request_object(
|
28
|
+
value_range_array: value_range_array
|
29
|
+
)
|
30
|
+
|
31
|
+
batch_update(request_body)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.create_value_range_object(info_to_update:, spreadsheet_line:, value:)
|
37
|
+
column = const_get("#{info_to_update.upcase}_COLUMN")
|
38
|
+
Google::Apis::SheetsV4::ValueRange.new(
|
39
|
+
range: "Sheet1!#{column}#{spreadsheet_line}",
|
40
|
+
values: [[value]]
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.create_batch_update_values_request_object(value_range_array:)
|
45
|
+
Google::Apis::SheetsV4::BatchUpdateValuesRequest.new(
|
46
|
+
data: value_range_array,
|
47
|
+
value_input_option: 'RAW'
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def batch_update(request_body)
|
52
|
+
@service.batch_update_values(@spreadsheet_id, request_body) do |_, err|
|
53
|
+
Google::Apis.logger.error(err) if err
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def authorize
|
58
|
+
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
|
59
|
+
scope: SCOPE
|
60
|
+
)
|
61
|
+
|
62
|
+
authorizer.fetch_access_token!
|
63
|
+
authorizer
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AdStateOfTheBack
|
2
|
+
class Runner
|
3
|
+
def initialize(args = ARGV)
|
4
|
+
@spreadsheet_id = args[0]
|
5
|
+
@spreadsheet_line = args[1]
|
6
|
+
|
7
|
+
@google_spreadsheet_repository = GoogleSpreadsheetRepository.new(spreadsheet_id: @spreadsheet_id)
|
8
|
+
@gemfile_parser = GemfileParser.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
@google_spreadsheet_repository.update_spreadsheet_line(
|
13
|
+
spreadsheet_line: @spreadsheet_line,
|
14
|
+
ruby_version: @gemfile_parser.ruby_version,
|
15
|
+
rails_version: @gemfile_parser.rails_version,
|
16
|
+
last_checked: Time.new.strftime('%Y-%m-%d')
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ad_state_of_the_back
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Fabernovel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: byebug
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '11.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '11.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.0.2
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.0.0
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.0.2
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: google-api-client
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.33.1
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.33.1
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: googleauth
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.10.0
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.10.0
|
75
|
+
description: |-
|
76
|
+
This gem automatically gathers information about backend projects and uploads it to a Google
|
77
|
+
Spreadsheet.
|
78
|
+
email:
|
79
|
+
executables:
|
80
|
+
- ad_state_of_the_back
|
81
|
+
extensions: []
|
82
|
+
extra_rdoc_files: []
|
83
|
+
files:
|
84
|
+
- bin/ad_state_of_the_back
|
85
|
+
- lib/ad_state_of_the_back.rb
|
86
|
+
- lib/ad_state_of_the_back/gemfile_parser.rb
|
87
|
+
- lib/ad_state_of_the_back/google_spreadsheet_repository.rb
|
88
|
+
- lib/ad_state_of_the_back/runner.rb
|
89
|
+
homepage: https://www.fabernovel.com
|
90
|
+
licenses:
|
91
|
+
- MIT
|
92
|
+
metadata: {}
|
93
|
+
post_install_message:
|
94
|
+
rdoc_options: []
|
95
|
+
require_paths:
|
96
|
+
- lib
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
requirements: []
|
108
|
+
rubygems_version: 3.0.6
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: A simple gem to track the state of backend projects.
|
112
|
+
test_files: []
|