dr 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,67 @@
1
+ require "open3"
2
+ require "tco"
3
+
4
+ require "dr/logger"
5
+
6
+ module Dr
7
+ class ShellCmd
8
+ attr_reader :status, :out, :err
9
+
10
+ include Logger
11
+
12
+ def initialize(cmd, opts={})
13
+ @out = ""
14
+
15
+ @show_out = false
16
+ @raise_on_error = true
17
+ @tag = "shell"
18
+ @expect = 0
19
+
20
+ opts.each do |k, v|
21
+ self.instance_variable_set("@#{k.to_s}", v)
22
+ end
23
+
24
+ @cmd = cmd
25
+ @status = nil
26
+
27
+ run
28
+ end
29
+
30
+ private
31
+ def run
32
+ Open3.popen2e(@cmd) do |stdin, stdouterr, wait_thr|
33
+ pid = wait_thr.pid
34
+
35
+ begin
36
+ stdouterr.fsync = true
37
+ stdouterr.sync = true
38
+ rescue
39
+ a = 1 # FIXME
40
+ end
41
+
42
+ while line = stdouterr.gets
43
+ @out += line
44
+ if @show_out
45
+ line = tag(@tag, line) if @tag
46
+ log(:info, line)
47
+ end
48
+ end
49
+
50
+ @status = wait_thr.value
51
+ end
52
+
53
+ if @status.exitstatus != @expect
54
+ out_lines = @out.split "\n"
55
+ if out_lines.length > 10
56
+ out_lines = out_lines[-9..-1]
57
+ end
58
+
59
+ out_lines.each do |l|
60
+ l = @tag.fg("#1b8efa") + " " + l if @tag
61
+ log(:err, l.chomp)
62
+ end
63
+ raise "'#{@cmd}' failed!" if @raise_on_error
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,3 @@
1
+ module Dr
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Radek Pazdera
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-03-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.18.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.18.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: grit
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.5.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.5.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.5'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: ! "This tool works with distribution-level packaging\n tools
95
+ and helps you make and distribute your own\n Debian packages
96
+ through your own repository."
97
+ email:
98
+ - radek@kano.me
99
+ executables:
100
+ - dr
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - .gitignore
105
+ - Gemfile
106
+ - LICENSE.txt
107
+ - README.md
108
+ - Rakefile
109
+ - bin/dr
110
+ - dr.spec
111
+ - lib/dr.rb
112
+ - lib/dr/buildroot.rb
113
+ - lib/dr/config.rb
114
+ - lib/dr/debpackage.rb
115
+ - lib/dr/gitpackage.rb
116
+ - lib/dr/gnupg.rb
117
+ - lib/dr/logger.rb
118
+ - lib/dr/package.rb
119
+ - lib/dr/pkgversion.rb
120
+ - lib/dr/repo.rb
121
+ - lib/dr/shellcmd.rb
122
+ - lib/dr/version.rb
123
+ homepage: http://github.com/KanoComputing/kano-package-system
124
+ licenses:
125
+ - GPLv2
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 1.8.23
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: dr is a packaging tool that helps you make, distribute and maintain you own
148
+ disto packages.
149
+ test_files: []