playit 0.0.1

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.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ source 'https://rubygems.org'
5
+
6
+ # Specify your gem's dependencies in playit.gemspec
7
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ playit (0.0.1)
5
+ highline (~> 1.6.13)
6
+ multi_json (~> 1.0.3)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ highline (1.6.13)
12
+ metaclass (0.0.1)
13
+ mocha (0.11.4)
14
+ metaclass (~> 0.0.1)
15
+ multi_json (1.0.4)
16
+ rake (0.9.2.2)
17
+
18
+ PLATFORMS
19
+ ruby
20
+
21
+ DEPENDENCIES
22
+ mocha (~> 0.11.4)
23
+ playit!
24
+ rake (~> 0.9.2)
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Christophe Hamerling
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ playit
2
+ ======
3
+
4
+ PlayFP7 command line management
data/Rakefile ADDED
@@ -0,0 +1,153 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ require 'rubygems'
5
+ require 'rake'
6
+ require 'date'
7
+
8
+ #############################################################################
9
+ #
10
+ # Helper functions
11
+ #
12
+ #############################################################################
13
+
14
+ def name
15
+ @name ||= Dir['*.gemspec'].first.split('.').first
16
+ end
17
+
18
+ def version
19
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
20
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
21
+ end
22
+
23
+ def date
24
+ Date.today.to_s
25
+ end
26
+
27
+ def rubyforge_project
28
+ name
29
+ end
30
+
31
+ def gemspec_file
32
+ "#{name}.gemspec"
33
+ end
34
+
35
+ def gem_file
36
+ "#{name}-#{version}.gem"
37
+ end
38
+
39
+ def replace_header(head, header_name)
40
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
41
+ end
42
+
43
+ #############################################################################
44
+ #
45
+ # Standard tasks
46
+ #
47
+ #############################################################################
48
+
49
+ task :default => :test
50
+
51
+ require 'rake/testtask'
52
+ Rake::TestTask.new(:test) do |test|
53
+ test.libs << 'lib' << 'test'
54
+ test.pattern = 'test/**/test_*.rb'
55
+ test.verbose = true
56
+ end
57
+
58
+ desc "Generate RCov test coverage and open in your browser"
59
+ task :coverage do
60
+ require 'rcov'
61
+ sh "rm -fr coverage"
62
+ sh "rcov test/test_*.rb"
63
+ sh "open coverage/index.html"
64
+ end
65
+
66
+ require 'rake/rdoctask'
67
+ Rake::RDocTask.new do |rdoc|
68
+ rdoc.rdoc_dir = 'rdoc'
69
+ rdoc.title = "#{name} #{version}"
70
+ rdoc.rdoc_files.include('README*')
71
+ rdoc.rdoc_files.include('lib/**/*.rb')
72
+ end
73
+
74
+ desc "Open an irb session preloaded with this library"
75
+ task :console do
76
+ sh "irb -rubygems -r ./lib/#{name}.rb"
77
+ end
78
+
79
+ #############################################################################
80
+ #
81
+ # Custom tasks (add your own tasks here)
82
+ #
83
+ #############################################################################
84
+
85
+
86
+
87
+ #############################################################################
88
+ #
89
+ # Packaging tasks
90
+ #
91
+ #############################################################################
92
+
93
+ desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
94
+ task :release => :build do
95
+ unless `git branch` =~ /^\* master$/
96
+ puts "You must be on the master branch to release!"
97
+ exit!
98
+ end
99
+ sh "git commit --allow-empty -a -m 'Release #{version}'"
100
+ sh "git tag v#{version}"
101
+ sh "git push origin master"
102
+ sh "git push origin v#{version}"
103
+ sh "gem push pkg/#{name}-#{version}.gem"
104
+ end
105
+
106
+ desc "Build #{gem_file} into the pkg directory"
107
+ task :build => :gemspec do
108
+ sh "mkdir -p pkg"
109
+ sh "gem build #{gemspec_file}"
110
+ sh "mv #{gem_file} pkg"
111
+ end
112
+
113
+ desc "Generate #{gemspec_file}"
114
+ task :gemspec => :validate do
115
+ # read spec file and split out manifest section
116
+ spec = File.read(gemspec_file)
117
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
118
+
119
+ # replace name version and date
120
+ replace_header(head, :name)
121
+ replace_header(head, :version)
122
+ replace_header(head, :date)
123
+ #comment this out if your rubyforge_project has a different name
124
+ replace_header(head, :rubyforge_project)
125
+
126
+ # determine file list from git ls-files
127
+ files = `git ls-files`.
128
+ split("\n").
129
+ sort.
130
+ reject { |file| file =~ /^\./ }.
131
+ reject { |file| file =~ /^(rdoc|pkg)/ }.
132
+ map { |file| " #{file}" }.
133
+ join("\n")
134
+
135
+ # piece file back together and write
136
+ manifest = " s.files = %w[\n#{files}\n ]\n"
137
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
138
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
139
+ puts "Updated #{gemspec_file}"
140
+ end
141
+
142
+ desc "Validate #{gemspec_file}"
143
+ task :validate do
144
+ libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
145
+ unless libfiles.empty?
146
+ puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
147
+ exit!
148
+ end
149
+ unless Dir['VERSION*'].empty?
150
+ puts "A `VERSION` file at root level violates Gem best practices."
151
+ exit!
152
+ end
153
+ end
data/bin/playit ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
5
+
6
+ require 'playit'
7
+
8
+ Playit::Command.execute(*ARGV)
@@ -0,0 +1,96 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ ##
5
+ ## Playit! Play management tool
6
+ ##
7
+ ## Options:
8
+ ##
9
+ ## - configure
10
+ ## Open the system editor to fill properties, check Play Wiki for details
11
+ ##
12
+ ## - boostrap init/stop/restart
13
+ ## Create the links between the Play components (Service Bus, Event Cloud, DCEP, ...)
14
+ ##
15
+ ## - meta start/stop/restart
16
+ ## Will reload metadata service from fresh data
17
+ ##
18
+ ## - topics
19
+ ## Get the current available topics
20
+ ##
21
+ ## - status
22
+ ## Displays current status/configuration
23
+ ##
24
+ ## - help
25
+ ## Displays this message...
26
+ ##
27
+ ## PlayFP7 project - Christophe Hamerling - Linagora
28
+ ##
29
+ module Playit
30
+ class Command
31
+
32
+ class << self
33
+
34
+ def execute(*args)
35
+ command = args.shift
36
+ major = args.shift
37
+ minor = args.empty? ? nil : args.join(' ')
38
+
39
+ return overview unless command
40
+ delegate(command, major, minor)
41
+ end
42
+
43
+ def delegate command, major, minor
44
+
45
+ return configure if command == 'configure'
46
+ return bootstrap(major) if command == 'bootstrap'
47
+ return metadata(major) if command == 'meta'
48
+ return topics if command == 'topics'
49
+ return status if command == 'status'
50
+ return overview if command == 'help'
51
+
52
+ return overview
53
+
54
+ end
55
+
56
+ #
57
+ # Edit the configuration in an editor
58
+ #
59
+ def configure
60
+ puts "Playit! #{Platform.edit(Playit.config.file)}"
61
+ end
62
+
63
+ def overview
64
+ puts usage
65
+ end
66
+
67
+ def usage
68
+ File.readlines(__FILE__).
69
+ grep(/^##.*/).
70
+ map { |line| line.chomp[3..-1] }.
71
+ join("\n")
72
+ end
73
+
74
+ def metadata(operation)
75
+ return Playit::Services::Metadata.start if operation == 'start'
76
+ return Playit::Services::Metadata.stop if operation == 'stop'
77
+ return Playit::Services::Metadata.restart if operation == 'restart'
78
+
79
+ "Invalid operation #{operation} for metadata service"
80
+ end
81
+
82
+ def bootstrap(operation)
83
+ return Playit::Services::Bootstrap.init if operation == 'init'
84
+ return Playit::Services::Bootstrap.stop if operation == 'stop'
85
+
86
+ "Invalid operation #{operation} for bootstrap service"
87
+ end
88
+
89
+ def topics
90
+ Playit::Services::Governance.topics
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+ end
@@ -0,0 +1,81 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ module Playit
5
+ class Config
6
+
7
+ # The main config file for boom
8
+ FILE = "#{ENV['HOME']}/.playfp7.conf"
9
+
10
+ # Public: The attributes Hash for configuration options. The attributes
11
+ # needed are dictated by each backend, but the `backend` option must be
12
+ # present.
13
+ attr_reader :attributes
14
+
15
+ # Public: creates a new instance of Config.
16
+ #
17
+ # This will load the attributes from boom's config file, or bootstrap it
18
+ # if this is a new install. Bootstrapping defaults to the JSON backend.
19
+ #
20
+ # Returns nothing.
21
+ def initialize
22
+ bootstrap unless File.exist?(file)
23
+ load_attributes
24
+ end
25
+
26
+ # Public: accessor for the configuration file.
27
+ #
28
+ # Returns the String file path.
29
+ def file
30
+ FILE
31
+ end
32
+
33
+ # Public: saves an empty, barebones hash to @attributes for the purpose of
34
+ # new user setup.
35
+ #
36
+ # Returns whether the attributes were saved.
37
+ def bootstrap
38
+ @attributes = {
39
+ :governance => 'DEFINE BASE URL',
40
+ :metadata => 'DEFINE BASE URL',
41
+ :bootstrap => 'DEFINE BASE URL',
42
+ :dsb => 'DEFINE DSB URL',
43
+ :seacloud => 'DEFINE SEACLOUD URL'
44
+ }
45
+ save
46
+ end
47
+
48
+ # Public: assigns a hash to the configuration attributes object. The
49
+ # contents of the attributes hash depends on what the backend needs. A
50
+ # `backend` key MUST be present, however.
51
+ #
52
+ # attrs - the Hash representation of attributes to persist to disk.
53
+ #
54
+ # Examples
55
+ #
56
+ # config.attributes = {"backend" => "json"}
57
+ #
58
+ # Returns whether the attributes were saved.
59
+ def attributes=(attrs)
60
+ @attributes = attrs
61
+ save
62
+ end
63
+
64
+ # Public: loads and parses the JSON tree from disk into memory and stores
65
+ # it in the attributes Hash.
66
+ #
67
+ # Returns nothing.
68
+ def load_attributes
69
+ @attributes = MultiJson.decode(File.new(file, 'r').read)
70
+ end
71
+
72
+ # Public: writes the in-memory JSON Hash to disk.
73
+ #
74
+ # Returns nothing.
75
+ def save
76
+ json = MultiJson.encode(attributes)
77
+ File.open(file, 'w') {|f| f.write(json) }
78
+ end
79
+
80
+ end
81
+ end
@@ -0,0 +1,87 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ module Playit
5
+ class Platform
6
+ class << self
7
+ # Public: tests if currently running on darwin.
8
+ #
9
+ # Returns true if running on darwin (MacOS X), else false
10
+ def darwin?
11
+ !!(RUBY_PLATFORM =~ /darwin/)
12
+ end
13
+
14
+ # Public: tests if currently running on windows.
15
+ #
16
+ # Apparently Windows RUBY_PLATFORM can be 'win32' or 'mingw32'
17
+ #
18
+ # Returns true if running on windows (win32/mingw32), else false
19
+ def windows?
20
+ !!(RUBY_PLATFORM =~ /mswin|mingw/)
21
+ end
22
+
23
+ # Public: returns the command used to open a file or URL
24
+ # for the current platform.
25
+ #
26
+ # Currently only supports MacOS X and Linux with `xdg-open`.
27
+ #
28
+ # Returns a String with the bin
29
+ def open_command
30
+ if darwin?
31
+ 'open'
32
+ elsif windows?
33
+ 'start'
34
+ else
35
+ 'xdg-open'
36
+ end
37
+ end
38
+
39
+ # Public: opens a given Item's value in the browser. This
40
+ # method is designed to handle multiple platforms.
41
+ #
42
+ # Returns a String of the Item value.
43
+ def open(url)
44
+ unless windows?
45
+ system("#{open_command} '#{url.gsub("\'","'\\\\''")}'")
46
+ else
47
+ system("#{open_command} #{url.gsub("\'","'\\\\''")}")
48
+ end
49
+ url
50
+ end
51
+
52
+ # Public: returns the command used to copy a given Item's value to the
53
+ # clipboard for the current platform.
54
+ #
55
+ # Returns a String with the bin
56
+ def copy_command
57
+ if darwin?
58
+ 'pbcopy'
59
+ elsif windows?
60
+ 'clip'
61
+ else
62
+ 'xclip -selection clipboard'
63
+ end
64
+ end
65
+
66
+ # Public: opens the JSON file in an editor for you to edit. Uses the
67
+ # $EDITOR environment variable, or %EDITOR% on Windows for editing.
68
+ # This method is designed to handle multiple platforms.
69
+ # If $EDITOR is nil, try to open using the open_command.
70
+ #
71
+ # Returns a String with a helpful message.
72
+ def edit(file)
73
+ unless $EDITOR.nil?
74
+ unless windows?
75
+ system("`echo $EDITOR` #{file} &")
76
+ else
77
+ system("start %EDITOR% #{file}")
78
+ end
79
+ else
80
+ system("#{open_command} #{file}")
81
+ end
82
+
83
+ "Make your edits, and do be sure to save."
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ module Playit
5
+ module Services
6
+ class Bootstrap
7
+ class << self
8
+
9
+ def init
10
+ puts '[INFO] Init bootstrap service...'
11
+ url = "#{Playit.config.attributes["bootstrap"]}/rest/init"
12
+ open(url) { |f|
13
+ f.each_line {
14
+ |line| puts line
15
+ }
16
+ }
17
+ end
18
+
19
+ def stop
20
+ puts '[INFO] Stop bootstrap service...'
21
+ puts '[INFO] TODO!'
22
+ end
23
+
24
+ def restart
25
+ stop
26
+ start
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ module Playit
5
+ module Services
6
+ class Governance
7
+ class << self
8
+
9
+ def start
10
+ puts '[INFO] Start governance...'
11
+ end
12
+
13
+ def stop
14
+ puts '[INFO] Stop governance...'
15
+ end
16
+
17
+ #
18
+ # Display the governance topics
19
+ #
20
+ def topics
21
+ puts '[INFO] Getting topics...'
22
+ url = "#{Playit.config.attributes["governance"]}/getTopics"
23
+ open(url) { |f|
24
+ f.each_line {
25
+ |line| puts line
26
+ }
27
+ }
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,44 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ module Playit
5
+ module Services
6
+ class Metadata
7
+ class << self
8
+
9
+ def start
10
+ puts '[INFO] Start metadata service...'
11
+ url = "#{Playit.config.attributes["metadata"]}/start"
12
+ puts url
13
+ begin
14
+ open(url) { |f|
15
+ f.each_line {
16
+ |line| puts line
17
+ }
18
+ }
19
+ rescue OpenURI::HTTPError
20
+ puts "[ERROR] Already started! Call stop or restart methods"
21
+ end
22
+
23
+ end
24
+
25
+ def stop
26
+ puts '[INFO] Stop metadata service...'
27
+ url = "#{Playit.config.attributes["metadata"]}/stop"
28
+ puts url
29
+ open(url) { |f|
30
+ f.each_line {
31
+ |line| puts line
32
+ }
33
+ }
34
+ end
35
+
36
+ def restart
37
+ puts '[INFO] Restart metadata service...'
38
+ stop
39
+ start
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
data/lib/playit.rb ADDED
@@ -0,0 +1,34 @@
1
+ #
2
+ # Christophe Hamerling - Linagora
3
+ #
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+
9
+ require 'open-uri'
10
+ require 'highline/import'
11
+ require 'multi_json'
12
+ require 'fileutils'
13
+ require 'pp'
14
+
15
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
16
+
17
+ require 'playit/command'
18
+ require 'playit/config'
19
+ require 'playit/platform'
20
+ require 'playit/services/bootstrap'
21
+ require 'playit/services/governance'
22
+ require 'playit/services/metadata'
23
+
24
+ module Playit
25
+
26
+ VERSION = '0.0.1'
27
+
28
+ extend self
29
+
30
+ def config
31
+ @config ||= Playit::Config.new
32
+ end
33
+
34
+ end
data/playit.gemspec ADDED
@@ -0,0 +1,54 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Christophe Hamerling - Linagora
4
+ #
5
+ Gem::Specification.new do |s|
6
+
7
+ s.specification_version = 2 if s.respond_to? :specification_version=
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.rubygems_version = '1.3.5'
10
+
11
+ s.authors = ["Christophe Hamerling"]
12
+ s.email = ["christophe.hamerling@linagora.com"]
13
+ s.description = %q{Manage Play services from the command line}
14
+ s.summary = %q{This gem provides a binary 'playit' used to manage Play FP7 services from the command line}
15
+ s.homepage = "http://chamerling.github.com/playit/"
16
+
17
+ s.files = `git ls-files`.split($\)
18
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
20
+ s.name = "playit"
21
+ s.require_paths = ["lib"]
22
+ s.version = "0.0.1"
23
+
24
+ s.add_dependency('multi_json', "~> 1.0.3")
25
+
26
+ # Input stream management
27
+ s.add_dependency('highline', "~> 1.6.13")
28
+
29
+ s.add_development_dependency('mocha', "~> 0.11.4")
30
+ s.add_development_dependency('rake', "~> 0.9.2")
31
+
32
+ ## Leave this section as-is. It will be automatically generated from the
33
+ ## contents of your Git repository via the gemspec task. DO NOT REMOVE
34
+ ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
35
+ # = MANIFEST =
36
+ s.files = %w[
37
+ Gemfile
38
+ Gemfile.lock
39
+ LICENSE
40
+ README.md
41
+ Rakefile
42
+ bin/playit
43
+ lib/playit.rb
44
+ lib/playit/command.rb
45
+ lib/playit/config.rb
46
+ lib/playit/platform.rb
47
+ lib/playit/services/bootstrap.rb
48
+ lib/playit/services/governance.rb
49
+ lib/playit/services/metadata.rb
50
+ playit.gemspec
51
+ ]
52
+ # = MANIFEST =
53
+
54
+ end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: playit
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Christophe Hamerling
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-06-21 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: multi_json
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 17
29
+ segments:
30
+ - 1
31
+ - 0
32
+ - 3
33
+ version: 1.0.3
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: highline
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 21
45
+ segments:
46
+ - 1
47
+ - 6
48
+ - 13
49
+ version: 1.6.13
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: mocha
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 59
61
+ segments:
62
+ - 0
63
+ - 11
64
+ - 4
65
+ version: 0.11.4
66
+ type: :development
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: rake
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ hash: 63
77
+ segments:
78
+ - 0
79
+ - 9
80
+ - 2
81
+ version: 0.9.2
82
+ type: :development
83
+ version_requirements: *id004
84
+ description: Manage Play services from the command line
85
+ email:
86
+ - christophe.hamerling@linagora.com
87
+ executables:
88
+ - playit
89
+ extensions: []
90
+
91
+ extra_rdoc_files: []
92
+
93
+ files:
94
+ - Gemfile
95
+ - Gemfile.lock
96
+ - LICENSE
97
+ - README.md
98
+ - Rakefile
99
+ - bin/playit
100
+ - lib/playit.rb
101
+ - lib/playit/command.rb
102
+ - lib/playit/config.rb
103
+ - lib/playit/platform.rb
104
+ - lib/playit/services/bootstrap.rb
105
+ - lib/playit/services/governance.rb
106
+ - lib/playit/services/metadata.rb
107
+ - playit.gemspec
108
+ homepage: http://chamerling.github.com/playit/
109
+ licenses: []
110
+
111
+ post_install_message:
112
+ rdoc_options: []
113
+
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ requirements: []
135
+
136
+ rubyforge_project:
137
+ rubygems_version: 1.8.8
138
+ signing_key:
139
+ specification_version: 2
140
+ summary: This gem provides a binary 'playit' used to manage Play FP7 services from the command line
141
+ test_files: []
142
+
143
+ has_rdoc: