fontana_client_support 0.5.2 → 0.5.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmI0ZWNiMzZkZDM1MTgzYWRkNjkyMTc2NTM5NGRiMGE3ODY0OTVlMw==
4
+ NDA5MjJjNTViZjRiNjk1MmQ0Y2MwOWQyNDcwZTA1MWMxOTU5YjgyZg==
5
5
  data.tar.gz: !binary |-
6
- ZjlmOTZjYWY5ZDk1YmM2Nzc0OGUyYjkyODZiYzAzN2QxMGVhZGQxOA==
6
+ NjJkYWE4MTg3MTdmNjg3N2U2ZTJiYTliNjMwZDQ5OWE0MjZkMWM5Mw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ODgyNjZlZGE1YjlkMTJjYzE3OTg1MzRjZTUxNDRkZDNlZjE1YzUwOGE2MGY5
10
- NjY5M2I2MzRiNjYwZjBhMjE1YmYzYzAwNDFlMGVkYWMzM2FiYzc4NjQ4NTQx
11
- NjI4MjNiNTQxNmEyN2MxOTVjYjNiZDI3MmExYmQwOTQ1N2MzZTg=
9
+ ZjNiNmM0YTUxMjEzMTZjOGU0NjE1ZTc4ZjA1NDkyZTIxNDI4NjlhZTM5ZDNh
10
+ ZDFmMmZkOWY0MTRkNDBkMzBhY2Y4YTM5OWY0MDczMDQyMmIyMzBlNGFiNmMw
11
+ M2JmNjBhYTY2NTYzMmNhMGViMTkxZTVjZjg5NWU5ZjRjYmE5YjA=
12
12
  data.tar.gz: !binary |-
13
- OWE2NzM2YzMxODg1ZDVjZmI5M2YzNmY5Y2Q0MTg0NzcyN2QyODUwYjczYTI3
14
- MWNlZGM2MTNlYTAzYmJiMWU2YjljNjRiMGYxOGEyN2I5NGE1ZGY3ODc0NDcz
15
- NjlmM2RkYjEyODNjY2Q2YjU4ZTU5OTg2MTY1NzVmNmJkMGU0ZWQ=
13
+ NzVmNDI5M2UwODQ2NTRhNWYzZDUyMmY2NDVkNjczMTU5NDEzMjI4MTE2Yzc1
14
+ ZDQ1YWFhZThhNGM3MjU2MWY1NjVkMWVjMTg0OTBkYjE0NTQzOGJkYTRiNDU3
15
+ MjZiNmRiODU5MTQ2M2M3ZGJkNzdkNGMyYjEzNjJhYjk5ZWMwMjc=
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path("../../lib", __FILE__)
4
+
5
+ require 'optparse'
6
+
7
+ default_options = {
8
+ "port" => 3002,
9
+ }
10
+ banner = "%s [options]" % File.basename(__FILE__)
11
+ parser = OptionParser.new(banner) do |opt|
12
+ opt.on '-p', '--port PORT'
13
+ opt.on '-a', "--address BINDING_ADDRESS"
14
+ opt.on '-d', '--document-root DOCUMENT_ROOT_PATH'
15
+ end
16
+
17
+ options = default_options.merge(parser.getopts(ARGV))
18
+ options = options.each_with_object({}){|(k,v), d| d[k.gsub(/-/, '_').to_sym] = v}
19
+
20
+ require 'fontana_client_support'
21
+ FontanaClientSupport::ConfigServer.new(options).launch
@@ -1,24 +1,52 @@
1
1
  require 'fontana_client_support'
2
+ require 'tmpdir'
3
+ require 'fileutils'
2
4
 
3
5
  module FontanaClientSupport
4
6
  class ConfigServer
5
7
 
6
8
  # see http://doc.ruby-lang.org/ja/1.9.3/class/WEBrick=3a=3aHTTPServer.html
7
9
  def initialize(config = {})
8
- @config = {
9
- :DocumentRoot => File.join(FontanaClientSupport.root_dir, "config_server"),
10
- :BindAddress => ENV['GSS_CONFIG_SERVER_ADDRESS'] || '127.0.0.1',
11
- :Port => (ENV['GSS_CONFIG_SERVER_PORT'] || 80).to_i
12
- }
13
- @config.update(config)
10
+ @config = config
14
11
  end
15
12
 
16
13
  def launch
17
14
  require 'webrick'
18
- server = WEBrick::HTTPServer.new(@config)
19
- puts "config_server options: #{@config.inspect}"
20
- Signal.trap(:INT){ server.shutdown }
21
- server.start
15
+ root_dir = FontanaClientSupport.root_dir
16
+ document_root_source = @config[:document_root] || root_dir ? File.join(root_dir, "config_server") : "."
17
+ Dir.mktmpdir("fontana_config_server") do |dir|
18
+ if @config[:document_root] or root_dir.nil?
19
+ document_root = document_root_source
20
+ else
21
+ git_dir = File.join(dir, "workspace")
22
+ document_root = File.join(dir, "document_root")
23
+ FileUtils.cp_r(document_root_source, document_root)
24
+ end
25
+
26
+ server_config = {
27
+ :DocumentRoot => document_root,
28
+ :BindAddress => @config[:address] || ENV['GSS_CONFIG_SERVER_ADDRESS'] || '127.0.0.1',
29
+ :Port => (@config[:port] || ENV['GSS_CONFIG_SERVER_PORT'] || 80).to_i
30
+ }
31
+ server = WEBrick::HTTPServer.new(server_config)
32
+ if FontanaClientSupport.root_dir
33
+ server.mount_proc('/switch_config_server') do |req, res|
34
+ unless Dir.exist?(git_dir)
35
+ FileUtils.cp_r(root_dir, git_dir)
36
+ end
37
+ tag = req.path.sub(%r{\A/switch_config_server/}, '')
38
+ Dir.chdir(git_dir) do
39
+ system("git reset --hard #{tag}")
40
+ FileUtils.rm_rf(document_root)
41
+ FileUtils.cp_r(File.join(git_dir, "config_server"), document_root)
42
+ end
43
+ res.body = Dir["#{document_root}/**/*"].to_a.join("\n ")
44
+ end
45
+ end
46
+ puts "config_server options: #{@config.inspect}"
47
+ Signal.trap(:INT){ server.shutdown }
48
+ server.start
49
+ end
22
50
  end
23
51
 
24
52
  class << self
@@ -1,3 +1,3 @@
1
1
  module FontanaClientSupport
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontana_client_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - akima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-05 00:00:00.000000000 Z
11
+ date: 2013-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,7 +83,8 @@ dependencies:
83
83
  description: gem to support development and testing with GSS/fontana
84
84
  email:
85
85
  - t-akima@groovenauts.jp
86
- executables: []
86
+ executables:
87
+ - fontana_config_server
87
88
  extensions: []
88
89
  extra_rdoc_files: []
89
90
  files:
@@ -93,6 +94,7 @@ files:
93
94
  - LICENSE.txt
94
95
  - README.md
95
96
  - Rakefile
97
+ - bin/fontana_config_server
96
98
  - fontana_client_support.gemspec
97
99
  - lib/fontana.rb
98
100
  - lib/fontana/command_utils.rb