platform_sh 0.2.6.pre → 0.2.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 78c66403efc02ad1eb05b048c1f667cf7f5b2b99
4
- data.tar.gz: 59ab8cc66bfc0408f1566a5e1a72bf96899f2f20
3
+ metadata.gz: c7eaa8d84c009896dfc9bc3e68cd2f98c85045fe
4
+ data.tar.gz: 952d74292f13f8b8db7eadea39f0d6631780c2eb
5
5
  SHA512:
6
- metadata.gz: d970fd9ccb319decd295dc086f5f62006516aefe20a9c350f86028b732dc6815e4d5f18a2e5a915d4bea96cb7096da10a2ad3c8cef2f88b7e73b4adfe115067c
7
- data.tar.gz: 9e6af8337ed65aad6b0a8d87c5f93f08c598fc774e041887db103f7c5019a1883022c1f375c8fa74b76abb0196c758db867d0355b7c6259f49ee9d336d673f78
6
+ metadata.gz: 518bb82a01b507509380df30ec02b722ea60f755b82cb6429805f0fd395dcf8a6b3afb741b51ea790692d0022a611b2494705e710112e9d9af5c0f6ee0dea4f9
7
+ data.tar.gz: cb118a34499833de5245f6aebb1d2cdc7fbac85949d6827346035306c928469ebc34e4b837b03c1ad4b7a876a541fb54ecb894c789be870247c8c3cbd719070d
@@ -1,18 +1,17 @@
1
1
  require "platform_sh/version"
2
2
  require "base64"
3
3
  require 'json'
4
- require 'open3'
4
+ require 'logger'
5
+
6
+ $logger = Logger.new(STDOUT)
7
+ $logger.level = Logger::WARN
5
8
 
6
9
  class PlatformSH
7
10
  'use strict'
8
11
  # Reads Platform.sh configuration from environment and returns a single object
9
12
  def self.config
10
- conf = {}
11
- if platform_local_development?
12
- conf["relationships"] = JSON.parse(Base64.decode64(tunnel_info))
13
- return conf
14
- end
15
13
  if on_platform?
14
+ conf = {}
16
15
  conf["application"] = read_base64_json('PLATFORM_APPLICATION')
17
16
  conf["application_name"] =ENV["PLATFORM_APPLICATION_NAME"] || nil
18
17
  conf["app_dir"] =ENV["PLATFORM_APP_DIR"] || nil
@@ -27,12 +26,12 @@ class PlatformSH
27
26
  conf["variables"] = read_base64_json('PLATFORM_VARIABLES')
28
27
  end
29
28
  else
30
- $stderr.puts "This is not running on platform.sh"
29
+ $logger.warn "This is not running on platform.sh"
31
30
  return nil
32
31
  end
33
32
  conf
34
33
  end
35
-
34
+
36
35
  def self.on_platform?
37
36
  ENV.has_key? 'PLATFORM_PROJECT'
38
37
  end
@@ -40,7 +39,7 @@ class PlatformSH
40
39
  def self.is_build_environment?
41
40
  (!ENV.has_key?('PLATFORM_ENVIRONMENT') && ENV.has_key?('PLATFORM_PROJECT'))
42
41
  end
43
-
42
+
44
43
  def self.relationship rel_name, attr
45
44
  on_platform? ? config["relationships"][rel_name].first[attr] : nil
46
45
  end
@@ -50,63 +49,64 @@ class PlatformSH
50
49
  begin
51
50
  return JSON.parse(Base64.decode64(ENV[var_name]))
52
51
  rescue
53
- $stderr.puts "no " + var_name + " environment variable"
52
+ $logger.error "no " + var_name + " environment variable"
54
53
  return nil
55
54
  end
56
55
  end
57
56
 
58
57
 
59
58
  def self.read_app_config
59
+ #FIXME we should be able to get
60
60
  JSON.parse(File.read('/run/config.json'))
61
61
  end
62
-
63
-
62
+
63
+
64
64
  #Tries to guess relational database url
65
65
  def self.guess_database_url
66
66
  postgresql_url = self.guess_postgresql_url
67
67
  mysql_url = self.guess_mysql_url
68
68
  if !mysql_url.nil? && !postgresql_url.nil?
69
- $stderr.puts "More than one relational database, giving up, set configuration by hand"
69
+ $logger.info "More than one relational database, giving up, set configuration by hand"
70
70
  return nil
71
71
  end
72
72
  if (mysql_url.nil? && postgresql_url.nil?)
73
- $stderr.puts "Could not find a relational database"
73
+ $logger.info "Could not find a relational database"
74
74
  return nil
75
75
  end
76
76
  return mysql_url || postgresql_url
77
77
  end
78
78
 
