playit 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +7 -0
- data/Gemfile.lock +24 -0
- data/LICENSE +22 -0
- data/README.md +4 -0
- data/Rakefile +153 -0
- data/bin/playit +8 -0
- data/lib/playit/command.rb +96 -0
- data/lib/playit/config.rb +81 -0
- data/lib/playit/platform.rb +87 -0
- data/lib/playit/services/bootstrap.rb +31 -0
- data/lib/playit/services/governance.rb +32 -0
- data/lib/playit/services/metadata.rb +44 -0
- data/lib/playit.rb +34 -0
- data/playit.gemspec +54 -0
- metadata +143 -0
data/Gemfile
ADDED
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
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,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:
|