fanforce-plugin-factory 2.0.0.rc10 → 2.0.0.rc11

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: 390d5af91387a7f3b02561397f8c262b42b03338
4
- data.tar.gz: 4a8297cd4fbe497592481d49e3d2748670fa42e6
3
+ metadata.gz: 0117f262c7a990283c4cd07fbde01df527070bfe
4
+ data.tar.gz: ccfab32e2af805e520ea20d04206301b66a9390d
5
5
  SHA512:
6
- metadata.gz: 4257fe4a78ea785a3b18e5796aab274b93876bc558fd983cdb96536759c0b34fcbf01551c9b2d79bad2b1513f2a34ea1b0bb4c166e91d9301812dff446c5e8ad
7
- data.tar.gz: c8aed09ba1e5330ec9fbac53783d0b7d1b44f50e04c68eeb89cf178ef7beef339202e88376a472500cb66c20d9432b5f662a7154e915b9df13a7dab15569b3f3
6
+ metadata.gz: c22b3520fdb235b34005cf8c5b49d892e74d5a2fbb8d745e8ef02421bb871eb9dd0a87c6fc328ba4d0026ae5ab043400d217e759febe9aaaac54cdb8d298a228
7
+ data.tar.gz: be48557509310eebb08e9fe0028175ab5711ad021e73f2df56a9b252d9845079fe2eb08858d1cfd7e26da7eafeb2e48f79782ccab7ea97d22bfea420483e3929
@@ -39,7 +39,7 @@ Gem::Specification.new do |gem|
39
39
 
40
40
  gem.add_runtime_dependency 'fanforce-base', '>= 2.0.0.rc2'
41
41
  gem.add_runtime_dependency 'fanforce-api', '>= 2.0.0.rc4'
42
- gem.add_runtime_dependency 'fanforce-plugin-worker', '>= 2.0.0.rc6'
42
+ gem.add_runtime_dependency 'fanforce-plugin-worker', '>= 2.0.0.rc7'
43
43
 
44
44
  gem.add_development_dependency 'fanforce-test', '>= 2.0.0.rc2'
45
45
  end
@@ -22,32 +22,18 @@ class Fanforce::PluginFactory::CLI::Env
22
22
  log "#{'Updated'.format(:green,:bold)} #{environment.to_s.titleize}#{has_workers ? '... and workers have' : ' has'} #{vars.size} env variables"
23
23
  end
24
24
 
25
- def push_to(environment, vars, create_worker_env=true)
25
+ def push_to(environment, vars)
26
26
  environment = environment.to_sym
27
27
  vars.each {|k,v| puts " - #{k}" }
28
- workers_dir = "#{plugin.dir}/workers"
29
- workers_env_dir = "#{workers_dir}/.env"
30
- if create_worker_env and File.directory?(workers_dir) and vars['IRON_PROJECT_ID']
31
- FileUtils.mkdir_p(workers_env_dir) unless File.directory?(workers_env_dir)
32
- File.open("#{workers_env_dir}/#{environment}.rb", 'w') {|f| f.write convert_hash_to_ruby_env(vars) }
33
- end
34
28
  if environment == :development
35
29
  update_powenv
36
- File.open("#{plugin.dir}/.pluginenv", 'w') {|f| f.write convert_hash_to_shell_env(vars) }
30
+ File.open("#{plugin.dir}/.pluginenv", 'w') {|f| f.write self.class.convert_hash_to_shell_env(vars) }
37
31
  else
38
32
  error 'could not find heroku in .fanforce-plugin-factory' if config[:heroku][environment].blank?
39
33
  Fanforce::PluginFactory::CLI::Heroku.new(plugin, environment).update_config(vars)
40
34
  end
41
35
  end
42
36
 
43
- def convert_hash_to_shell_env(hash)
44
- hash.inject('') {|script, (k,v)| script += "export #{k}=#{v.to_s.to_json}\n" }
45
- end
46
-
47
- def convert_hash_to_ruby_env(hash)
48
- hash.inject('') {|script, (k,v)| script += "ENV['#{k}']=#{v.to_s.to_json}\n" }
49
- end
50
-
51
37
  def load_vars(environment)
52
38
  environment = environment.to_sym
53
39
  vars = {'FANFORCE_PLUGIN_ID' => plugin._id}
@@ -93,4 +79,14 @@ class Fanforce::PluginFactory::CLI::Env
93
79
  ['source .pluginenv']
94
80
  end
95
81
 
82
+ # CLASS METHODS #######################################################################
83
+
84
+ def self.convert_hash_to_shell_env(hash)
85
+ hash.inject('') {|script, (k,v)| script += "export #{k}=#{v.to_s.to_json}\n" }
86
+ end
87
+
88
+ def self.convert_hash_to_ruby_env(hash)
89
+ hash.inject('') {|script, (k,v)| script += "ENV['#{k}']=#{v.to_s.to_json}\n" }
90
+ end
91
+
96
92
  end
@@ -101,10 +101,7 @@ class Fanforce::PluginFactory::CLI::Heroku
101
101
  end
102
102
 
103
103
  def env
104
- case environment
105
- when :staging then env = :stg
106
- when :production then env = :prd
107
- end
104
+ Fanforce::PluginFactory::CLI::Utils.env(environment)
108
105
  end
109
106
 
110
107
  def app_name
@@ -10,23 +10,16 @@ class Fanforce::PluginFactory::CLI::Iron
10
10
  end
11
11
 
12
12
  def workers_dir
13
- "#{plugin.dir}/workers"
13
+ @workers_dir ||= "#{plugin.dir}/workers"
14
14
  end
15
15
 
16
16
  def upload(environment, worker_filename=nil)
17
17
  return log "#{'Skipped '.format(:bold)} no workers folder was found" if !File.directory?(workers_dir)
18
18
 
19
19
  worker_filename = worker_filename.gsub('.worker', '') if worker_filename
20
- env = Fanforce::PluginFactory::CLI::Env.new(plugin)
21
- vars = env.vars(environment) || {}
22
- #factory_version = current_factory_version
20
+ env_vars = Fanforce::PluginFactory::CLI::Env.new(plugin).vars(environment) || {}
21
+ return puts "#{'Skipped '.format(:bold)} #{environment.to_s.titleize} is missing IRON_TOKEN and/or IRON_PROJECT_ID env variables" if env_vars['IRON_TOKEN'].blank? or env_vars['IRON_PROJECT_ID'].blank?
23
22
 
24
- return puts "#{'Skipped '.format(:bold)} #{environment.to_s.titleize} is missing IRON_TOKEN and/or IRON_PROJECT_ID env variables" if vars['IRON_TOKEN'].blank? or vars['IRON_PROJECT_ID'].blank?
25
-
26
- # puts "#{'Updating Env'.format(:green,:bold)} #{environment.to_s.titleize}... and workers have #{vars.size} env variables"
27
- # env.push_to(environment, vars, true)
28
-
29
- iron_worker = IronWorker::Client.new(:token => vars['IRON_TOKEN'], :project_id => vars['IRON_PROJECT_ID'])
30
23
  Dir.chdir(workers_dir) do
31
24
  workers = Dir['*.rb']
32
25
  return puts "#{'Skipped '.format(:bold)} #{environment.to_s.titleize} has 0 workers" if workers.size == 0
@@ -34,69 +27,72 @@ class Fanforce::PluginFactory::CLI::Iron
34
27
  upload_processes = []
35
28
  workers.each do |filename|
36
29
  next if worker_filename and !filename.include?(worker_filename)
37
-
38
- compile_worker(filename, environment)
30
+ zipped_filepath = compile_worker(filename, environment, env_vars)
31
+ upload_processes << upload_worker(filename, environment, env_vars, zipped_filepath)
39
32
  end
40
33
  upload_processes.each { |pid| Process.waitpid(pid) }
41
34
  end
42
35
  end
43
36
 
44
- def compile_worker(filename, environment)
37
+ def compile_worker(filename, environment, env_vars)
45
38
  puts "#{'Compiling'.format(:green,:bold)} #{filename.gsub('.rb', '')} to #{environment.to_s.titleize}..."
46
39
  code_name = filename.gsub('.rb', '')
47
- absolute_dir = "#{workers_dir}/#{code_name}"
48
- relative_dir = "workers/#{code_name}"
49
40
 
50
- if !File.directory?(absolute_dir)
51
- puts "Creating #{relative_dir}/"
52
- Dir.mkdir(absolute_dir)
41
+ dockerized_dir = "#{workers_dir}/dockerized/#{code_name}"
42
+ dockerized_dir_relative = "workers/dockerized/#{code_name}"
43
+ Dir.mkdir("#{workers_dir}/dockerized") if !File.directory?("#{workers_dir}/dockerized")
44
+
45
+ zipped_dir = "#{workers_dir}/zipped"
46
+ zipped_filepath = "#{zipped_dir}/#{code_name}.#{env(environment)}.zip"
47
+ Dir.mkdir(zipped_dir) if !File.directory?(zipped_dir)
48
+
49
+ if !File.directory?(dockerized_dir)
50
+ puts "Creating #{dockerized_dir_relative}/"
51
+ Dir.mkdir(dockerized_dir)
53
52
  end
