yellow-brick-road 0.2.4 → 0.2.5
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/lib/yellow-brick-road.rb
CHANGED
|
@@ -4,6 +4,8 @@ require 'yellow-brick-road/utils'
|
|
|
4
4
|
begin
|
|
5
5
|
require 'protobuf-closure-library'
|
|
6
6
|
require 'yellow-brick-road/protobuf_js'
|
|
7
|
+
require 'yellow-brick-road/protobuf_rb'
|
|
8
|
+
require 'yellow-brick-road/protobuf_compiler'
|
|
7
9
|
rescue LoadError
|
|
8
10
|
end
|
|
9
11
|
require 'yellow-brick-road/directive_processor'
|
|
@@ -54,9 +54,11 @@ module YellowBrickRoad
|
|
|
54
54
|
|
|
55
55
|
mattr_accessor :protos_dir
|
|
56
56
|
mattr_accessor :protos_js_out_dir
|
|
57
|
+
mattr_accessor :protos_rb_out_dir
|
|
57
58
|
def self.initProtos
|
|
58
59
|
@@protos_dir ||= Rails.root.join 'app', 'protos', '**', '*.proto'
|
|
59
60
|
@@protos_js_out_dir ||= Rails.root.join 'app', 'assets', 'javascripts', 'protos'
|
|
61
|
+
@@protos_rb_out_dir ||= Rails.root.join 'app', 'protos'
|
|
60
62
|
end
|
|
61
63
|
|
|
62
64
|
mattr_accessor :protobuf_js_superclass
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module YellowBrickRoad
|
|
2
|
+
@@protobuf_enabled = true
|
|
3
|
+
|
|
4
|
+
def self.compile_protos logger = Rails.logger
|
|
5
|
+
YellowBrickRoad.initProtos
|
|
6
|
+
proto_files = Dir[YellowBrickRoad.protos_dir]
|
|
7
|
+
|
|
8
|
+
if proto_files.empty?
|
|
9
|
+
logger.info "No protobuf file to compile in #{YellowBrickRoad.protos_dir}."
|
|
10
|
+
return
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
compile_protos_to_js proto_files, logger
|
|
14
|
+
compile_protos_to_rb proto_files, logger
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
module YellowBrickRoad
|
|
3
|
-
@@protobuf_enabled = true
|
|
4
3
|
include ProtobufClosureLibrary
|
|
5
4
|
|
|
6
|
-
def self.
|
|
7
|
-
YellowBrickRoad.initProtos
|
|
8
|
-
proto_files = Dir[YellowBrickRoad.protos_dir]
|
|
9
|
-
|
|
10
|
-
if proto_files.empty?
|
|
11
|
-
logger.info "No protobuf file to compile in #{YellowBrickRoad.protos_dir}."
|
|
12
|
-
return
|
|
13
|
-
end
|
|
5
|
+
def self.compile_protos_to_js proto_files, logger = Rails.logger
|
|
14
6
|
|
|
15
7
|
generator_options = {}
|
|
16
8
|
if YellowBrickRoad.protobuf_js_superclass
|
|
@@ -20,13 +12,15 @@ module YellowBrickRoad
|
|
|
20
12
|
generator_options[:advanced] = 'true'
|
|
21
13
|
end
|
|
22
14
|
|
|
23
|
-
logger.info 'Compiling protobuf to closure-library javascript:'
|
|
15
|
+
logger.info '* Compiling protobuf to closure-library javascript:'
|
|
16
|
+
|
|
24
17
|
proto_files.each do |proto_file|
|
|
25
18
|
logger.info "\t- #{proto_file}"
|
|
26
19
|
ProtocJs.compile proto_file, YellowBrickRoad.protos_js_out_dir,
|
|
27
20
|
generator_options: generator_options
|
|
28
21
|
end
|
|
29
|
-
|
|
22
|
+
|
|
23
|
+
logger.info "\tCompiled all to javascript in #{YellowBrickRoad.protos_js_out_dir}"
|
|
30
24
|
end
|
|
31
25
|
|
|
32
26
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'protocol_buffers'
|
|
2
|
+
require 'protocol_buffers/compiler'
|
|
3
|
+
require 'protocol_buffers/compiler/file_descriptor_to_ruby'
|
|
4
|
+
require 'tempfile'
|
|
5
|
+
|
|
6
|
+
module YellowBrickRoad
|
|
7
|
+
|
|
8
|
+
def self.compile_protos_to_rb proto_files, logger = Rails.logger
|
|
9
|
+
include_dirs = proto_files.map { |proto_file| File.dirname proto_file }
|
|
10
|
+
include_dirs.uniq!
|
|
11
|
+
|
|
12
|
+
protocfile = Tempfile.new 'ruby-protoc'
|
|
13
|
+
protocfile.binmode
|
|
14
|
+
ProtocolBuffers::Compiler.compile protocfile.path, proto_files,
|
|
15
|
+
:include_dirs => include_dirs
|
|
16
|
+
descriptor_set = FileDescriptorSet.parse protocfile
|
|
17
|
+
protocfile.close true
|
|
18
|
+
|
|
19
|
+
logger.info '* Compiling protobuf to ruby:'
|
|
20
|
+
|
|
21
|
+
descriptor_set.file.each do |file_descriptor|
|
|
22
|
+
proto_file = proto_files[proto_files.index { |path| path.include? file_descriptor.name }]
|
|
23
|
+
logger.info "\t- #{proto_file}"
|
|
24
|
+
|
|
25
|
+
path = File.join YellowBrickRoad.protos_rb_out_dir,
|
|
26
|
+
File.basename(file_descriptor.name, '.proto') + '.pb.rb'
|
|
27
|
+
|
|
28
|
+
FileUtils.mkpath(File.dirname(path)) unless File.directory?(File.dirname(path))
|
|
29
|
+
|
|
30
|
+
File.open(path, "wb") do |file|
|
|
31
|
+
dumper = FileDescriptorToRuby.new(file_descriptor)
|
|
32
|
+
dumper.write(file)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
logger.info "\tCompiled all to ruby in #{YellowBrickRoad.protos_js_out_dir}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yellow-brick-road
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.5
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-01-
|
|
12
|
+
date: 2012-01-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &2168934540 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,21 @@ dependencies:
|
|
|
21
21
|
version: '3.1'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *2168934540
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: ruby-protocol-buffers
|
|
27
|
+
requirement: &2168934080 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *2168934080
|
|
25
36
|
- !ruby/object:Gem::Dependency
|
|
26
37
|
name: sqlite3
|
|
27
|
-
requirement: &
|
|
38
|
+
requirement: &2168933600 !ruby/object:Gem::Requirement
|
|
28
39
|
none: false
|
|
29
40
|
requirements:
|
|
30
41
|
- - ! '>='
|
|
@@ -32,7 +43,7 @@ dependencies:
|
|
|
32
43
|
version: '0'
|
|
33
44
|
type: :development
|
|
34
45
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *2168933600
|
|
36
47
|
description: ! " A set of tools for integrating google closure library into rails,
|
|
37
48
|
including:\n Automatic dependency generation of a closure library based application,\n
|
|
38
49
|
\ using soy templates both as standalone and as part of the closure library,\n
|
|
@@ -49,7 +60,9 @@ files:
|
|
|
49
60
|
- lib/yellow-brick-road/config.rb
|
|
50
61
|
- lib/yellow-brick-road/directive_processor.rb
|
|
51
62
|
- lib/yellow-brick-road/engine.rb
|
|
63
|
+
- lib/yellow-brick-road/protobuf_compiler.rb
|
|
52
64
|
- lib/yellow-brick-road/protobuf_js.rb
|
|
65
|
+
- lib/yellow-brick-road/protobuf_rb.rb
|
|
53
66
|
- lib/yellow-brick-road/soy_processor.rb
|
|
54
67
|
- lib/yellow-brick-road/utils.rb
|
|
55
68
|
- lib/yellow-brick-road/version.rb
|
|
@@ -439,7 +452,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
439
452
|
version: '0'
|
|
440
453
|
segments:
|
|
441
454
|
- 0
|
|
442
|
-
hash:
|
|
455
|
+
hash: 3356618062880120890
|
|
443
456
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
444
457
|
none: false
|
|
445
458
|
requirements:
|
|
@@ -448,7 +461,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
448
461
|
version: '0'
|
|
449
462
|
segments:
|
|
450
463
|
- 0
|
|
451
|
-
hash:
|
|
464
|
+
hash: 3356618062880120890
|
|
452
465
|
requirements: []
|
|
453
466
|
rubyforge_project:
|
|
454
467
|
rubygems_version: 1.8.10
|