jah 0.0.3 → 0.0.5
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/README.md +62 -13
- data/Rakefile +4 -3
- data/VERSION +1 -1
- data/bin/jah +4 -2
- data/jah.gemspec +73 -21
- data/lib/jah/act_pkg/apt.rb +13 -0
- data/lib/jah/act_pkg/base.rb +17 -0
- data/lib/jah/act_pkg/emerge.rb +4 -0
- data/lib/jah/act_pkg/pacman.rb +59 -0
- data/lib/jah/act_pkg/pkg.rb +52 -0
- data/lib/jah/act_pkg/ports.rb +9 -0
- data/lib/jah/act_pkg/slack.rb +8 -0
- data/lib/jah/act_pkg/urpm.rb +7 -0
- data/lib/jah/act_pkg/yum.rb +31 -0
- data/lib/jah/act_pkg/zypp.rb +12 -0
- data/lib/jah/act_pkg.rb +41 -0
- data/lib/jah/agent.rb +14 -6
- data/lib/jah/agents/xmpp.rb +164 -23
- data/lib/jah/cli.rb +15 -46
- data/lib/jah/command.rb +10 -5
- data/lib/jah/commands/cpu.rb +38 -0
- data/lib/jah/commands/disk.rb +35 -0
- data/lib/jah/commands/mem.rb +49 -0
- data/lib/jah/{collectors/net.rb → commands/netstat.rb} +11 -9
- data/lib/jah/commands/packages.rb +25 -0
- data/lib/jah/commands/prok.rb +97 -0
- data/lib/jah/commands/services.rb +14 -0
- data/lib/jah/commands/status.rb +1 -41
- data/lib/jah/commands/who.rb +27 -0
- data/lib/jah/history.rb +25 -0
- data/lib/jah/install.rb +12 -18
- data/lib/jah/opt.rb +87 -0
- data/lib/jah/prayer.rb +75 -0
- data/lib/jah.rb +21 -13
- data/lib/locales/en_us.yml +9 -1
- data/lib/locales/pt_br.yml +9 -1
- data/spec/jah/act_pkg/apt_spec.rb +40 -0
- data/spec/jah/act_pkg/pacman_spec.rb +141 -0
- data/spec/jah/act_pkg/pkg_spec.rb +51 -0
- data/spec/jah/act_pkg/ports_spec.rb +36 -0
- data/spec/jah/act_pkg/yum_spec.rb +55 -0
- data/spec/jah/act_pkg_spec.rb +41 -0
- data/spec/jah/agent_spec.rb +8 -0
- data/spec/jah/agents/xmpp_spec.rb +8 -0
- data/spec/jah/cli_spec.rb +47 -0
- data/spec/jah/command_spec.rb +5 -0
- data/spec/jah/commands/cpu_spec.rb +51 -0
- data/spec/jah/commands/disk_spec.rb +49 -0
- data/spec/jah/commands/mem_spec.rb +60 -0
- data/spec/jah/commands/netstat_spec.rb +13 -0
- data/spec/jah/commands/prok_spec.rb +248 -0
- data/spec/jah/commands/who_spec.rb +25 -0
- data/spec/jah/history_spec.rb +35 -0
- data/spec/jah/install_spec.rb +15 -0
- data/spec/jah/opt_spec.rb +37 -0
- data/spec/jah/prayer_spec.rb +8 -0
- data/spec/jah_spec.rb +4 -2
- data/spec/spec_helper.rb +3 -1
- metadata +67 -16
- data/lib/jah/collector.rb +0 -12
- data/lib/jah/collectors/cpu.rb +0 -35
- data/lib/jah/collectors/disk.rb +0 -14
- data/lib/jah/collectors/mem.rb +0 -51
- data/lib/jah/collectors/prok.rb +0 -88
- data/lib/jah/collectors/services.rb +0 -13
- data/lib/jah/collectors/who.rb +0 -20
- data/lib/jah/commands/pub.rb +0 -34
- data/lib/jah/god.rb +0 -24
- data/lib/jah.yaml.template +0 -26
data/README.md
CHANGED
@@ -6,14 +6,21 @@ Talk to your machines. Like a god.
|
|
6
6
|
|
7
7
|
Just run it for the first time to create a config file.
|
8
8
|
Use `jah install` to force the wizard again.
|
9
|
+
Jah will try to find a `jah.yaml` file on ~/.jah or /etc.
|
9
10
|
|
10
|
-
Gems needed for XMPP mode:
|
11
11
|
|
12
|
-
|
13
|
-
* Blather (gem install blather)
|
12
|
+
## Support
|
14
13
|
|
14
|
+
* ArchLinux (tested)
|
15
|
+
* Mac OS X (tested)
|
16
|
+
* CentOS (tested)
|
17
|
+
* Debian (tested)
|
18
|
+
* BSD
|
15
19
|
|
16
|
-
|
20
|
+
Gems required for XMPP mode:
|
21
|
+
|
22
|
+
* Blather
|
23
|
+
* EventMachine
|
17
24
|
|
18
25
|
|
19
26
|
## Modes
|
@@ -37,8 +44,6 @@ AkA: Security freak. Jah just writes to tmp/ or whatever a dump file,
|
|
37
44
|
Jah Web securely connects (scp) and downloads the data to parse.
|
38
45
|
|
39
46
|
|
40
|
-
## Use God?
|
41
|
-
|
42
47
|
|
43
48
|
## XMPP Bot
|
44
49
|
|
@@ -80,25 +85,68 @@ Group session:
|
|
80
85
|
me: ok?
|
81
86
|
msweet: I'm fine, thanks..
|
82
87
|
ssaint: Kinda busy right now..
|
83
|
-
naomi: I need you!
|
88
|
+
naomi: I need you! NOW!
|
89
|
+
|
90
|
+
|
91
|
+
### System commands
|
92
|
+
|
93
|
+
|
94
|
+
## PubSub
|
95
|
+
|
96
|
+
Create a pubsub:
|
97
|
+
|
98
|
+
pub create foo
|
99
|
+
jah: Done.
|
100
|
+
|
101
|
+
Publish to it:
|
102
|
+
|
103
|
+
foo: pubbin and dubbin from jah!
|
104
|
+
jah: Published.
|
105
|
+
|
106
|
+
My pubs:
|
107
|
+
|
108
|
+
pub mine
|
109
|
+
jah: Pubsubs
|
110
|
+
Owner: foo
|
111
|
+
|
112
|
+
All pubs:
|
84
113
|
|
114
|
+
pub all
|
115
|
+
jah: All Pubsubs
|
116
|
+
=> /foo
|
117
|
+
=> /bar
|
85
118
|
|
86
|
-
|
119
|
+
Subscribe to bar:
|
120
|
+
|
121
|
+
pub sub bar
|
122
|
+
jah: Done.
|
123
|
+
|
124
|
+
|
125
|
+
Unsubscribe to bar:
|
126
|
+
|
127
|
+
pub unsub bar
|
128
|
+
jah:Done.
|
129
|
+
|
130
|
+
|
131
|
+
Destroy a pub:
|
132
|
+
|
133
|
+
pub destroy foo
|
134
|
+
jah: Done.
|
135
|
+
|
136
|
+
|
137
|
+
## Use God?
|
138
|
+
|
139
|
+
### God commands
|
87
140
|
|
88
141
|
Start, stop, restart, monitor and unmonitor words on the beginning
|
89
142
|
of a phrase will make Jah add a "god" on the front of it, making it
|
90
143
|
trivial to work with your services:
|
91
144
|
|
92
|
-
|
93
145
|
start nginx
|
94
146
|
restart nanites
|
95
147
|
unmonitor postgresql
|
96
148
|
|
97
149
|
|
98
|
-
More to come...
|
99
|
-
|
100
|
-
|
101
|
-
|
102
150
|
## Note on Patches/Pull Requests
|
103
151
|
|
104
152
|
* Fork the project.
|
@@ -110,6 +158,7 @@ More to come...
|
|
110
158
|
bump version in a commit by itself I can ignore when I pull)
|
111
159
|
* Send me a pull request. Bonus points for topic branches.
|
112
160
|
|
161
|
+
|
113
162
|
## Copyright
|
114
163
|
|
115
164
|
Copyright (c) 2009 Marcos Piccinini. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -5,14 +5,15 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "jah"
|
8
|
-
gem.summary = "
|
9
|
-
gem.description = "
|
8
|
+
gem.summary = "Be omnipresent..."
|
9
|
+
gem.description = "Talk to your machines. Like a God."
|
10
10
|
gem.email = "x@nofxx.com"
|
11
11
|
gem.homepage = "http://github.com/nofxx/jah"
|
12
12
|
gem.authors = ["Marcos Piccinini"]
|
13
|
-
gem.add_dependency "blather"
|
13
|
+
gem.add_dependency "blather", '>=0.4.7'
|
14
14
|
gem.add_dependency "i18n"
|
15
15
|
gem.add_development_dependency "rspec"
|
16
|
+
# gem.add_development_dependency "rr"
|
16
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
18
|
end
|
18
19
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/bin/jah
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
$VERBOSE = true # -w
|
4
4
|
$KCODE = "u" # -Ku
|
5
5
|
|
6
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), *%w[.. lib])
|
6
|
+
# $LOAD_PATH << File.join(File.dirname(__FILE__), *%w[.. lib])
|
7
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
7
8
|
require "jah"
|
9
|
+
include Jah
|
8
10
|
|
9
|
-
Jah::Cli.
|
11
|
+
Jah::Cli.work(ARGV)
|
data/jah.gemspec
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{jah}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marcos Piccinini"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-11-26}
|
13
13
|
s.default_executable = %q{jah}
|
14
|
-
s.description = %q{
|
14
|
+
s.description = %q{Talk to your machines. Like a God.}
|
15
15
|
s.email = %q{x@nofxx.com}
|
16
16
|
s.executables = ["jah"]
|
17
17
|
s.extra_rdoc_files = [
|
@@ -28,33 +28,64 @@ Gem::Specification.new do |s|
|
|
28
28
|
"bin/jah",
|
29
29
|
"jah.gemspec",
|
30
30
|
"lib/jah.rb",
|
31
|
-
"lib/jah.
|
31
|
+
"lib/jah/act_pkg.rb",
|
32
|
+
"lib/jah/act_pkg/apt.rb",
|
33
|
+
"lib/jah/act_pkg/base.rb",
|
34
|
+
"lib/jah/act_pkg/emerge.rb",
|
35
|
+
"lib/jah/act_pkg/pacman.rb",
|
36
|
+
"lib/jah/act_pkg/pkg.rb",
|
37
|
+
"lib/jah/act_pkg/ports.rb",
|
38
|
+
"lib/jah/act_pkg/slack.rb",
|
39
|
+
"lib/jah/act_pkg/urpm.rb",
|
40
|
+
"lib/jah/act_pkg/yum.rb",
|
41
|
+
"lib/jah/act_pkg/zypp.rb",
|
32
42
|
"lib/jah/agent.rb",
|
33
43
|
"lib/jah/agents/dump.rb",
|
34
44
|
"lib/jah/agents/post.rb",
|
35
45
|
"lib/jah/agents/xmpp.rb",
|
36
46
|
"lib/jah/cli.rb",
|
37
|
-
"lib/jah/collector.rb",
|
38
|
-
"lib/jah/collectors/cpu.rb",
|
39
|
-
"lib/jah/collectors/disk.rb",
|
40
|
-
"lib/jah/collectors/mem.rb",
|
41
|
-
"lib/jah/collectors/net.rb",
|
42
|
-
"lib/jah/collectors/prok.rb",
|
43
|
-
"lib/jah/collectors/services.rb",
|
44
|
-
"lib/jah/collectors/who.rb",
|
45
47
|
"lib/jah/command.rb",
|
46
48
|
"lib/jah/commands/admin.rb",
|
49
|
+
"lib/jah/commands/cpu.rb",
|
50
|
+
"lib/jah/commands/disk.rb",
|
47
51
|
"lib/jah/commands/extra.rb",
|
48
|
-
"lib/jah/commands/
|
52
|
+
"lib/jah/commands/mem.rb",
|
53
|
+
"lib/jah/commands/netstat.rb",
|
54
|
+
"lib/jah/commands/packages.rb",
|
55
|
+
"lib/jah/commands/prok.rb",
|
56
|
+
"lib/jah/commands/services.rb",
|
49
57
|
"lib/jah/commands/status.rb",
|
50
|
-
"lib/jah/
|
58
|
+
"lib/jah/commands/who.rb",
|
59
|
+
"lib/jah/history.rb",
|
51
60
|
"lib/jah/install.rb",
|
61
|
+
"lib/jah/opt.rb",
|
62
|
+
"lib/jah/prayer.rb",
|
52
63
|
"lib/locales/en_us.yml",
|
53
64
|
"lib/locales/pt_br.yml",
|
54
65
|
"lib/locales/pt_br_gostosa.yml",
|
55
66
|
"lib/locales/pt_br_mano.yml",
|
56
67
|
"lib/locales/pt_br_mineiro.yml",
|
57
68
|
"spec/console",
|
69
|
+
"spec/jah/act_pkg/apt_spec.rb",
|
70
|
+
"spec/jah/act_pkg/pacman_spec.rb",
|
71
|
+
"spec/jah/act_pkg/pkg_spec.rb",
|
72
|
+
"spec/jah/act_pkg/ports_spec.rb",
|
73
|
+
"spec/jah/act_pkg/yum_spec.rb",
|
74
|
+
"spec/jah/act_pkg_spec.rb",
|
75
|
+
"spec/jah/agent_spec.rb",
|
76
|
+
"spec/jah/agents/xmpp_spec.rb",
|
77
|
+
"spec/jah/cli_spec.rb",
|
78
|
+
"spec/jah/command_spec.rb",
|
79
|
+
"spec/jah/commands/cpu_spec.rb",
|
80
|
+
"spec/jah/commands/disk_spec.rb",
|
81
|
+
"spec/jah/commands/mem_spec.rb",
|
82
|
+
"spec/jah/commands/netstat_spec.rb",
|
83
|
+
"spec/jah/commands/prok_spec.rb",
|
84
|
+
"spec/jah/commands/who_spec.rb",
|
85
|
+
"spec/jah/history_spec.rb",
|
86
|
+
"spec/jah/install_spec.rb",
|
87
|
+
"spec/jah/opt_spec.rb",
|
88
|
+
"spec/jah/prayer_spec.rb",
|
58
89
|
"spec/jah_spec.rb",
|
59
90
|
"spec/spec_helper.rb"
|
60
91
|
]
|
@@ -62,9 +93,29 @@ Gem::Specification.new do |s|
|
|
62
93
|
s.rdoc_options = ["--charset=UTF-8"]
|
63
94
|
s.require_paths = ["lib"]
|
64
95
|
s.rubygems_version = %q{1.3.5}
|
65
|
-
s.summary = %q{
|
96
|
+
s.summary = %q{Be omnipresent...}
|
66
97
|
s.test_files = [
|
67
|
-
"spec/
|
98
|
+
"spec/jah/cli_spec.rb",
|
99
|
+
"spec/jah/agents/xmpp_spec.rb",
|
100
|
+
"spec/jah/install_spec.rb",
|
101
|
+
"spec/jah/commands/mem_spec.rb",
|
102
|
+
"spec/jah/commands/cpu_spec.rb",
|
103
|
+
"spec/jah/commands/who_spec.rb",
|
104
|
+
"spec/jah/commands/netstat_spec.rb",
|
105
|
+
"spec/jah/commands/disk_spec.rb",
|
106
|
+
"spec/jah/commands/prok_spec.rb",
|
107
|
+
"spec/jah/agent_spec.rb",
|
108
|
+
"spec/jah/command_spec.rb",
|
109
|
+
"spec/jah/act_pkg/yum_spec.rb",
|
110
|
+
"spec/jah/act_pkg/apt_spec.rb",
|
111
|
+
"spec/jah/act_pkg/pkg_spec.rb",
|
112
|
+
"spec/jah/act_pkg/ports_spec.rb",
|
113
|
+
"spec/jah/act_pkg/pacman_spec.rb",
|
114
|
+
"spec/jah/opt_spec.rb",
|
115
|
+
"spec/jah/act_pkg_spec.rb",
|
116
|
+
"spec/jah/prayer_spec.rb",
|
117
|
+
"spec/jah/history_spec.rb",
|
118
|
+
"spec/jah_spec.rb",
|
68
119
|
"spec/spec_helper.rb"
|
69
120
|
]
|
70
121
|
|
@@ -73,17 +124,18 @@ Gem::Specification.new do |s|
|
|
73
124
|
s.specification_version = 3
|
74
125
|
|
75
126
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
76
|
-
s.add_runtime_dependency(%q<blather>, [">= 0"])
|
127
|
+
s.add_runtime_dependency(%q<blather>, [">= 0.4.7"])
|
77
128
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
78
129
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
79
130
|
else
|
80
|
-
s.add_dependency(%q<blather>, [">= 0"])
|
131
|
+
s.add_dependency(%q<blather>, [">= 0.4.7"])
|
81
132
|
s.add_dependency(%q<i18n>, [">= 0"])
|
82
133
|
s.add_dependency(%q<rspec>, [">= 0"])
|
83
134
|
end
|
84
135
|
else
|
85
|
-
s.add_dependency(%q<blather>, [">= 0"])
|
136
|
+
s.add_dependency(%q<blather>, [">= 0.4.7"])
|
86
137
|
s.add_dependency(%q<i18n>, [">= 0"])
|
87
138
|
s.add_dependency(%q<rspec>, [">= 0"])
|
88
139
|
end
|
89
140
|
end
|
141
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
|
2
|
+
module Jah
|
3
|
+
|
4
|
+
class Pacman < ActPkg::Base
|
5
|
+
|
6
|
+
# -Q installed packages
|
7
|
+
def all(filter = nil)
|
8
|
+
res = run("pacman -Q").to_a.map do |line|
|
9
|
+
Pkg.new(:installed, *line.split(" "))
|
10
|
+
end
|
11
|
+
res.select { |p| p.name =~ /#{filter}/ } if filter
|
12
|
+
res
|
13
|
+
end
|
14
|
+
|
15
|
+
# -Ss /regex/ search all pkgs
|
16
|
+
def search(filter = nil)
|
17
|
+
pkgs = []
|
18
|
+
installed = all(filter) # until figure out a memoize for all this
|
19
|
+
run("pacman -Ss #{filter}").to_a.each_slice(2) do |info, desc|
|
20
|
+
name, version, size = info.split("/")[1].split(" ")
|
21
|
+
state = installed.find { |i| i.name == name }
|
22
|
+
pkgs << Pkg.new(state ? :installed : :new, name, version, desc.strip)
|
23
|
+
end
|
24
|
+
pkgs
|
25
|
+
end
|
26
|
+
|
27
|
+
# -Qi info about a pkg (only installed ones)
|
28
|
+
def info(pkg)
|
29
|
+
ary = run("pacman -Qi #{pkg.name}").to_a
|
30
|
+
return nil if ary[0] =~ /error/
|
31
|
+
ary.map! do |i|
|
32
|
+
val = i.split("\s:\s")[1]
|
33
|
+
val.strip if val
|
34
|
+
end #.reject(&:nil?)
|
35
|
+
{ :url => ary[2], :license => ary[3], :groups => ary[4], :provides => ary[5],
|
36
|
+
:depends => ary[6], :required => ary[8], :size => ary[12], :arch => ary[14],
|
37
|
+
:desc => ary[19]}
|
38
|
+
end
|
39
|
+
|
40
|
+
def install(pkgs)
|
41
|
+
pkgs = [pkgs] unless pkgs.class == Array
|
42
|
+
run "pacman -Sy --noconfirm #{pkgs.map(&:name).join(' ')}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def uninstall(pkg)
|
46
|
+
run "pacman -R --noconfirm #{pkg.name}"
|
47
|
+
end
|
48
|
+
|
49
|
+
def upgrade(pkg)
|
50
|
+
run "pacman -U --noconfirm #{pkg.name}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def update
|
54
|
+
run "pacman -Syu"
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Jah
|
2
|
+
|
3
|
+
class Pkg
|
4
|
+
include Comparable
|
5
|
+
attr_reader :name, :version, :status, :size
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
@status, @name, @version, @desc = args
|
9
|
+
end
|
10
|
+
|
11
|
+
def desc
|
12
|
+
@desc ||= info[:desc]
|
13
|
+
end
|
14
|
+
|
15
|
+
def info
|
16
|
+
@info ||= ActPkg.info(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
def installed?
|
20
|
+
@status == :installed
|
21
|
+
end
|
22
|
+
|
23
|
+
def install
|
24
|
+
ActPkg.install(self)
|
25
|
+
end
|
26
|
+
|
27
|
+
def uninstall
|
28
|
+
end
|
29
|
+
|
30
|
+
def ==(other)
|
31
|
+
(name == other.name) && (version == other.version)
|
32
|
+
end
|
33
|
+
|
34
|
+
def <=>(other)
|
35
|
+
raise "Not same pkg.." unless name == other.name
|
36
|
+
version <=> other.version
|
37
|
+
end
|
38
|
+
|
39
|
+
def valid?
|
40
|
+
!(@name.nil? or @version.nil?)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def method_missing(*meth)
|
45
|
+
unless (val = info[meth[0]]).nil?
|
46
|
+
val
|
47
|
+
else
|
48
|
+
raise NoMethodError
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Jah
|
2
|
+
|
3
|
+
|
4
|
+
class Yum < ActPkg::Base
|
5
|
+
|
6
|
+
def all(filter = nil)
|
7
|
+
run("yum -q list installed").to_a[1..-1].map do |l|
|
8
|
+
name, version = l.split(" ")[0..1]
|
9
|
+
Pkg.new(:installed, name.split(".i")[0], version )
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# all pkgs...search repo
|
14
|
+
def info(pkg)
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def install(what)
|
19
|
+
"yum install #{what}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def uninstall
|
23
|
+
"remove"
|
24
|
+
end
|
25
|
+
|
26
|
+
def update
|
27
|
+
"check-update"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/lib/jah/act_pkg.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# ActPkg - Say 'install' and it works =D
|
3
|
+
#
|
4
|
+
# Nice tables:
|
5
|
+
# http://distrowatch.com/dwres.php?resource=package-management
|
6
|
+
# http://www.guiadohardware.net/dicas/referencia-pacotes-linux.html
|
7
|
+
#
|
8
|
+
module Jah
|
9
|
+
|
10
|
+
module ActPkg
|
11
|
+
autoload :Pacman, "jah/act_pkg/pacman"
|
12
|
+
|
13
|
+
def self.detect
|
14
|
+
if RUBY_PLATFORM =~ /darwin/
|
15
|
+
:ports
|
16
|
+
else
|
17
|
+
case File.read("/etc/issue")
|
18
|
+
when /Arch/i then :pacman
|
19
|
+
when /SUSE/i then :zypp
|
20
|
+
when /Mandriva/ then :urpm
|
21
|
+
when /BSD/ then :ports
|
22
|
+
when /Fedora|CentOS/ then :yum
|
23
|
+
when /Debian|Ubuntu/ then :apt
|
24
|
+
when /This|Gentoo/ then :emerge
|
25
|
+
when /Welcome|Slack/ then :slack
|
26
|
+
else
|
27
|
+
raise "Is this LFS??"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.manager
|
33
|
+
@manager ||= const_get(detect.to_s.capitalize).new
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.method_missing(*meth)
|
37
|
+
manager.send(*meth)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/lib/jah/agent.rb
CHANGED
@@ -13,7 +13,7 @@ module Jah
|
|
13
13
|
autoload :DumpAgent, "jah/agents/xmpp"
|
14
14
|
|
15
15
|
def initialize(options=nil)#, config)
|
16
|
-
if
|
16
|
+
if Opt.daemon?
|
17
17
|
puts "Jah starting in background.."
|
18
18
|
fork do
|
19
19
|
daemonize
|
@@ -29,16 +29,19 @@ module Jah
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def run_agent_run
|
32
|
-
case
|
32
|
+
case Opt.mode # @mode
|
33
33
|
when "xmpp" then XmppAgent.new.run
|
34
34
|
when "post" then PostAgent.new.run
|
35
|
-
else
|
36
|
-
DumpAgent.new
|
35
|
+
else DumpAgent.new
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
39
|
def self.start
|
41
|
-
|
40
|
+
if File.exists?(PID_FILE)
|
41
|
+
puts "Jah already running...#{PID_FILE}"
|
42
|
+
else
|
43
|
+
new
|
44
|
+
end
|
42
45
|
end
|
43
46
|
|
44
47
|
def self.stop
|
@@ -54,13 +57,18 @@ module Jah
|
|
54
57
|
|
55
58
|
def self.restart
|
56
59
|
stop
|
60
|
+
sleep 2
|
57
61
|
start
|
58
62
|
end
|
59
63
|
|
60
|
-
def self.
|
64
|
+
def self.config
|
61
65
|
Install.new
|
62
66
|
end
|
63
67
|
|
68
|
+
class << self
|
69
|
+
alias :install :config
|
70
|
+
end
|
71
|
+
|
64
72
|
def daemonize
|
65
73
|
begin
|
66
74
|
File.open(pid_file, File::CREAT|File::EXCL|File::WRONLY) do |pid|
|