54
53
 
55
- if File.exists?("#{plugin.dir}/Gemfile") and !File.exists?("#{absolute_dir}/Gemfile")
56
- puts "Copying /Gemfile to #{relative_dir}/Gemfile"
57
- contents = File.read("#{plugin.dir}/Gemfile").gsub("ruby '2.1.6'", "ruby '2.1.4'")
58
- File.open("#{absolute_dir}/Gemfile", 'w') {|f| f.write(contents) }
54
+ puts "Copying /workers/#{filename} to #{dockerized_dir_relative}/#{filename}"
55
+ File.open("#{dockerized_dir}/#{filename}", 'w') do |f|
56
+ f.write File.read("#{plugin.dir}/workers/#{filename}")
59
57
  end
60
58
 
61
- if File.directory?("#{plugin.dir}/lib") and !File.directory?("#{absolute_dir}/lib")
62
- puts "Copying /lib/ to #{relative_dir}/lib/"
63
- FileUtils.copy_entry("#{plugin.dir}/lib", "#{absolute_dir}/lib")
59
+ puts "Copying /Gemfile to #{dockerized_dir_relative}/Gemfile"
60
+ File.open("#{dockerized_dir}/Gemfile", 'w') do |f|
61
+ f.write File.read("#{plugin.dir}/Gemfile").gsub("ruby '2.1.6'", "ruby '2.1.4'")
64
62
  end
65
63
 
66
- if File.directory?("#{plugin.dir}/mailers") and !File.directory?("#{absolute_dir}/mailers")
67
- puts "Copying /mailers/ to #{relative_dir}/mailers/"
68
- FileUtils.copy_entry("#{plugin.dir}/mailers", "#{absolute_dir}/mailers")
64
+ puts "Copying /Gemfile.lock to #{dockerized_dir_relative}/Gemfile.lock"
65
+ File.open("#{dockerized_dir}/Gemfile.lock", 'w') do |f|
66
+ f.write File.read("#{plugin.dir}/Gemfile.lock")
69
67
  end
70
68
 
71
- puts "Dockerizing #{File.expand_path(absolute_dir)}"
72
- puts `docker run --rm -v "#{File.expand_path(absolute_dir)}":/worker -w /worker iron/images:ruby-2.1 sh -c 'bundle install --standalone'`
69
+ if File.directory?("#{plugin.dir}/lib") and !File.directory?("#{dockerized_dir}/lib")
70
+ puts "Copying /lib/ to #{dockerized_dir_relative}/lib/"
71
+ FileUtils.copy_entry("#{plugin.dir}/lib", "#{dockerized_dir}/lib")
72
+ end
73
73
 
74
- end
74
+ if File.directory?("#{plugin.dir}/mailers") and !File.directory?("#{dockerized_dir}/mailers")
75
+ puts "Copying /mailers/ to #{dockerized_dir_relative}/mailers/"
76
+ FileUtils.copy_entry("#{plugin.dir}/mailers", "#{dockerized_dir}/mailers")
77
+ end
75
78
 
76
- def upload_worker(filename)
77
- # code_name = filename.gsub('.rb', '')
78
- # puts "#{'Uploading'.format(:green,:bold)} #{filename.gsub('.rb', '')} to #{environment.to_s.titleize}..."
79
- #
80
- # code = IronWorker::Code::Ruby.new(:workerfile => "#{plugin.dir}/workers/#{filename}")
81
- # code.gem('fanforce-plugin-factory', factory_version)
82
- # code.remote
83
- # code.name = code_name
84
- # code.file("#{plugin.dir}/workers/.env/#{environment}.rb", '.env')
85
- #
86
- # upload_processes << upload_iron_worker(iron_worker, code, filename, environment)
87
- end
79
+ puts "Setting up ENV for #{environment.to_s.titleize} (#{env_vars.size} variables)"
80
+ File.open("#{dockerized_dir}/env.#{env(environment)}.rb", 'w') {|f| f.write Fanforce::PluginFactory::CLI::Env.convert_hash_to_ruby_env(env_vars) }
88
81
 
