dtask 001 → 002

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/.gemified +3 -3
  2. data/lib/dtask.rb +39 -27
  3. metadata +1 -1
data/.gemified CHANGED
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  :summary: DTask provides easy way to deploy web application.
3
3
  :email: keita.yamaguchi@gmail.com
4
- :has_rdoc: true
5
4
  :name: dtask
5
+ :has_rdoc: true
6
6
  :homepage: http://rubyforge.org/projects/dtask/
7
- :version: "001"
7
+ :version: "002"
8
+ :rubyforge_project: dtask
8
9
  :dependencies:
9
10
  - net-ssh
10
- :rubyforge_project: dtask
11
11
  :author: Keita Yamaguchi
@@ -2,58 +2,52 @@ require "net/ssh"
2
2
  require "singleton"
3
3
 
4
4
  class DTask
5
- VERSION = "001"
5
+ VERSION = "002"
6
6
 
7
+ # Command error.
7
8
  class Error < StandardError; end
8
9
 
10
+ # DTask configuration.
9
11
  class Config
10
12
  include Singleton
11
13
 
12
14
  def initialize; @table = Hash.new; end
13
- def o(table); table.each {|key, val| @table[key] = val }; end
14
15
 
15
- class << self
16
- def method_missing(name, *args)
17
- if md = /(.+)=$/.match(name.to_s)
18
- instance.instance_eval { @table[name] = args.first }
19
- else
20
- instance.instance_eval { @table[name] }
21
- end
16
+ def self.method_missing(name, *args)
17
+ if md = /(.+)=$/.match(name.to_s)
18
+ instance.instance_eval { @table[name] = args.first }
19
+ else
20
+ instance.instance_eval { @table[name] }
22
21
  end
23
22
  end
23
+
24
+ private
25
+
26
+ def o(table); table.each {|key, val| @table[key] = val }; end
24
27
  end
25
28
 
26
- class Remote
27
- attr_reader :out
28
- attr_reader :err
29
+ # Remote box.
30
+ class RemoteBox
31
+ attr_reader :out, :err
29
32
 
30
33
  def initialize
31
- options = {
32
- :username => Config.user,
33
- :auth_methods => "publickey"
34
- }
35
- @session = Net::SSH.start(Config.server, options)
34
+ @session = Net::SSH.start(Config.server, Config.user)
36
35
  @shell = @session.shell.sync
37
36
  @out = []
38
37
  @err = []
39
38
  end
40
39
 
41
- def pout(msg)
42
- puts "OUT> #{msg}"
43
- end
44
-
45
- def perr(msg)
46
- puts "ERR> #{msg}"
47
- end
48
-
40
+ # Run the command or call the task.
49
41
  def l(cmd)
50
42
  cmd.kind_of?(Symbol) ? DTask.run(cmd) : sh(cmd)
51
43
  end
52
44
 
45
+ # Ignore errors.
53
46
  def l!(cmd)
54
47
  begin l(cmd) rescue Error end
55
48
  end
56
49
 
50
+ # Run the command.
57
51
  def sh(cmd)
58
52
  puts "% #{cmd}"
59
53
  res = @shell.send_command(cmd)
@@ -61,21 +55,37 @@ class DTask
61
55
  perr res.stderr if res.stderr and res.stderr.size > 0
62
56
  @out << res.stdout
63
57
  @err << res.stderr
64
- res.status == 0 ? res.stdout : raise Error
58
+ res.status == 0 ? res.stdout : (raise Error)
65
59
  end
66
60
 
61
+ # Change the current to application directory.
67
62
  def cd_appdir
68
63
  l "cd #{Config.appdir} && pwd"
69
64
  end
65
+
66
+ private
67
+
68
+ # Print stdout.
69
+ def pout(msg)
70
+ puts "OUT> #{msg}"
71
+ end
72
+
73
+ # Print stderr.
74
+ def perr(msg)
75
+ puts "ERR> #{msg}"
76
+ end
70
77
  end
71
78
 
79
+ # task table
72
80
  TASK = Hash.new
73
81
 
82
+ # Load the dtask file.
74
83
  def initialize(name)
75
84
  load File.expand_path("~/.dtask/#{name}.dtask")
76
- @remote = Remote.new
85
+ @remote = RemoteBox.new
77
86
  end
78
87
 
88
+ # Run the task.
79
89
  def run(task)
80
90
  if TASK.key?(task)
81
91
  puts "#{Config.server} >>> #{task}"
@@ -88,10 +98,12 @@ class DTask
88
98
  end
89
99
 
90
100
  module Kernel
101
+ # Defines a task.
91
102
  def task(name, &block)
92
103
  DTask::TASK[name] = block
93
104
  end
94
105
 
106
+ # Setup the DTask configuration.
95
107
  def setup(&block)
96
108
  DTask::Config.instance.instance_eval(&block)
97
109
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtask
3
3
  version: !ruby/object:Gem::Version
4
- version: "001"
4
+ version: "002"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keita Yamaguchi