remocon 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58b35965e13809b6a9cb50faf6687db01d97a654
4
- data.tar.gz: d08d352a433fb43423893bc481736508e23781c3
3
+ metadata.gz: c1e9a56ef5554b17a03ae98b922f7e97976febca
4
+ data.tar.gz: d19f3990a7453ec8bcbf9934260fe0b783645f20
5
5
  SHA512:
6
- metadata.gz: 94a3bdf29de030d03e4e6f63a7a6a61f14695d29cd8e4b82d6f2bf2e4042a92860e663125d152a6bd7bbef8671b891b9a741fa6f5b9511a040d98b5bb417e3c5
7
- data.tar.gz: 6438d1ccd13cd73c6fee406c411c8dbc0b2018f5f39b39fbf5af3d02abe1483ae6e86fcf6bdc73e113a5761508bc6f97e27e801830ba2e07f336243c70226a2a
6
+ metadata.gz: 5420808ce826240856509947c16c68de6e3db4795d77d3cf38722b4a2181a7d6be756451ddebd7e8b6c18e9a7fcd53d52ad7376c2fcc272bdbcc22fba0a51d49
7
+ data.tar.gz: e6b69061bc6093b098b9b1a4aacf588d5de01963e3145042da28b32518846e6fe402ebd88ec8b825b947910a83be7e77c9dc4772f6d63d964efb77988b8c893a
data/.gitignore CHANGED
@@ -312,4 +312,6 @@ modules.xml
312
312
 
313
313
  # End of https://www.gitignore.io/api/rubymine+all,rubymine+iml
314
314
 
315
- firebase-adminsdk.json
315
+ firebase-adminsdk.json
316
+ google-service-account.json
317
+ spec/fixture/config.json
data/Gemfile.lock CHANGED
@@ -1,8 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- remocon (0.2.0)
4
+ remocon (0.3.0)
5
5
  activesupport
6
+ google-api-client (~> 0.11)
7
+ googleauth
6
8
  thor
7
9
 
8
10
  GEM
@@ -13,15 +15,44 @@ GEM
13
15
  i18n (>= 0.7, < 2)
14
16
  minitest (~> 5.1)
15
17
  tzinfo (~> 1.1)
18
+ addressable (2.5.2)
19
+ public_suffix (>= 2.0.2, < 4.0)
16
20
  ast (2.4.0)
17
21
  coderay (1.1.2)
18
22
  concurrent-ruby (1.0.5)
23
+ declarative (0.0.10)
24
+ declarative-option (0.1.0)
19
25
  diff-lcs (1.3)
26
+ faraday (0.15.2)
27
+ multipart-post (>= 1.2, < 3)
28
+ google-api-client (0.23.4)
29
+ addressable (~> 2.5, >= 2.5.1)
30
+ googleauth (>= 0.5, < 0.7.0)
31
+ httpclient (>= 2.8.1, < 3.0)
32
+ mime-types (~> 3.0)
33
+ representable (~> 3.0)
34
+ retriable (>= 2.0, < 4.0)
35
+ googleauth (0.6.4)
36
+ faraday (~> 0.12)
37
+ jwt (>= 1.4, < 3.0)
38
+ memoist (~> 0.12)
39
+ multi_json (~> 1.11)
40
+ os (>= 0.9, < 2.0)
41
+ signet (~> 0.7)
42
+ httpclient (2.8.3)
20
43
  i18n (1.1.0)
21
44
  concurrent-ruby (~> 1.0)
22
45
  jaro_winkler (1.5.1)
46
+ jwt (2.1.0)
47
+ memoist (0.16.0)
23
48
  method_source (0.9.0)
49
+ mime-types (3.1)
50
+ mime-types-data (~> 3.2015)
51
+ mime-types-data (3.2016.0521)
24
52
  minitest (5.11.3)
53
+ multi_json (1.13.1)
54
+ multipart-post (2.0.0)
55
+ os (1.0.0)
25
56
  parallel (1.12.1)
26
57
  parser (2.5.1.2)
27
58
  ast (~> 2.4.0)
@@ -29,8 +60,14 @@ GEM
29
60
  pry (0.11.3)
30
61
  coderay (~> 1.1.0)
31
62
  method_source (~> 0.9.0)
63
+ public_suffix (3.0.2)
32
64
  rainbow (3.0.0)
33
65
  rake (10.5.0)
66
+ representable (3.0.4)
67
+ declarative (< 0.1.0)
68
+ declarative-option (< 0.2.0)
69
+ uber (< 0.2.0)
70
+ retriable (3.1.2)
34
71
  rspec (3.8.0)
