mybot 0.1.1 → 0.2.0
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 +2 -2
- data/README.md +83 -132
- data/lib/mybot.rb +18 -25
- data/lib/mybot/base.rb +7 -10
- data/lib/mybot/cli.rb +15 -19
- data/lib/mybot/command.rb +66 -53
- data/lib/mybot/fmt.rb +28 -151
- data/lib/mybot/helpers.rb +8 -6
- data/lib/mybot/node.rb +40 -85
- data/lib/mybot/nodes.rb +1 -10
- data/lib/mybot/recipes.rb +26 -0
- data/lib/mybot/tasks.rb +13 -9
- data/lib/mybot/templates.rb +1 -4
- data/lib/mybot/version.rb +1 -1
- data/mybot.gemspec +6 -6
- metadata +13 -38
- data/Botfile +0 -12
- data/CHANGELOG.md +0 -2
- data/lib/mybot/installer.rb +0 -31
- data/lib/mybot/lib.rb +0 -31
- data/lib/mybot/libs.rb +0 -44
- data/lib/mybot/loader.rb +0 -25
- data/vendor/lib/.gitkeep +0 -0
- data/vendor/plugins/.gitkeep +0 -0
- data/vendor/tasks/.gitkeep +0 -0
- data/vendor/tpl/.gitkeep +0 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
module Mybot
|
2
|
+
module Recipes
|
3
|
+
include Fmt
|
4
|
+
|
5
|
+
def load_recipes
|
6
|
+
(
|
7
|
+
Dir["Botfile"] +
|
8
|
+
Dir[File.join(HOME_PATH, ".mybot", "**", "*.rb")].flatten
|
9
|
+
).reject do |r|
|
10
|
+
!File.exists?(r)
|
11
|
+
end.each do |r|
|
12
|
+
self.load_recipe(r)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def load_recipe(r)
|
17
|
+
instance_eval(File.read(r), __FILE__, __LINE__)
|
18
|
+
rescue Exception => e
|
19
|
+
print_cmd! "warning", "cannot load #{r}", :magenta, :bold
|
20
|
+
puts e.message
|
21
|
+
e.backtrace.each do |line|
|
22
|
+
puts line
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/mybot/tasks.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Mybot
|
2
|
-
|
3
|
-
|
2
|
+
module Tasks
|
3
|
+
include Fmt
|
4
|
+
|
5
|
+
def tasks
|
4
6
|
@tasks ||= []
|
5
7
|
end
|
6
8
|
|
@@ -45,9 +47,9 @@ module Mybot
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def find_task(name)
|
48
|
-
|
49
|
-
task =
|
50
|
-
ns =
|
50
|
+
parts = name.split ":"
|
51
|
+
task = parts.pop
|
52
|
+
ns = parts.join ":"
|
51
53
|
|
52
54
|
tasks.find do |t|
|
53
55
|
t[:name] == task && (t[:namespace] == ns || t[:namespace].nil?)
|
@@ -57,10 +59,12 @@ module Mybot
|
|
57
59
|
def run_task(name, options)
|
58
60
|
task = find_task(name)
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
unless task
|
63
|
+
print_cmd! "error", "cannot find task '#{name}'", :red, :bold
|
64
|
+
abort
|
65
|
+
end
|
62
66
|
|
63
|
-
|
67
|
+
print_cmd! "task", name, :cyan, :bold
|
64
68
|
|
65
69
|
task[:deps].each do |d|
|
66
70
|
run_task(d, options)
|
@@ -68,5 +72,5 @@ module Mybot
|
|
68
72
|
|
69
73
|
task[:block].call(options)
|
70
74
|
end
|
71
|
-
|
75
|
+
end
|
72
76
|
end
|
data/lib/mybot/templates.rb
CHANGED
@@ -5,10 +5,7 @@ module Mybot
|
|
5
5
|
when String
|
6
6
|
Template.new(content)
|
7
7
|
when Hash
|
8
|
-
|
9
|
-
tpl = File.join(TPL_PATH, content[:file])
|
10
|
-
error "template file '#{tpl}' does not exists" unless File.exists?(tpl)
|
11
|
-
Template.new(File.read(tpl))
|
8
|
+
Template.new(File.read(content[:file]))
|
12
9
|
end
|
13
10
|
end
|
14
11
|
end
|
data/lib/mybot/version.rb
CHANGED
data/mybot.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'mybot/version'
|
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Mybot::VERSION
|
9
9
|
spec.authors = ["Sebastian Sito"]
|
10
10
|
spec.email = ["sebastian@hypenode.com"]
|
11
|
-
spec.description = %q{
|
12
|
-
spec.summary = %q{
|
11
|
+
spec.description = %q{Local and remote tasks with ease}
|
12
|
+
spec.summary = %q{My personal bot}
|
13
13
|
spec.homepage = "https://github.com/sebastiansito/mybot"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.
|
22
|
-
spec.
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
23
24
|
spec.add_dependency "colored"
|
24
25
|
spec.add_dependency "net-ssh"
|
25
26
|
spec.add_dependency "net-sftp"
|
26
|
-
spec.add_dependency "listen"
|
27
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mybot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,33 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
22
|
-
type: :
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '1.3'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
|
-
type: :
|
38
|
+
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
@@ -91,23 +91,7 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
|
-
|
95
|
-
name: listen
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :runtime
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
description: Provision, manage and monitor stuff
|
94
|
+
description: Local and remote tasks with ease
|
111
95
|
email:
|
112
96
|
- sebastian@hypenode.com
|
113
97
|
executables:
|
@@ -116,8 +100,6 @@ extensions: []
|
|
116
100
|
extra_rdoc_files: []
|
117
101
|
files:
|
118
102
|
- .gitignore
|
119
|
-
- Botfile
|
120
|
-
- CHANGELOG.md
|
121
103
|
- Gemfile
|
122
104
|
- LICENSE.txt
|
123
105
|
- README.md
|
@@ -129,21 +111,14 @@ files:
|
|
129
111
|
- lib/mybot/command.rb
|
130
112
|
- lib/mybot/fmt.rb
|
131
113
|
- lib/mybot/helpers.rb
|
132
|
-
- lib/mybot/installer.rb
|
133
|
-
- lib/mybot/lib.rb
|
134
|
-
- lib/mybot/libs.rb
|
135
|
-
- lib/mybot/loader.rb
|
136
114
|
- lib/mybot/node.rb
|
137
115
|
- lib/mybot/nodes.rb
|
116
|
+
- lib/mybot/recipes.rb
|
138
117
|
- lib/mybot/tasks.rb
|
139
118
|
- lib/mybot/template.rb
|
140
119
|
- lib/mybot/templates.rb
|
141
120
|
- lib/mybot/version.rb
|
142
121
|
- mybot.gemspec
|
143
|
-
- vendor/lib/.gitkeep
|
144
|
-
- vendor/plugins/.gitkeep
|
145
|
-
- vendor/tasks/.gitkeep
|
146
|
-
- vendor/tpl/.gitkeep
|
147
122
|
homepage: https://github.com/sebastiansito/mybot
|
148
123
|
licenses:
|
149
124
|
- MIT
|
@@ -168,5 +143,5 @@ rubyforge_project:
|
|
168
143
|
rubygems_version: 1.8.23
|
169
144
|
signing_key:
|
170
145
|
specification_version: 3
|
171
|
-
summary:
|
146
|
+
summary: My personal bot
|
172
147
|
test_files: []
|
data/Botfile
DELETED
data/CHANGELOG.md
DELETED
data/lib/mybot/installer.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
|
3
|
-
module Mybot
|
4
|
-
module Installer
|
5
|
-
def install(options = {})
|
6
|
-
if File.exists? Mybot::MYBOT_PATH
|
7
|
-
error "mybot is already installed"
|
8
|
-
end
|
9
|
-
|
10
|
-
info "installing mybot to #{Mybot::MYBOT_PATH}"
|
11
|
-
FileUtils.mkdir Mybot::MYBOT_PATH
|
12
|
-
FileUtils.cp_r Mybot::VENDOR_PATH, Mybot::MYBOT_PATH
|
13
|
-
["lib", "plugins", "tasks", "tpl"].each do |dir|
|
14
|
-
FileUtils.rm File.join(Mybot::MYBOT_PATH, dir, ".gitkeep")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def uninstall(options = {})
|
19
|
-
unless File.exists? Mybot::MYBOT_PATH
|
20
|
-
error "mybot is not installed"
|
21
|
-
end
|
22
|
-
|
23
|
-
info "uninstalling mybot"
|
24
|
-
if yes? "Do you really want to delete ~/.mybot? [y/n]: "
|
25
|
-
FileUtils.rm_rf Mybot::MYBOT_PATH
|
26
|
-
else
|
27
|
-
info "uninstallation aborted"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/mybot/lib.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module Mybot
|
2
|
-
class Lib
|
3
|
-
def initialize(lib)
|
4
|
-
@lib = lib
|
5
|
-
end
|
6
|
-
|
7
|
-
def method_missing(name, *args, &block)
|
8
|
-
unless @lib[:funcs][name]
|
9
|
-
error "func '#{@lib[:name]}'.'#{name}' is not defined"
|
10
|
-
end
|
11
|
-
|
12
|
-
if args[0].nil? || !args[0].is_a?(Node)
|
13
|
-
error "1st arg should be node in func '#{@lib[:name]}'.'#{name}'"
|
14
|
-
end
|
15
|
-
|
16
|
-
if args[1].nil? || !args[1].is_a?(Hash)
|
17
|
-
error "2nd arg should be options in func '#{@lib[:name]}'.'#{name}'"
|
18
|
-
end
|
19
|
-
|
20
|
-
node = args[0]
|
21
|
-
options = args[1]
|
22
|
-
|
23
|
-
options[:sudo] ||= false
|
24
|
-
options[:cwd] ||= ""
|
25
|
-
options[:env] ||= {}
|
26
|
-
options.merge!(@lib[:options])
|
27
|
-
|
28
|
-
return @lib[:funcs][name][:block].call(node, options)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/mybot/libs.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Mybot
|
2
|
-
module Libs
|
3
|
-
def libs
|
4
|
-
@libs ||= {}
|
5
|
-
end
|
6
|
-
|
7
|
-
def library(name, &block)
|
8
|
-
@library = name
|
9
|
-
unless libs[name]
|
10
|
-
libs[name] = {
|
11
|
-
:name => name,
|
12
|
-
:options => {},
|
13
|
-
:funcs => {}
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
yield
|
18
|
-
ensure
|
19
|
-
@library = nil
|
20
|
-
end
|
21
|
-
|
22
|
-
def library_options(options)
|
23
|
-
unless @library
|
24
|
-
error "library_options should be used only inside library definition"
|
25
|
-
end
|
26
|
-
|
27
|
-
libs[@library][:options].merge!(options)
|
28
|
-
end
|
29
|
-
|
30
|
-
def func(name, &block)
|
31
|
-
libs[@library][:funcs][name] = {
|
32
|
-
:block => block
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
def lib(name)
|
37
|
-
unless libs[name]
|
38
|
-
error "there is no lib '#{name}'"
|
39
|
-
end
|
40
|
-
|
41
|
-
Lib.new libs[name]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/lib/mybot/loader.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Mybot
|
2
|
-
module Loader
|
3
|
-
def load_files
|
4
|
-
( Dir[File.join(MYBOT_PATH, "lib", "**", "*.rb")].flatten +
|
5
|
-
Dir[File.join(MYBOT_PATH, "plugins", "**", "lib", "**", "*.rb")].flatten +
|
6
|
-
Dir["Botfile"] +
|
7
|
-
Dir[File.join(".mybot", "**", "*.rb")].flatten +
|
8
|
-
Dir[File.join(MYBOT_PATH, "tasks", "**", "*.rb")].flatten +
|
9
|
-
Dir[File.join(MYBOT_PATH, "plugins", "**", "tasks", "**", "*.rb")].flatten +
|
10
|
-
Dir[File.join(GEM_PATH, "Botfile")]
|
11
|
-
).reject do |f|
|
12
|
-
!File.exists?(f)
|
13
|
-
end.each do |f|
|
14
|
-
self.load_file(f)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def load_file(f)
|
19
|
-
instance_eval(File.read(f), __FILE__, __LINE__)
|
20
|
-
rescue Exception => e
|
21
|
-
warning "cannot load #{f}"
|
22
|
-
raise(e)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/vendor/lib/.gitkeep
DELETED
File without changes
|
data/vendor/plugins/.gitkeep
DELETED
File without changes
|
data/vendor/tasks/.gitkeep
DELETED
File without changes
|
data/vendor/tpl/.gitkeep
DELETED
File without changes
|