89
- def current_factory_version
90
- `bundle list`.lines.each do |line|
91
- return $1 if line =~ /fanforce-plugin-factory \(([A-Za-z0-9.-]+)\)/
92
- end
93
- error 'fanforce-plugin-factory version was not found in `bundle list`'
82
+ puts "Dockerizing #{File.expand_path(dockerized_dir)}"
83
+ console_command("docker run --rm -v \"#{File.expand_path(dockerized_dir)}\":/worker -w /worker iron/images:ruby-2.1 sh -c 'bundle install --standalone'", true)
84
+ console_command("zip -r #{zipped_filepath} #{dockerized_dir}")
85
+
86
+ return zipped_filepath
94
87
  end
95
88
 
96
- def upload_iron_worker(iron_worker, code, filename, environment)
89
+ def upload_worker(filename, environment, env_vars, zipped_filepath)
90
+ code_name = filename.gsub('.rb', '')
91
+ puts "#{'Uploading'.format(:green,:bold)} #{code_name} to #{environment.to_s.titleize}..."
92
+
97
93
  fork do
98
94
  begin
99
- iron_worker.codes.create(code, max_concurrency: 5)
95
+ puts console_command("iron --project-id #{env_vars['IRON_PROJECT_ID']} --token #{env_vars['IRON_TOKEN']} worker upload --stack ruby-2.1 --name #{code_name} #{zipped_filepath} ruby #{filename}")
100
96
  rescue Exception => e
101
97
  puts "#{'Aborted '.format(:red,:bold)} upload of #{filename.gsub('.worker', '')} to #{environment.to_s.titleize}..."
102
98
  puts e.message
@@ -106,4 +102,14 @@ class Fanforce::PluginFactory::CLI::Iron
106
102
  end
107
103
  end
108
104
 
105
+ def current_factory_version
106
+ `bundle list`.lines.each do |line|
107
+ return $1 if line =~ /fanforce-plugin-factory \(([A-Za-z0-9.-]+)\)/
108
+ end
109
+ error 'fanforce-plugin-factory version was not found in `bundle list`'
110
+ end
111
+
112
+ def upload_iron_worker(iron_worker, code, filename, environment)
113
+ end
114
+
109
115
  end
@@ -14,7 +14,7 @@ module Fanforce::PluginFactory::CLI::Utils
14
14
  PTY.spawn(command) do |stdin, stdout, pid|
15
15
  stdin.each { |line| output << line; print line if print_now }
16
16
  end
17
- output.join("\n")
17
+ output.join('')
18
18
  end
19
19
 
20
20
  def silence_warnings
@@ -54,4 +54,12 @@ module Fanforce::PluginFactory::CLI::Utils
54
54
  hash.symbolize_keys!
55
55
  end
56
56
 
57
+ def env(environment)
58
+ case environment.to_sym
59
+ when :development then :dev
60
+ when :staging then :stg
61
+ when :production then :prd
62
+ end
63
+ end
64
+
57
65
  end
@@ -9,7 +9,6 @@ class Fanforce::PluginFactory::CLI::Scripts
9
9
 
10
10
  def update(type)
11
11
  type = type.to_sym
12
-
13
12
  return update_factory if type == :factory
14
13
 
15
14
  if Fanforce::CLI::TYPE == :directory_of_plugins
@@ -110,7 +109,6 @@ class Fanforce::PluginFactory::CLI::Scripts
110
109
  # end
111
110
  log divider '---------------------------------------------------------------------------------------------------+'
112
111
 
113
-
114
112
  local_path ? install_local_factory_gem(version, local_path) : install_remote_factory_gem(version)
115
113
  puts ''
116
114
  end
@@ -1,5 +1,5 @@
1
1
  class Fanforce
2
2
  class PluginFactory
3
- VERSION = '2.0.0.rc10'
3
+ VERSION = '2.0.0.rc11'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fanforce-plugin-factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc10
4
+ version: 2.0.0.rc11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caleb Clark
@@ -310,14 +310,14 @@ dependencies:
310
310
  requirements:
311
311
  - - ">="
312
312
  - !ruby/object:Gem::Version
313
- version: 2.0.0.rc6
313
+ version: 2.0.0.rc7
314
314
  type: :runtime
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
318
  - - ">="
319
319
  - !ruby/object:Gem::Version
320
- version: 2.0.0.rc6
320
+ version: 2.0.0.rc7
321
321
  - !ruby/object:Gem::Dependency
322
322
  name: fanforce-test
323
323
  requirement: !ruby/object:Gem::Requirement