79
- def self.guess_url(service_type, platform_scheme, url_template)
80
- services = PlatformSH::config["relationships"].select {|k,v| v[0]["scheme"]==platform_scheme}
81
- case services.length
82
- when 0
83
- $stderr.puts "Could not find an #{service_type}"
84
- return nil
85
- when 1
86
- service = services.first[1][0]
87
- service = service.each_with_object({}){|(k,v), h| h[k.to_sym] = v} #keys need to be symbols
88
- return url_template % service
89
- else
90
- $stderr.puts "More than one #{service_type}, giving up, set configuration by hand"
91
- end
79
+ def self.guess_url(platform_service, url_template)
80
+ services = PlatformSH::config["relationships"].select {|k,v| v[0]["service"]==platform_service}
81
+ case services.length
82
+ when 0
83
+ $logger.info "Could not find an #{platform_service}"
84
+ return nil
85
+ when 1
86
+ service = services.first[1][0]
87
+ service = service.each_with_object({}){|(k,v), h| h[k.to_sym] = v} #keys need to be symbols
88
+ return url_template % service
89
+ else
90
+ $logger.warn "More than one #{platform_service}, giving up, set configuration by hand"
91
+ end
92
92
  end
93
-
93
+
94
94
  def self.guess_elasticsearch_url
95
- self.guess_url("elasticsearch", "http", "http://%{host}:%{port}")
95
+ self.guess_url("elasticsearch", "http://%{host}:%{port}")
96
96
  end
97
-
97
+
98
98
  def self.guess_redis_url
99
- self.guess_url("redis", "redis", "redis://%{host}:%{port}")
99
+ self.guess_url("redis", "redis://%{host}:%{port}")
100
100
  end
101
-
101
+
102
102
  def self.guess_mongodb_url
103
- self.guess_url("mongodb", "mongodb", "mongodb://%{username}:%{password}@%{host}:%{port}/%{path}")
103
+ self.guess_url("mongodb", "mongodb://%{username}:%{password}@%{host}:%{port}/%{path}")
104
104
  end
105
-
105
+
106
106
  def self.guess_solr_url
107
- self.guess_url("solr", "solr", "http://%{host}:%{port}/%{path}")
107
+ self.guess_url( "solr", "http://%{host}:%{port}/%{path}")
108
108
  end
109
-
109
+
110
110
  def self.guess_mysql_url
111
111
  #fallback to mysql url if mysql2 gem is not loaded
112
112
  if Gem::Specification::find_all_by_name("mysql2").empty?
@@ -114,96 +114,29 @@ class PlatformSH
114
114
  else
115
115
  template = "mysql2://%{username}:%{password}@%{host}:%{port}/%{path}"
116
116
  end
117
- self.guess_url("mysql", "mysql",template)
117
+ self.guess_url("mysql", template)
118
118
  end
119
-
119
+
120
120
  def self.guess_rabbitmq_url
121
- self.guess_url("rabbitmq", "amqp","amqp://%{username}:%{password}@%{host}:%{port}")
121
+ self.guess_url("rabbitmq","amqp://%{username}:%{password}@%{host}:%{port}")
122
122
  end
123
-
123
+
124
124
  def self.guess_postgresql_url
125
- self.guess_url("postgresql", "pgsql","postgresql://%{username}:%{password}@%{host}:%{port}")
126
- end
127
-
128
- def self.export_services_urls
129
- if (on_platform? || platform_local_development?) && !is_build_environment?
130
- ENV['DATABASE_URL']=PlatformSH::guess_database_url
131
- ENV['MONGODB_URL']=PlatformSH::guess_mongodb_url
132
- ENV['REDIS_URL']=PlatformSH::guess_redis_url
133
- ENV['ELASTICSEARCH_URL']=PlatformSH::guess_elasticsearch_url
134
- ENV['RABBITMQ_URL']=PlatformSH::guess_rabbitmq_url
135
- ENV['SOLR_URL']=PlatformSH::guess_solr_url
136
- else
137
- $stderr.puts "Can not guess URLS when not on platform"
138
- end
139
- end
140
-
141
- def self.platform_local_development?
142
- dev_environment = ENV["RACK_ENV"] != "production" && ENV["RAILS_ENV"] != "production"
143
- dev_environment && cli_installed? && !on_platform?
144
- end
145
-
146
- def self.cli_installed?
147
- begin
148
- Open3.popen3("platform --version --yes") do |stdin, stdout, stderr, wait_thr|
149
- err = stdout.gets
150
- return (err.nil? && err.start_with?("Platform.sh CLI"))
151
- end
152
- rescue
153
- $stderr.puts "WHATTT"
154
- end
155
- end
156
-
157
- def self.tunnel_open?
158
- Open3.popen3("platform --yes tunnel:info") do |stdin, stdout, stderr, wait_thr|
159
- err = stderr.gets
160
- return !(!err.nil? && err.start_with?("No tunnels found"))
161
- end
125
+ self.guess_url("postgresql","postgresql://%{username}:%{password}@%{host}:%{port}")
162
126
  end
