vedeu 0.4.36 → 0.4.37
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/vedeu +2 -1
- data/lib/vedeu/api.rb +5 -1
- data/lib/vedeu/bootstrap.rb +8 -6
- data/lib/vedeu/dsl/composition.rb +9 -3
- data/lib/vedeu/generator/application.rb +19 -10
- data/lib/vedeu/generator/helpers.rb +2 -0
- data/lib/vedeu/generator/view.rb +5 -5
- data/lib/vedeu/output/colour.rb +17 -1
- data/lib/vedeu/support/log.rb +16 -6
- data/lib/vedeu/tasks/vedeu.rake +4 -2
- data/lib/vedeu/traps.rb +8 -2
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/api_test.rb +2 -0
- data/test/lib/vedeu/dsl/composition_test.rb +22 -5
- data/test/lib/vedeu/support/log_test.rb +26 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e29978c4b64039fc130cc5bad584e48e4ab08a6d
|
4
|
+
data.tar.gz: b88b3581a5d9db259b16536802ce766ac00fd524
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2d7cf78b2fe8c5282fd1f3c4f3d25210d258a2db632d1cb7cdf6214c743e54141b104af5868f33fab97a0de017e0e17db663511ffb4d49ef805fa48032c3d12
|
7
|
+
data.tar.gz: d880b25648befe1cabb5441c2e62a5b08b2391abfdf684b25c8063233784c36252a86460dfeb0c52217d2600b1e318cb5ef8a20b22f22a6c640692a58a6c8b7c
|
data/bin/vedeu
CHANGED
@@ -37,7 +37,8 @@ begin
|
|
37
37
|
print "\n\e[33mVedeu v#{Vedeu::VERSION}\e[39m\n\n"
|
38
38
|
print "\e[4m\e[36mUsage:\e[39m\e[24m\n\n"
|
39
39
|
print "\e[32m vedeu new [app_name]\e[39m\n"
|
40
|
-
print
|
40
|
+
print ' Creates the skeleton file and directory structure for a new '
|
41
|
+
print "Vedeu client application.\n\n"
|
41
42
|
print "\e[32m vedeu view [view_name]\e[39m\n"
|
42
43
|
print " Creates a new view for Vedeu.\n"
|
43
44
|
print "\n\n"
|
data/lib/vedeu/api.rb
CHANGED
@@ -126,7 +126,11 @@ module Vedeu
|
|
126
126
|
|
127
127
|
# @!method log
|
128
128
|
# @see Vedeu::Log.log
|
129
|
-
|
129
|
+
# @!method log_stdout
|
130
|
+
# @see Vedeu::Log.log_stdout
|
131
|
+
# @!method log_stderr
|
132
|
+
# @see Vedeu::Log.log_stderr
|
133
|
+
def_delegators Vedeu::Log, :log, :log_stdout, :log_stderr
|
130
134
|
|
131
135
|
# @!method keypress
|
132
136
|
# @see Vedeu::Mapper.keypress
|
data/lib/vedeu/bootstrap.rb
CHANGED
@@ -55,17 +55,19 @@ module Vedeu
|
|
55
55
|
# @param path [String]
|
56
56
|
# @return [String]
|
57
57
|
def load(path)
|
58
|
+
loadables(path).each { |file| Kernel.load(file) }
|
59
|
+
|
60
|
+
path
|
61
|
+
end
|
62
|
+
|
63
|
+
# @param path [String]
|
64
|
+
# @return [Array<String>]
|
65
|
+
def loadables(path)
|
58
66
|
files = send(path)
|
59
67
|
|
60
68
|
Dir.glob(files).select do |file|
|
61
69
|
File.file?(file) && File.extname(file) == '.rb'
|
62
|
-
|
63
|
-
end.each do |file|
|
64
|
-
Kernel.load(file)
|
65
|
-
|
66
70
|
end
|
67
|
-
|
68
|
-
path
|
69
71
|
end
|
70
72
|
|
71
73
|
end # Bootstrap
|
@@ -91,14 +91,20 @@ module Vedeu
|
|
91
91
|
# @param name [String] The name of interface for which this template's
|
92
92
|
# content belongs to.
|
93
93
|
# @param filename [String] The filename (including path) to the template
|
94
|
-
# to be used.
|
94
|
+
# to be used. Yoy can use `File.dirname(__FILE__)` to use relative
|
95
|
+
# paths.
|
95
96
|
# @param object [Object] The object for which the values of template's
|
96
97
|
# variables can be obtained.
|
97
98
|
# @param options [Hash] See {Vedeu::Wordwrap}
|
98
99
|
# @return [Vedeu::Interfaces<Vedeu::Interface>]
|
99
100
|
def template_for(name, filename, object = nil, options = {})
|
100
|
-
|
101
|
-
|
101
|
+
fail MissingRequired, 'Cannot render template without the name of ' \
|
102
|
+
'the view.' unless name
|
103
|
+
fail MissingRequired, "Cannot render template for '#{name}', without " \
|
104
|
+
'a filename.' unless filename
|
105
|
+
|
106
|
+
content = Vedeu::Template.parse(object, filename)
|
107
|
+
lines = Vedeu::Wordwrap.for(content, options)
|
102
108
|
|
103
109
|
new_model = model.member.build(template_attributes(name, lines))
|
104
110
|
|
@@ -37,16 +37,9 @@ module Vedeu
|
|
37
37
|
|
38
38
|
# @return [void]
|
39
39
|
def make_directory_structure
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
FileUtils.mkdir_p(name + '/app/views/interfaces')
|
44
|
-
FileUtils.mkdir_p(name + '/app/views/templates')
|
45
|
-
FileUtils.mkdir_p(name + '/bin')
|
46
|
-
FileUtils.mkdir_p(name + '/config')
|
47
|
-
FileUtils.mkdir_p(name + '/lib')
|
48
|
-
FileUtils.mkdir_p(name + '/test')
|
49
|
-
FileUtils.mkdir_p(name + '/vendor')
|
40
|
+
directories.each do |directory|
|
41
|
+
FileUtils.mkdir_p(name + directory)
|
42
|
+
end
|
50
43
|
end
|
51
44
|
|
52
45
|
# @return [void]
|
@@ -101,6 +94,22 @@ module Vedeu
|
|
101
94
|
"#{name}/app/models/keymaps/_system_.rb")
|
102
95
|
end
|
103
96
|
|
97
|
+
# @return [Array<String>]
|
98
|
+
def directories
|
99
|
+
[
|
100
|
+
'/app/controllers',
|
101
|
+
'/app/helpers',
|
102
|
+
'/app/models/keymaps',
|
103
|
+
'/app/views/interfaces',
|
104
|
+
'/app/views/templates',
|
105
|
+
'/bin',
|
106
|
+
'/config',
|
107
|
+
'/lib',
|
108
|
+
'/test',
|
109
|
+
'/vendor',
|
110
|
+
]
|
111
|
+
end
|
112
|
+
|
104
113
|
end # Application
|
105
114
|
|
106
115
|
end # Generator
|
data/lib/vedeu/generator/view.rb
CHANGED
@@ -38,30 +38,30 @@ module Vedeu
|
|
38
38
|
# @return [void]
|
39
39
|
def make_controller_file
|
40
40
|
make_file(source + '/app/controllers/name.erb',
|
41
|
-
|
41
|
+
'.' + "/app/controllers/#{name}_controller.rb")
|
42
42
|
end
|
43
43
|
|
44
44
|
# @return [void]
|
45
45
|
def make_helper_file
|
46
46
|
make_file(source + '/app/helpers/name.erb',
|
47
|
-
|
47
|
+
'.' + "/app/helpers/#{name}_helper.rb")
|
48
48
|
end
|
49
49
|
|
50
50
|
# @return [void]
|
51
51
|
def make_interface_file
|
52
52
|
make_file(source + '/app/views/interfaces/name.erb',
|
53
|
-
|
53
|
+
'.' + "/app/views/interfaces/#{name}.rb")
|
54
54
|
end
|
55
55
|
|
56
56
|
# @return [void]
|
57
57
|
def make_template_file
|
58
|
-
FileUtils.touch(
|
58
|
+
FileUtils.touch('.' + "/app/views/templates/#{name}.erb")
|
59
59
|
end
|
60
60
|
|
61
61
|
# @return [void]
|
62
62
|
def make_view_class_file
|
63
63
|
make_file(source + '/app/views/name.erb',
|
64
|
-
|
64
|
+
'.' + "/app/views/#{name}.rb")
|
65
65
|
end
|
66
66
|
|
67
67
|
end # View
|
data/lib/vedeu/output/colour.rb
CHANGED
@@ -40,7 +40,23 @@ module Vedeu
|
|
40
40
|
# @param value []
|
41
41
|
# @return [Object]
|
42
42
|
def self.coerce(value)
|
43
|
-
Vedeu::ColourCoercer.coerce(value)
|
43
|
+
# Vedeu::ColourCoercer.coerce(value)
|
44
|
+
return value if value.is_a?(self)
|
45
|
+
return new unless value.is_a?(Hash)
|
46
|
+
|
47
|
+
if value[:colour]
|
48
|
+
return value[:colour] if value[:colour].is_a?(self)
|
49
|
+
return new unless value[:colour].is_a?(Hash)
|
50
|
+
return new(value[:colour]) if value[:colour][:background] ||
|
51
|
+
value[:colour][:foreground]
|
52
|
+
|
53
|
+
elsif value[:background] || value[:foreground]
|
54
|
+
new(value)
|
55
|
+
|
56
|
+
else
|
57
|
+
new
|
58
|
+
|
59
|
+
end
|
44
60
|
end
|
45
61
|
|
46
62
|
# Returns a new instance of Vedeu::Colour.
|
data/lib/vedeu/support/log.rb
CHANGED
@@ -11,11 +11,11 @@ module Vedeu
|
|
11
11
|
# STDOUT, STDERR or an open file).
|
12
12
|
#
|
13
13
|
def initialize(logdev)
|
14
|
-
@level
|
14
|
+
@level = DEBUG
|
15
15
|
@default_formatter = Formatter.new
|
16
|
-
@formatter
|
17
|
-
@logdev
|
18
|
-
@logdev
|
16
|
+
@formatter = nil
|
17
|
+
@logdev = nil
|
18
|
+
@logdev = LocklessLogDevice.new(logdev) if logdev
|
19
19
|
end
|
20
20
|
|
21
21
|
# Ensures we can always write to the log file by creating a lock-less
|
@@ -28,14 +28,14 @@ module Vedeu
|
|
28
28
|
# @param log []
|
29
29
|
# @return []
|
30
30
|
def initialize(log = nil)
|
31
|
-
@dev
|
31
|
+
@dev = nil
|
32
32
|
@filename = nil
|
33
33
|
|
34
34
|
if log.respond_to?(:write) && log.respond_to?(:close)
|
35
35
|
@dev = log
|
36
36
|
|
37
37
|
else
|
38
|
-
@dev
|
38
|
+
@dev = open_logfile(log)
|
39
39
|
@dev.sync = true
|
40
40
|
@filename = log
|
41
41
|
|
@@ -101,6 +101,16 @@ module Vedeu
|
|
101
101
|
message_body(type, message)]) if enabled? || force
|
102
102
|
end
|
103
103
|
|
104
|
+
# @return [TrueClass]
|
105
|
+
def log_stdout(type: :info, message:)
|
106
|
+
$stdout.puts [message_type(type), message_body(type, message)].join
|
107
|
+
end
|
108
|
+
|
109
|
+
# @return [TrueClass]
|
110
|
+
def log_stderr(type: :info, message:)
|
111
|
+
$stderr.puts [message_type(type), message_body(type, message)].join
|
112
|
+
end
|
113
|
+
|
104
114
|
# @return [TrueClass]
|
105
115
|
def logger
|
106
116
|
MonoLogger.new(log_file).tap do |log|
|
data/lib/vedeu/tasks/vedeu.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
Dir[File.expand_path('../*.rake', __FILE__)].delete_if do |task_file|
|
1
|
+
tasks = Dir[File.expand_path('../*.rake', __FILE__)].delete_if do |task_file|
|
2
2
|
task_file =~ /vedeu\.rake$/
|
3
|
-
end
|
3
|
+
end
|
4
|
+
|
5
|
+
tasks.each { |task_file| load task_file }
|
data/lib/vedeu/traps.rb
CHANGED
@@ -5,9 +5,15 @@ module Vedeu
|
|
5
5
|
# @api private
|
6
6
|
module Traps
|
7
7
|
|
8
|
-
Signal.trap('INT')
|
8
|
+
Signal.trap('INT') do
|
9
|
+
puts
|
10
|
+
exit(1)
|
11
|
+
end
|
9
12
|
|
10
|
-
Signal.trap('TERM')
|
13
|
+
Signal.trap('TERM') do
|
14
|
+
puts
|
15
|
+
exit(1)
|
16
|
+
end
|
11
17
|
|
12
18
|
Signal.trap('TTIN') {}
|
13
19
|
Signal.trap('USR1') {}
|
data/lib/vedeu/version.rb
CHANGED
data/test/lib/vedeu/api_test.rb
CHANGED
@@ -32,6 +32,8 @@ module Vedeu
|
|
32
32
|
it { Vedeu.must_respond_to(:interfaces) }
|
33
33
|
it { Vedeu.must_respond_to(:keymaps) }
|
34
34
|
it { Vedeu.must_respond_to(:log) }
|
35
|
+
it { Vedeu.must_respond_to(:log_stdout) }
|
36
|
+
it { Vedeu.must_respond_to(:log_stderr) }
|
35
37
|
it { Vedeu.must_respond_to(:keypress) }
|
36
38
|
it { Vedeu.must_respond_to(:menu) }
|
37
39
|
it { Vedeu.must_respond_to(:menus) }
|
@@ -46,14 +46,31 @@ module Vedeu
|
|
46
46
|
]
|
47
47
|
}
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
subject { instance.template_for(_name, filename, object) }
|
50
|
+
|
51
|
+
context 'when the name of the view is not given' do
|
52
|
+
let(:filename) { 'my_interface.erb' }
|
53
|
+
|
54
|
+
it { proc { subject }.must_raise(MissingRequired) }
|
52
55
|
end
|
53
56
|
|
54
|
-
|
57
|
+
context 'when the filename of the template is not given' do
|
58
|
+
let(:_name) { 'my_interface' }
|
55
59
|
|
56
|
-
|
60
|
+
it { proc { subject }.must_raise(MissingRequired) }
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when the name and filename are given' do
|
64
|
+
let(:_name) { 'my_interface' }
|
65
|
+
let(:filename) { 'my_interface.erb' }
|
66
|
+
|
67
|
+
before do
|
68
|
+
Vedeu::Template.expects(:parse).
|
69
|
+
with(object, filename).returns(content)
|
70
|
+
end
|
71
|
+
|
72
|
+
it { subject.must_be_instance_of(Vedeu::Interfaces) }
|
73
|
+
end
|
57
74
|
end
|
58
75
|
|
59
76
|
end # Composition
|
@@ -27,6 +27,32 @@ module Vedeu
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
describe '.log_stdout' do
|
31
|
+
let(:type) { :create }
|
32
|
+
let(:_message) { 'Logging to stdout...' }
|
33
|
+
|
34
|
+
subject { described.log_stdout(type: type, message: _message) }
|
35
|
+
|
36
|
+
it {
|
37
|
+
capture_io { subject }.must_equal(
|
38
|
+
["\e[92m[create] \e[39m\e[32mLogging to stdout...\e[39m\n", ""]
|
39
|
+
)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '.log_stdout' do
|
44
|
+
let(:type) { :debug }
|
45
|
+
let(:_message) { 'Logging to stderr...' }
|
46
|
+
|
47
|
+
subject { described.log_stderr(type: type, message: _message) }
|
48
|
+
|
49
|
+
it {
|
50
|
+
capture_io { subject }.must_equal(
|
51
|
+
["", "\e[91m[debug] \e[39m\e[31mLogging to stderr...\e[39m\n"]
|
52
|
+
)
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
30
56
|
describe '.logger' do
|
31
57
|
subject { described.logger }
|
32
58
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.37
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|