ryb 0.1.3.1 → 0.2.0.2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +36 -47
- data/NOTES +0 -0
- data/README.md +3 -1
- data/TODO +4 -0
- data/bin/ryb +2 -42
- data/lib/ryb.rb +31 -20
- data/lib/ryb/cli.rb +103 -0
- data/lib/ryb/code.rb +7 -0
- data/lib/ryb/configuration.rb +18 -12
- data/lib/ryb/configurations.rb +9 -0
- data/lib/ryb/dependencies.rb +7 -0
- data/lib/ryb/dependency.rb +30 -0
- data/lib/ryb/dsl.rb +280 -0
- data/lib/ryb/environment.rb +9 -0
- data/lib/ryb/flags.rb +17 -0
- data/lib/ryb/gem.rb +58 -0
- data/lib/ryb/helpers/defaults.rb +26 -0
- data/lib/ryb/helpers/pretty_string.rb +47 -0
- data/lib/ryb/languages.rb +13 -0
- data/lib/ryb/name.rb +3 -5
- data/lib/ryb/ninja.rb +257 -200
- data/lib/ryb/paths.rb +7 -0
- data/lib/ryb/preprocessor.rb +10 -0
- data/lib/ryb/product.rb +31 -0
- data/lib/ryb/project.rb +6 -29
- data/lib/ryb/source_file.rb +62 -0
- data/lib/ryb/visual_studio.rb +93 -57
- data/lib/rybfile.rb +30 -10
- data/lib/rybfile/walker.rb +202 -0
- data/lib/yb.rb +4 -0
- data/lib/ybfile.rb +3 -0
- data/ryb.gemspec +18 -13
- data/ryb.sublime-project +18 -17
- metadata +45 -31
- data/lib/ryb/application.rb +0 -24
- data/lib/ryb/architecture.rb +0 -16
- data/lib/ryb/architectures/x86.rb +0 -11
- data/lib/ryb/architectures/x86_64.rb +0 -11
- data/lib/ryb/library.rb +0 -29
- data/lib/ryb/properties.rb +0 -10
- data/lib/ryb/properties/architectures.rb +0 -32
- data/lib/ryb/properties/configurations.rb +0 -29
- data/lib/ryb/properties/defines.rb +0 -31
- data/lib/ryb/properties/dependencies.rb +0 -23
- data/lib/ryb/properties/files.rb +0 -25
- data/lib/ryb/properties/flags.rb +0 -33
- data/lib/ryb/properties/named.rb +0 -17
- data/lib/ryb/properties/paths.rb +0 -37
- data/lib/ryb/properties/suffix.rb +0 -17
- data/lib/ryb/properties/targets.rb +0 -36
- data/lib/ryb/target.rb +0 -16
- data/lib/ryb/targets/linux.rb +0 -11
- data/lib/ryb/targets/macosx.rb +0 -33
- data/lib/ryb/targets/windows.rb +0 -13
- data/lib/ryb/version.rb +0 -11
- data/lib/ryb/windows.rb +0 -40
- data/lib/ryb/xcode.rb +0 -145
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63cc2afcc3bcab179722908bb5c2911804211e2b
|
4
|
+
data.tar.gz: a17dcbb8a42d284a855c0edc0e48640933cbdc19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de79d590fb5c07e18a3ed6acb8574174a970e6b00d0df7f1c7244fe304dd80db13277523c6c0271e0b35ff2f1c2e5f82098ab52bdffa7faeecd52f8dbf992d02
|
7
|
+
data.tar.gz: b200c8f3fd29689fa70962ce4fe3d3003c197f6c26ea2793a4e9c88277a14b4a29f8b03e58b71b8b0ef820a0ed8fad3731f6d39059968794d0bbc3936d6f68fb
|
data/Gemfile.lock
CHANGED
@@ -1,76 +1,65 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ryb (0.
|
5
|
-
|
6
|
-
|
4
|
+
ryb (0.2.0.1)
|
5
|
+
gli (~> 2)
|
6
|
+
hashie
|
7
7
|
ninja-gen
|
8
|
-
|
8
|
+
pour
|
9
|
+
visual_studio
|
9
10
|
|
10
11
|
GEM
|
11
12
|
remote: https://rubygems.org/
|
12
13
|
specs:
|
13
|
-
|
14
|
-
i18n (~> 0.7)
|
15
|
-
json (~> 1.7, >= 1.7.7)
|
16
|
-
minitest (~> 5.1)
|
17
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
18
|
-
tzinfo (~> 1.1)
|
19
|
-
aruba (0.8.1)
|
14
|
+
aruba (0.13.0)
|
20
15
|
childprocess (~> 0.5.6)
|
21
16
|
contracts (~> 0.9)
|
22
17
|
cucumber (>= 1.3.19)
|
18
|
+
ffi (~> 1.9.10)
|
23
19
|
rspec-expectations (>= 2.99)
|
20
|
+
thor (~> 0.19)
|
24
21
|
builder (3.2.2)
|
25
|
-
childprocess (0.5.
|
22
|
+
childprocess (0.5.9)
|
26
23
|
ffi (~> 1.0, >= 1.0.11)
|
27
|
-
|
28
|
-
|
29
|
-
contracts (0.11.0)
|
30
|
-
cucumber (2.0.2)
|
24
|
+
contracts (0.13.0)
|
25
|
+
cucumber (2.3.2)
|
31
26
|
builder (>= 2.1.2)
|
32
|
-
cucumber-core (~> 1.
|
27
|
+
cucumber-core (~> 1.4.0)
|
28
|
+
cucumber-wire (~> 0.0.1)
|
33
29
|
diff-lcs (>= 1.1.3)
|
34
|
-
gherkin (~> 2.
|
30
|
+
gherkin (~> 3.2.0)
|
35
31
|
multi_json (>= 1.7.5, < 2.0)
|
36
32
|
multi_test (>= 0.1.2)
|
37
|
-
cucumber-core (1.
|
38
|
-
gherkin (~> 2.
|
33
|
+
cucumber-core (1.4.0)
|
34
|
+
gherkin (~> 3.2.0)
|
35
|
+
cucumber-wire (0.0.1)
|
39
36
|
diff-lcs (1.2.5)
|
40
|
-
facets (3.0.0)
|
41
37
|
ffi (1.9.10)
|
42
38
|
ffi (1.9.10-x86-mingw32)
|
43
|
-
gherkin (2.
|
44
|
-
|
45
|
-
|
46
|
-
multi_json (~> 1.3)
|
47
|
-
gli (2.13.1)
|
48
|
-
i18n (0.7.0)
|
49
|
-
json (1.8.3)
|
50
|
-
minitest (5.8.0)
|
39
|
+
gherkin (3.2.0)
|
40
|
+
gli (2.13.4)
|
41
|
+
hashie (3.4.3)
|
51
42
|
multi_json (1.11.2)
|
52
43
|
multi_test (0.1.2)
|
53
44
|
ninja-gen (0.1.1.1)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
rspec-
|
58
|
-
|
59
|
-
rspec-
|
60
|
-
rspec-
|
45
|
+
pour (0.0.3.1)
|
46
|
+
typespec
|
47
|
+
rspec (3.4.0)
|
48
|
+
rspec-core (~> 3.4.0)
|
49
|
+
rspec-expectations (~> 3.4.0)
|
50
|
+
rspec-mocks (~> 3.4.0)
|
51
|
+
rspec-core (3.4.3)
|
52
|
+
rspec-support (~> 3.4.0)
|
53
|
+
rspec-expectations (3.4.0)
|
61
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
62
|
-
rspec-support (~> 3.
|
63
|
-
rspec-mocks (3.
|
55
|
+
rspec-support (~> 3.4.0)
|
56
|
+
rspec-mocks (3.4.1)
|
64
57
|
diff-lcs (>= 1.2.0, < 2.0)
|
65
|
-
rspec-support (~> 3.
|
66
|
-
rspec-support (3.
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
xcodeproj (0.26.3)
|
71
|
-
activesupport (>= 3)
|
72
|
-
claide (~> 0.9.1)
|
73
|
-
colored (~> 1.2)
|
58
|
+
rspec-support (~> 3.4.0)
|
59
|
+
rspec-support (3.4.1)
|
60
|
+
thor (0.19.1)
|
61
|
+
typespec (0.1.0.8)
|
62
|
+
visual_studio (0.1.0.2)
|
74
63
|
|
75
64
|
PLATFORMS
|
76
65
|
ruby
|
data/NOTES
ADDED
File without changes
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
# [Rubify Your Build!](http://rubifyyourbuild.com/)
|
1
|
+
# [Rubify Your Build!](http://rubifyyourbuild.com/)
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/ryb)
|
4
4
|
[](https://travis-ci.org/mtwilliams/ryb)
|
5
5
|
[](https://codeclimate.com/github/mtwilliams/ryb)
|
6
6
|
[](https://gemnasium.com/mtwilliams/ryb)
|
7
|
+
|
8
|
+
:meat_on_bone: Delicious!
|
data/TODO
ADDED
data/bin/ryb
CHANGED
@@ -1,46 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
$:.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
-
|
4
|
-
require 'rubygems'
|
5
|
-
require 'facets'
|
6
|
-
require 'gli'
|
7
|
-
require 'xcodeproj'
|
8
|
-
require 'ninja'
|
9
2
|
|
3
|
+
$:.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
10
4
|
require 'ryb'
|
11
|
-
# TODO(mtwilliams): Refactor into Ryb::Runner.
|
12
|
-
require 'rybfile'
|
13
|
-
|
14
|
-
include GLI::App
|
15
|
-
|
16
|
-
# TODO(mtwilliams): Refactor this ugliness into lib/ryb.rb?
|
17
|
-
spec = Gem::Specification::load(File.expand_path(File.join(File.dirname(__FILE__), '..', 'ryb.gemspec')))
|
18
|
-
# program_name spec.name
|
19
|
-
version spec.version.to_s
|
20
|
-
program_desc spec.summary
|
21
|
-
program_long_desc spec.description
|
22
|
-
|
23
|
-
desc 'Generate project file(s)'
|
24
|
-
# TODO(mtwilliams): Improve command-specific help.
|
25
|
-
long_desc 'Generates project files for a specific toolset based on a Rybfile.'
|
26
|
-
command [:g, :gen, :generate] do |c|
|
27
|
-
c.desc 'Automatically regenerate project file(s)'
|
28
|
-
|
29
|
-
c.action do |global_opts, opts, args|
|
30
|
-
# TODO(mtwilliams): Sanity checks on `args'.
|
31
|
-
toolset = args.shift
|
32
|
-
# TODO(mtwilliams): Custom exception types.
|
33
|
-
raise "No toolset specified!" if toolset.nil?
|
34
|
-
raise "Unknown toolset `#{toolset}'!" unless %w{ninja}.include? toolset
|
35
|
-
rybfile = args.shift || 'Rybfile'
|
36
|
-
raise "No such file `#{rybfile}' exists!" unless File.exists?(rybfile)
|
37
|
-
rybfile = Rybfile.load(rybfile)
|
38
|
-
puts "Generating project file(s) for `#{toolset}'..."
|
39
|
-
case toolset
|
40
|
-
when 'ninja'
|
41
|
-
Ryb::Ninja.generate_build_file_for rybfile.project, root: '.', built: '_build'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
5
|
|
46
|
-
exit run(ARGV)
|
6
|
+
exit Ryb::CommandLineInterface.run(ARGV)
|
data/lib/ryb.rb
CHANGED
@@ -1,28 +1,39 @@
|
|
1
1
|
require 'rbconfig'
|
2
|
+
require 'delegate'
|
3
|
+
require 'hashie'
|
4
|
+
require 'pour'
|
5
|
+
require 'visual_studio'
|
6
|
+
require 'ninja'
|
2
7
|
|
3
8
|
module Ryb
|
4
|
-
|
5
|
-
@platform ||= begin
|
6
|
-
case RbConfig::CONFIG['host_os']
|
7
|
-
when /mswin|msys|mingw/
|
8
|
-
:windows
|
9
|
-
when /mac os|darwin/
|
10
|
-
:macosx
|
11
|
-
when /linux/
|
12
|
-
:linux
|
13
|
-
when /bsd/
|
14
|
-
:bsd
|
15
|
-
else
|
16
|
-
raise 'Unknown or unsupported platform!'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'ryb/version'
|
9
|
+
require 'ryb/gem'
|
22
10
|
|
11
|
+
require 'ryb/helpers/defaults'
|
12
|
+
require 'ryb/helpers/pretty_string'
|
13
|
+
|
14
|
+
require 'ryb/name'
|
15
|
+
require 'ryb/paths'
|
16
|
+
require 'ryb/languages'
|
17
|
+
require 'ryb/source_file'
|
18
|
+
|
19
|
+
require 'ryb/environment'
|
20
|
+
require 'ryb/flags'
|
21
|
+
require 'ryb/preprocessor'
|
22
|
+
require 'ryb/code'
|
23
|
+
require 'ryb/dependency'
|
24
|
+
require 'ryb/dependencies'
|
25
|
+
require 'ryb/configuration'
|
26
|
+
require 'ryb/configurations'
|
27
|
+
require 'ryb/product'
|
23
28
|
require 'ryb/project'
|
24
|
-
require 'ryb/library'
|
25
|
-
require 'ryb/application'
|
26
29
|
|
30
|
+
require 'ryb/dsl'
|
31
|
+
|
32
|
+
require 'rybfile'
|
33
|
+
require 'rybfile/walker'
|
34
|
+
|
35
|
+
require 'ryb/visual_studio'
|
27
36
|
require 'ryb/ninja'
|
37
|
+
|
38
|
+
require 'ryb/cli'
|
28
39
|
end
|
data/lib/ryb/cli.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
module Ryb
|
2
|
+
# TODO(mtwilliams): Collate these somewhere else.
|
3
|
+
PLATFORMS = %w{windows macosx linux}
|
4
|
+
TOOLCHAINS = %w{msvc clang+llvm gcc}
|
5
|
+
|
6
|
+
module CommandLineInterface
|
7
|
+
# TODO(mtwilliams): Look into using Thor?
|
8
|
+
require 'gli'
|
9
|
+
include GLI::App
|
10
|
+
extend self
|
11
|
+
|
12
|
+
# program_name Ryb::Gem.name
|
13
|
+
version Ryb::Gem.version.to_s
|
14
|
+
program_desc Ryb::Gem.summary
|
15
|
+
program_long_desc Ryb::Gem.description
|
16
|
+
|
17
|
+
desc ''
|
18
|
+
flag [:root], :default_value => '.'
|
19
|
+
|
20
|
+
desc ''
|
21
|
+
flag [:build], :default_value => '_build'
|
22
|
+
|
23
|
+
# TODO(mtwilliams): Use a proper logger.
|
24
|
+
# switch :verbose, :default => false,
|
25
|
+
# :negatable => false
|
26
|
+
|
27
|
+
desc 'Generate project file(s)'
|
28
|
+
long_desc 'Generates project files for a specific toolset, based on a Rybfile.'
|
29
|
+
command [:g, :gen, :generate] do |gen|
|
30
|
+
gen.action do |global_opts, opts, args|
|
31
|
+
# TODO(mtwilliams): Use custom exception types and refactor out error
|
32
|
+
# messages. This will allow us to localize, among other things.
|
33
|
+
raise "You failed to specify a toolset!" if args.empty?
|
34
|
+
toolset = args.shift
|
35
|
+
raise "You specified an unknown toolset `#{toolset}'!"
|
36
|
+
end
|
37
|
+
|
38
|
+
gen.command :visual_studio do |vs|
|
39
|
+
# BUG(mtwilliams): Descriptions aren't being made available.
|
40
|
+
vs.desc 'Generate Visual Studio project files'
|
41
|
+
vs.long_desc 'Generates Visual Studio projects files, based on a Rybfile.'
|
42
|
+
vs.action do |global_opts, opts, args|
|
43
|
+
rybfile = Rybfile.load(args.shift || "Rybfile")
|
44
|
+
raise "Not implemented, yet."
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
gen.command :xcode do |xcode|
|
49
|
+
# BUG(mtwilliams): Descriptions aren't being made available.
|
50
|
+
xcode.desc 'Generate XCode project files'
|
51
|
+
xcode.long_desc 'Generates XCode projects files, based on a Rybfile.'
|
52
|
+
xcode.action do |global_opts, opts, args|
|
53
|
+
rybfile = Rybfile.load(args.shift || "Rybfile")
|
54
|
+
raise "Not implemented, yet."
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
gen.command :gmake do |gmake|
|
59
|
+
# BUG(mtwilliams): Descriptions aren't being made available.
|
60
|
+
gmake.desc 'Generate GNU Makefiles'
|
61
|
+
gmake.long_desc 'Generates GNU Makefiles, based on a Rybfile.'
|
62
|
+
gmake.action do |global_opts, opts, args|
|
63
|
+
rybfile = Rybfile.load(args.shift || "Rybfile")
|
64
|
+
raise "Not implemented, yet."
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
gen.command :ninja do |ninja|
|
69
|
+
# BUG(mtwilliams): Descriptions aren't being made available.
|
70
|
+
ninja.desc 'Generate Ninja build files'
|
71
|
+
ninja.long_desc 'Generates a build.ninja file for a specific toolchain, based on a Rybfile.'
|
72
|
+
ninja.flag 'for', :default_value => 'latest',
|
73
|
+
:type => String,
|
74
|
+
:arg_name => 'for',
|
75
|
+
:desc => 'The toolchain to use'
|
76
|
+
|
77
|
+
ninja.action do |global_opts, opts, args|
|
78
|
+
rybfile = Rybfile.load(args.shift || "Rybfile")
|
79
|
+
|
80
|
+
# # TODO(mtwilliams): Refactor out.
|
81
|
+
# # TODO(mtwilliams): Verify every platform+architecture is supported.
|
82
|
+
# targets = [*global_opts[:targets].split(';')].flat_map { |platform, architectures|
|
83
|
+
# architectures = [*(architectures.split(',') || ['*'])]
|
84
|
+
# [].fill(platform, 0, architectures.length).zip(architectures)
|
85
|
+
# }
|
86
|
+
|
87
|
+
# toolchains = begin
|
88
|
+
# pairings = global_opts[:toolchains].split(',')
|
89
|
+
# Hash[pairings.map { |pairing|
|
90
|
+
# platform, toolchain = *pairing.split(':')
|
91
|
+
# [platform, toolchain]
|
92
|
+
# }]
|
93
|
+
# end
|
94
|
+
|
95
|
+
Ryb::Ninja.generate_from(rybfile, root: global_opts[:root],
|
96
|
+
build: global_opts[:build],
|
97
|
+
targets: ['windows'],
|
98
|
+
toolchains: ['msvc'])
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/lib/ryb/code.rb
ADDED
data/lib/ryb/configuration.rb
CHANGED
@@ -1,16 +1,22 @@
|
|
1
|
-
require 'ryb/name'
|
2
|
-
require 'ryb/properties'
|
3
|
-
|
4
1
|
module Ryb
|
5
|
-
class Configuration
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
class Configuration < Pour::Mould
|
3
|
+
property :name, Typespec.t[Name]
|
4
|
+
|
5
|
+
property :prefix, Typespec.string
|
6
|
+
property :suffix, Typespec.string
|
7
|
+
|
8
|
+
pour Environment
|
9
|
+
pour Preprocessor
|
10
|
+
pour Flags
|
11
|
+
|
12
|
+
pour Code
|
13
|
+
|
14
|
+
pour Dependencies
|
15
|
+
end
|
16
|
+
|
17
|
+
class Platform < Configuration
|
18
|
+
end
|
10
19
|
|
11
|
-
|
12
|
-
@name = Name.new(name, opts[:pretty])
|
13
|
-
yield self if block_given?
|
14
|
-
end
|
20
|
+
class Architecture < Configuration
|
15
21
|
end
|
16
22
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module Ryb
|
2
|
+
module Configurations
|
3
|
+
include Pour::Pourable
|
4
|
+
|
5
|
+
property :configurations, Typespec.array[Typespec.t[Configuration]]
|
6
|
+
property :platforms, Typespec.array[Typespec.t[Platform]]
|
7
|
+
property :architectures, Typespec.array[Typespec.t[Architecture]]
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Ryb
|
2
|
+
class Dependency < Pour::Mould
|
3
|
+
end
|
4
|
+
|
5
|
+
class InternalDependency < Dependency
|
6
|
+
property :product, Typespec.symbol
|
7
|
+
|
8
|
+
def initialize(product)
|
9
|
+
self.product = product
|
10
|
+
end
|
11
|
+
|
12
|
+
alias :eql? :==
|
13
|
+
def ==(other)
|
14
|
+
self.product == other.product
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class ExternalDependency < Dependency
|
19
|
+
property :lib_or_framework, Typespec.string
|
20
|
+
|
21
|
+
def initialize(lib_or_framework)
|
22
|
+
self.lib_or_framework = lib_or_framework
|
23
|
+
end
|
24
|
+
|
25
|
+
alias :eql? :==
|
26
|
+
def ==(other)
|
27
|
+
self.lib_or_framework == other.lib_or_framework
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|