jah 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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|
|