35
72
  rspec-core (~> 3.8.0)
36
73
  rspec-expectations (~> 3.8.0)
@@ -53,10 +90,16 @@ GEM
53
90
  ruby-progressbar (~> 1.7)
54
91
  unicode-display_width (~> 1.0, >= 1.0.1)
55
92
  ruby-progressbar (1.10.0)
93
+ signet (0.8.1)
94
+ addressable (~> 2.3)
95
+ faraday (~> 0.9)
96
+ jwt (>= 1.5, < 3.0)
97
+ multi_json (~> 1.10)
56
98
  thor (0.20.0)
57
99
  thread_safe (0.3.6)
58
100
  tzinfo (1.2.5)
59
101
  thread_safe (~> 0.1)
102
+ uber (0.1.0)
60
103
  unicode-display_width (1.4.0)
61
104
 
62
105
  PLATFORMS
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/remocon.svg)](https://badge.fury.io/rb/remocon) [![Build Status](https://travis-ci.org/jmatsu/remocon.svg?branch=master)](https://travis-ci.org/jmatsu/remocon)
2
+
1
3
  # Remocon
2
4
 
3
5
  *remocon* is a CLI for Firebase Remote Config via its REST API.
@@ -7,7 +9,14 @@ Conditions and parameters are managed by YAML files.
7
9
 
8
10
  ## Usage
9
11
 
10
- To get an access token, `bin/get_access_token <firebase adminsdk json>` would help you.
12
+ ### Get your access token
13
+
14
+ Since v0.3.0, remocon is supporting to get an access token.
15
+ *If this doesn't work, then please try `bin/get_access_token <service-acount.json>`.*
16
+
17
+ ```bash
18
+ token=$(bundle exec remocon --service-json=<path/to/service-account-json>)
19
+ ```
11
20
 
12
21
  ### Get the current configs into your local
13
22
 
data/lib/remocon/cli.rb CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  module Remocon
4
4
  class CLI < ::Thor
5
+ desc "token", "Get your access token"
6
+ option :"service-json", type: :string, desc: "a file path to service account json"
7
+ def token
8
+ execute(Remocon::Command::GetToken)
9
+ end
10
+
5
11
  desc "create", "Create a json to be pushed"
6
12
  option :parameters, type: :string, desc: "Specify the filepath if you want to use a custom parameters file"
7
13
  option :conditions, type: :string, desc: "Specify the filepath if you want to use a custom conditions file"
@@ -15,11 +21,12 @@ module Remocon
15
21
  desc "push", "Upload remote configs based on a source json file"
16
22
  option :source, type: :string, desc: "the filepath of your config json file"
17
23
  option :etag, type: :string, desc: "the file path of etag"
18
- option :raw_etag, type: :string, desc: "the raw value of etag"
24
+ option :"raw-etag", type: :string, desc: "the raw value of etag"
19
25
  option :prefix, type: :string, desc: "the directory name which will contain project-related files"
20
26
  option :force, type: :boolean, default: false, desc: "force to ignore some warnings"
21
27
  option :token, type: :string, desc: "access token to your project"
22
28
  option :id, type: :string, desc: "your project id"
29
+ option :raw_etag, type: :string, hide: true, desc: "[Deprecated] the raw value of etag"
23
30
  option :dest, type: :string, hide: true, desc: "[Deprecated] the same with --prefix"
24
31
  def push
25
32
  execute(Remocon::Command::Push)
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Remocon
4
+ module Command
5
+ class GetToken
6
+ attr_reader :config, :cmd_opts
7
+
8
+ def initialize(opts)
9
+ @config = Remocon::Config.new(opts)
10
+ @cmd_opts = {}
11
+ end
12
+
13
+ def run
14
+ validate_options
15
+
16
+ authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
17
+ json_key_io: File.open(config.service_json_file_path),
18
+ scope: "https://www.googleapis.com/auth/firebase"
19
+ )
20
+
21
+ authorizer.fetch_access_token!
22
+ STDOUT.puts authorizer.access_token
23
+
24
+ authorizer.access_token
25
+ end
26
+
27
+ private
28
+
29
+ def validate_options
30
+ raise ValidationError, "a service account json file is not found" if config.service_json_file_path.nil? || !File.exist?(config.service_json_file_path)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -22,6 +22,10 @@ module Remocon
22
22
  @endpoint ||= "https://firebaseremoteconfig.googleapis.com/v1/projects/#{project_id}/remoteConfig"
23
23
  end
24
24
 
25
+ def service_json_file_path
26
+ @service_json_file_path ||= opts[:"service-json"]
27
+ end
28
+
25
29
  def project_id
26
30
  # FIREBASE_PROJECT_ID is for backward compatibility
27
31
  @project_id ||= (opts[:id] || ENV[REMOCON_PROJECT_ID_KEY] || ENV["FIREBASE_PROJECT_ID"] || raise("--id or #{REMOCON_PROJECT_ID_KEY} env var is required"))
@@ -71,11 +75,11 @@ module Remocon
71
75
 
72
76
  def etag
73
77
  @etag ||= begin
74
- if opts[:force] && opts[:raw_etag]
78
+ if opts[:force] && opts[:"raw-etag"]
75
79
  raise "--force and --raw_etag cannot be specified"
76
80
  end
77
81
 
78
- opts[:force] && "*" || opts[:raw_etag] || File.exist?(etag_file_path) && File.open(etag_file_path).read
82
+ opts[:force] && "*" || opts[:"raw-etag"] || File.exist?(etag_file_path) && File.open(etag_file_path).read
79
83
  end
80
84
  end
81
85
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Remocon
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/remocon.rb CHANGED
@@ -9,6 +9,8 @@ require "singleton"
9
9
  require "open-uri"
10
10
  require "fileutils"
11
11
  require "net/http"
12
+ require "googleauth"
13
+ require "google/apis/compute_v1"
12
14
 
13
15
  require "remocon/util/array"
14
16
  require "remocon/util/hash"
@@ -41,6 +43,7 @@ require "remocon/command/lib/config"
41
43
  require "remocon/command/lib/interpreter_helper"
42
44
 
43
45
  require "remocon/command/create_command"
46
+ require "remocon/command/get_token_command"
44
47
  require "remocon/command/pull_command"
45
48
  require "remocon/command/push_command"
46
49
  require "remocon/command/validate_command"
data/remocon.gemspec CHANGED
@@ -32,6 +32,8 @@ Gem::Specification.new do |spec|
32
32
  spec.require_paths = ["lib"]
33
33
 
34
34
  spec.add_dependency "activesupport"
35
+ spec.add_dependency "google-api-client", "~> 0.11"
36
+ spec.add_dependency "googleauth"
35
37
  spec.add_dependency "thor"
36
38
  spec.add_development_dependency "bundler", "~> 1.16"
37
39
  spec.add_development_dependency "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remocon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jumpei Matsuda
8
8
  autorequire:
9
9
  bindir: cmd
10
10
  cert_chain: []
11
- date: 2018-08-08 00:00:00.000000000 Z
11
+ date: 2018-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: google-api-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.11'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.11'
41
+ - !ruby/object:Gem::Dependency
42
+ name: googleauth
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: thor
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +164,7 @@ files:
136
164
  - lib/remocon.rb
137
165
  - lib/remocon/cli.rb
138
166
  - lib/remocon/command/create_command.rb
167
+ - lib/remocon/command/get_token_command.rb
139
168
  - lib/remocon/command/lib/config.rb
140
169
  - lib/remocon/command/lib/interpreter_helper.rb
141
170
  - lib/remocon/command/pull_command.rb
@@ -161,7 +190,6 @@ files:
161
190
  - lib/remocon/util/hash.rb
162
191
  - lib/remocon/util/string.rb
163
192
  - lib/remocon/version.rb
164
- - prj/config.json
165
193
  - remocon.gemspec
166
194
  - sample/basketball-b8548/conditions.yml
167
195
  - sample/basketball-b8548/config.json
data/prj/config.json DELETED
@@ -1,34 +0,0 @@
1
- {
2
- "conditions": [
3
- {
4
- "expression": "device.os == 'ios'",
5
- "name": "condition1",
6
- "tagColor": "INDIGO"
7
- },
8
- {
9
- "expression": "device.os == 'ios'",
10
- "name": "zxczx",
11
- "tagColor": "CYAN"
12
- }
13
- ],
14
- "parameters": {
15
- "key1": {
16
- "defaultValue": {
17
- "value": "100"
18
- },
19
- "conditionalValues": {
20
- "condition1": {
21
- "value": "200"
22
- },
23
- "zxczx": {
24
- "value": "100"
25
- }
26
- }
27
- },
28
- "key2": {
29
- "defaultValue": {
30
- "value": "123"
31
- }
32
- }
33
- }
34
- }