cigarette 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/cigarette.rb +57 -6
  2. metadata +4 -4
@@ -1,9 +1,20 @@
1
+ require 'curses'
1
2
  require 'yaml'
2
3
  require 'cigarette/numeric.rb'
3
4
 
4
5
  class Cigarette
5
6
 
6
- VERSION = "1.0"
7
+ DEFAULT = Curses::A_NORMAL
8
+ BLACK = 0
9
+ RED = 1
10
+ GREEN = 2
11
+ YELLOW = 3
12
+ BLUE = 4
13
+ MAGENTA = 5
14
+ CYAN = 6
15
+ WHITE = 7
16
+
17
+ VERSION = "1.1"
7
18
  # Hope.
8
19
  CANCER_DO_NOT_APPEAR = 42
9
20
 
@@ -20,7 +31,9 @@ class Cigarette
20
31
  rescue Exception => e
21
32
  abort "Problem during .cigarette loading: #{e.message}"
22
33
  end
23
- puts "Cigarette launched - version #{VERSION}."
34
+ init_curses
35
+ deploy_trap
36
+ display_version
24
37
  lighter_please!
25
38
  end
26
39
 
@@ -34,11 +47,12 @@ class Cigarette
34
47
  status = $?.success? unless defined? status
35
48
  current_status = $?.success?
36
49
  banner = ($?.success? ? "SUCCESS" : "ERROR(S)")
37
- puts "#{banner} - #{@current_time.strftime("at: %T")}"
38
- if status != current_status
39
- puts output
40
- end
50
+ Curses.clear
51
+ display(2, 10, "#{banner} - #{@current_time.strftime("at: %T")}")
52
+ display(2, 2, "STATUS")
53
+ display(4, 0, output)
41
54
  status = current_status
55
+ Curses.refresh
42
56
  end
43
57
  end
44
58
  end
@@ -53,5 +67,42 @@ class Cigarette
53
67
  end
54
68
  end
55
69
 
70
+ def init_curses
71
+ Curses.noecho # do not show typed keys
72
+ Curses.init_screen
73
+ Curses.stdscr.keypad(true) # enable arrow keys
74
+ Curses.start_color
75
+ Curses.init_pair(RED, RED, BLACK)
76
+ Curses.init_pair(GREEN, GREEN, BLACK)
77
+ Curses.init_pair(MAGENTA, MAGENTA, WHITE)
78
+ Curses.init_pair(CYAN, CYAN, BLACK)
79
+ display(2, 2, "STATUS:")
80
+ display(2, 10, "WAITING")
81
+ Curses.refresh
82
+ end
83
+
84
+ def deploy_trap
85
+ for i in 1 .. 15 # SIGHUP .. SIGTERM
86
+ if trap(i, "SIG_IGN") != 0 then # 0 for SIG_IGN
87
+ trap(i) {|sig| onsig(sig) }
88
+ end
89
+ end
90
+ end
91
+
92
+ def display(line, column, text, color = DEFAULT)
93
+ Curses.setpos(line, column)
94
+ Curses.attron(Curses.color_pair(color | DEFAULT)) { Curses.addstr(text) }
95
+ end
96
+
97
+ def display_version
98
+ display(0,0, "cigarette - Version #{VERSION}")
99
+ Curses.refresh
100
+ end
101
+
102
+ def onsig(sig)
103
+ Curses.close_screen
104
+ exit sig
105
+ end
106
+
56
107
  end
57
108
 
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cigarette
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 0
9
- version: "1.0"
8
+ - 1
9
+ version: "1.1"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Thibaut Deloffre
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-12-20 00:00:00 Z
17
+ date: 2012-12-24 00:00:00 Z
18
18
  dependencies: []
19
19
 
20
20
  description: Tiny test tool