asmodai 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/asmodai.rb +1 -0
- data/lib/asmodai/cli.rb +22 -9
- data/lib/asmodai/info.rb +36 -0
- data/lib/asmodai/version.rb +1 -1
- metadata +3 -3
data/lib/asmodai.rb
CHANGED
data/lib/asmodai/cli.rb
CHANGED
@@ -22,25 +22,32 @@ class Asmodai::CLI < Thor
|
|
22
22
|
end
|
23
23
|
|
24
24
|
desc "install", "Installs startup scripts to /etc/init.d"
|
25
|
-
method_option :
|
26
|
-
:desc => "
|
25
|
+
method_option :force, :type => :boolean,
|
26
|
+
:desc => "Overwrite a given init.d-file"
|
27
27
|
method_option :autostart,
|
28
28
|
:type => :boolean,
|
29
29
|
:desc => %{If you provide this, startup-links will be generated for the given runlevel. This is currently only supported on Debian/Ubuntu.}
|
30
|
+
|
30
31
|
def install
|
31
32
|
@info = Asmodai::Info.current
|
32
33
|
@asmodai = "asmodai"
|
34
|
+
rvm_ruby_string = (ENV['rvm_ruby_string'] || "")
|
33
35
|
|
34
|
-
if
|
35
|
-
|
36
|
-
|
36
|
+
if @info.rvm_environment?
|
37
|
+
@asmodai=Pathname.new(@info.rvm_wrapper_path)
|
38
|
+
if !@asmodai.exist?
|
39
|
+
@info.execute_sudo_checked("rvm wrapper #{@info.rvm_ruby_string} bootup asmodai")
|
40
|
+
end
|
37
41
|
end
|
38
|
-
|
39
42
|
path = "/etc/init.d/#{@info.daemon_name}"
|
43
|
+
|
44
|
+
if options[:force]
|
45
|
+
FileUtils.rm_f(path)
|
46
|
+
end
|
47
|
+
|
40
48
|
template "templates/init_d.erb", path
|
41
49
|
system "chmod a+x #{path}"
|
42
50
|
|
43
|
-
|
44
51
|
if options[:autostart]
|
45
52
|
if (update_bin=`which update-rc.d`.strip).blank?
|
46
53
|
warn "update-rc.d was not found. Omitting autostart installation."
|
@@ -49,13 +56,13 @@ class Asmodai::CLI < Thor
|
|
49
56
|
end
|
50
57
|
end
|
51
58
|
end
|
52
|
-
|
59
|
+
|
53
60
|
desc "foreground", "Runs the daemon in foreground logging to stdout"
|
54
61
|
def foreground
|
55
62
|
instance=Asmodai::Info.current.daemon_class.new
|
56
63
|
instance.foreground
|
57
64
|
end
|
58
|
-
|
65
|
+
|
59
66
|
desc "start", "Runs the daemon in the background"
|
60
67
|
def start
|
61
68
|
klass = Asmodai::Info.current.daemon_class
|
@@ -94,4 +101,10 @@ class Asmodai::CLI < Thor
|
|
94
101
|
klass = Asmodai::Info.current.daemon_class
|
95
102
|
exec "irb -r rubygems -r asmodai -r ./#{klass.daemon_name}"
|
96
103
|
end
|
104
|
+
|
105
|
+
desc "version", "Prints Asmodai's version and exists"
|
106
|
+
def version
|
107
|
+
puts "Asmodai version #{Asmodai::VERSION}"
|
108
|
+
end
|
109
|
+
map %w(-v --version) => :version
|
97
110
|
end
|
data/lib/asmodai/info.rb
CHANGED
@@ -25,6 +25,23 @@ class Asmodai::Info
|
|
25
25
|
daemon_name.camelize
|
26
26
|
end
|
27
27
|
|
28
|
+
def rvm_environment?
|
29
|
+
!rvm_ruby_string.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def rvm_ruby_string
|
33
|
+
execute_sudo_checked("env | grep rvm_ruby_string | grep -v SUDO").strip
|
34
|
+
end
|
35
|
+
|
36
|
+
def rvm_path
|
37
|
+
execute_sudo_checked(
|
38
|
+
"env | grep rvm_path | grep -v SUDO").strip.split("=").last
|
39
|
+
end
|
40
|
+
|
41
|
+
def rvm_wrapper_path
|
42
|
+
File.join(rvm_path, "bin/bootup_asmodai")
|
43
|
+
end
|
44
|
+
|
28
45
|
# Returns the class of the Daemon
|
29
46
|
def daemon_class
|
30
47
|
require "./#{daemon_name}"
|
@@ -40,4 +57,23 @@ class Asmodai::Info
|
|
40
57
|
def base_file_owner
|
41
58
|
Etc.getpwuid(Pathname.new(base_file).stat.uid)
|
42
59
|
end
|
60
|
+
|
61
|
+
# Return the sudoer if present, false otherwise
|
62
|
+
def run_as_sudo?
|
63
|
+
if ENV['USER']=='root' and (su=ENV['SUDO_USER'])
|
64
|
+
su
|
65
|
+
else
|
66
|
+
false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Executes cmd in the context of the user, even if asmodai
|
71
|
+
# is called sudoed
|
72
|
+
def execute_sudo_checked(cmd)
|
73
|
+
if (su=run_as_sudo?)
|
74
|
+
`sudo -u #{su} bash -l -c '#{cmd}'`.strip
|
75
|
+
else
|
76
|
+
`#{cmd}`.strip
|
77
|
+
end
|
78
|
+
end
|
43
79
|
end
|
data/lib/asmodai/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 4
|
9
|
+
version: 0.1.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sebastian Morawietz
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-25 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|