163
-
164
- def self.tunnel_info
165
- %x(platform tunnel:info -c --yes)
166
- end
167
-
168
- def self.tunnel_open
169
- %x(platform tunnel:open --yes)
170
- end
171
-
172
- def self.tunnel_close
173
- %x(platform tunnel:close --yes)
127
+
128
+ def self.guess_influxdb_url
129
+ self.guess_url("influxdb","http://%{host}:%{port}")
174
130
  end
175
131
 
176
- def self.local_tunnel_env
177
- puts "This is an experimental feature\n"
178
- %w(INT TERM).each do |sig|
179
- begin
180
- trap sig do
181
- shut_down
182
- end
183
- rescue ArgumentError
184
- puts "Signal #{sig} not supported"
185
- end
186
- end
187
- def self.shut_down
188
- puts "\nShutting down gracefully..."
189
- puts tunnel_close
190
- exit
191
- end
192
-
193
- command = ARGV[1]
194
- if command.nil?
195
- $stderr.puts "You must supply an executable to run"
196
- return nil
197
- end
198
- if !tunnel_open?
199
- puts tunnel_open
200
- else
201
- puts tunnel_info
202
- end
203
- export_services_urls
204
- Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
205
- puts "stdout is:" + stdout.read
206
- $stderr.puts "stderr is:" + stderr.read
207
- end
132
+ def self.export_services_urls
133
+ ENV['DATABASE_URL']=PlatformSH::guess_database_url
134
+ ENV['MONGODB_URL']=PlatformSH::guess_mongodb_url
135
+ ENV['REDIS_URL']=PlatformSH::guess_redis_url
136
+ ENV['ELASTICSEARCH_URL']=PlatformSH::guess_elasticsearch_url
137
+ ENV['RABBITMQ_URL']=PlatformSH::guess_rabbitmq_url
138
+ ENV['SOLR_URL']=PlatformSH::guess_solr_url
139
+ ENV['INFLUXDB_URL']=PlatformSH::guess_influxdb_url
208
140
  end
141
+
209
142
  end
@@ -1,3 +1,3 @@
1
1
  class PlatformSH
2
- VERSION = "0.2.6.pre"
2
+ VERSION = "0.2.6"
3
3
  end
@@ -15,8 +15,8 @@ Gem::Specification.new do |spec|
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "bin"
19
- spec.executables = spec.files.grep(%r{^bin/platform.*}) { |f| File.basename(f) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.12"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: platform_sh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6.pre
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ori Pekelman
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2017-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -69,8 +69,7 @@ dependencies:
69
69
  description: Platform.sh helper gem to ease interacting with the environment
70
70
  email:
71
71
  - ori@platform.sh
72
- executables:
73
- - platform_local_tunnel_env
72
+ executables: []
74
73
  extensions: []
75
74
  extra_rdoc_files: []
76
75
  files:
@@ -82,11 +81,9 @@ files:
82
81
  - README.md
83
82
  - Rakefile
84
83
  - bin/console
85
- - bin/platform_local_tunnel_env
86
84
  - bin/setup
87
85
  - lib/platform_sh.rb
88
86
  - lib/platform_sh/version.rb
89
- - lib/tasks/local_development.rake
90
87
  - platform.gemspec
91
88
  homepage: https://platform.sh
92
89
  licenses:
@@ -103,12 +100,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
100
  version: '0'
104
101
  required_rubygems_version: !ruby/object:Gem::Requirement
105
102
  requirements:
106
- - - ">"
103
+ - - ">="
107
104
  - !ruby/object:Gem::Version
108
- version: 1.3.1
105
+ version: '0'
109
106
  requirements: []
110
107
  rubyforge_project:
111
- rubygems_version: 2.5.1
108
+ rubygems_version: 2.6.13
112
109
  signing_key:
113
110
  specification_version: 4
114
111
  summary: Platform.sh helper gem to ease interacting with the environment
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "platform_sh"
5
-
6
- PlatformSH::local_tunnel_env
@@ -1,11 +0,0 @@
1
- require 'rake'
2
- require "platform_sh"
3
-
4
- task :default => [:local_tunnel_env]
5
-
6
- namespace :platform_sh do
7
- desc 'Open Tunnels, set services env variables to remote Platform.sh services and runs a command with the env'
8
- task :local_tunnel_env do
9
- PlatformSH::local_tunnel_env
10
- end
11
- end