xbuild 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 548d1300c7687e2c95aee2805131f3a6a50ae0fa
4
+ data.tar.gz: 9006f9c42de7419e08672a0414ffc8dbac1fb80d
5
+ SHA512:
6
+ metadata.gz: 8b209fff927e63d315a015d1a878241125bfe96ca892550c5cfeb33aad8ffc91e06596dbb2875dfb7730b3a66dbe21f61fc29531bf3d286817a58aa69c9dea05
7
+ data.tar.gz: 125a0ffe58609d7a33ebd41fb409a36e23bd499e976030a4ff7c7229332cdaf34550cb82d300db0e734228fca56273e9a081e7874645a730416569f4a64acfdb
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.2
data/.travis.yml ADDED
@@ -0,0 +1,23 @@
1
+ os:
2
+ - osx
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ # OS X 10.9.5-10.10.0 (2.0.0-p481)
7
+ - system
8
+ # OS X 10.9.3-10.9.4
9
+ - 2.0.0-p451
10
+ # OS X 10.9.0-10.9.2
11
+ # TODO: currently unavailable: https://github.com/travis-ci/travis-ci/issues/2918
12
+ # - 2.0.0-p247
13
+
14
+ before_install:
15
+ # There is a bug in travis. When using system ruby, bundler is not
16
+ # installed and causes the default install action to fail.
17
+ - sudo gem install bundler
18
+
19
+ script: bundle exec rspec spec
20
+
21
+ addons:
22
+ code_climate:
23
+ repo_token: 495c653a664ee0f8d94acd821498d39571bb9b19550f13e0283fafc74f1b254
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in xbuild.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Guido Marucci Blas
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # XBuild
2
+
3
+ [![CI Status](https://travis-ci.org/guidomb/xbuild.svg?branch=master)](https://travis-ci.org/guidomb/xbuild)
4
+ [![Code Climate](https://codeclimate.com/github/guidomb/xbuild/badges/gpa.svg)](https://codeclimate.com/github/guidomb/xbuild)
5
+ [![Test Coverage](https://codeclimate.com/github/guidomb/xbuild/badges/coverage.svg)](https://codeclimate.com/github/guidomb/xbuild)
6
+
7
+
8
+ **XBuild** is a thin wrapper on top of `xcodebuild` and `xctool` that allows you to configure your favorite iOS & Mac build tool for your project.
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ ```ruby
15
+ gem 'xbuild'
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install xbuild
25
+
26
+ ## Usage
27
+
28
+ xbuild [OPTIONS] ACTION [WORKSPACE] [SCHEME]
29
+
30
+ Parameters:
31
+ ACTION The build action to be run. (clean|build|test|archive|analyze|install)
32
+ [WORKSPACE] Sets the project's workspace.
33
+ [SCHEME] Sets the project's scheme.
34
+
35
+ Options:
36
+ -x, --dry-run Runs all the process without actually calling the build tool.
37
+ -p, --pretty Uses xcpretty to format build output (only when using xcodebuild).
38
+ -v, --verbose Enables verbose mode.
39
+ -F, --xctool Uses xctool instead of xcodebuild as the build tool.
40
+ -h, --help print help
41
+
42
+
43
+ You can have a `.xbuild.yml` on the current working directory where you run `xbuild`
44
+ command is run. In this file you can configure the options, workspace and scheme. Here
45
+ is an example:
46
+
47
+ ```yaml
48
+ dry_run: false
49
+ pretty: false
50
+ verbose: true
51
+ xctool: true
52
+ scheme: MyProjectShared
53
+ workspace: MyProject.xcworkspace
54
+ ```
55
+
56
+ Options and arguments passed through the command line have more precedence that the
57
+ ones defined in the `.xbuild.yml` file.
58
+
59
+ The `scheme` and `workspace` arguments are mandatory and must be defined either using
60
+ the `.xbuild.yml` or through the command line.
61
+
62
+ ### Action arguments
63
+
64
+ You can configure action arguments to be included for a specific action in your `.xbuild.yml`. For example lets say that you want to add the arguments `-foo 1 -bar 2` for the `build` action. You should defined those actions like this"
65
+
66
+ ```yaml
67
+ dry_run: true
68
+ pretty: true
69
+ verbose: true
70
+ xctool: false
71
+ scheme: MyProjectShared
72
+ workspace: MyProject.xcworkspace
73
+ action_arguments:
74
+ build:
75
+ foo: 1
76
+ bar: 2
77
+ ```
78
+
79
+ When you run the `xbuild` command with the previous `.xbuild.yml` you will get the following output:
80
+
81
+ XBuild::Runner: Executing command 'set -o pipefail && xcodebuild -workspace MyProject.xcworkspace -scheme MyProjectShared build -foo 1 -bar 2 | xcpretty -c'
82
+
83
+
84
+ ## Contributing
85
+
86
+ 1. Fork it ( https://github.com/guidomb/xbuild/fork )
87
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
88
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
89
+ 4. Push to the branch (`git push origin my-new-feature`)
90
+ 5. Create a new Pull Request
91
+
92
+ ## License
93
+
94
+ **XBuild** is available under the MIT [license](https://raw.githubusercontent.com/guidomb/xbuild/master/LICENSE).
95
+
96
+ Copyright (c) 2014 Guido Marucci Blas <guidomb@gmail.com.ar>
97
+
98
+ Permission is hereby granted, free of charge, to any person obtaining a copy
99
+ of this software and associated documentation files (the "Software"), to deal
100
+ in the Software without restriction, including without limitation the rights
101
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
102
+ copies of the Software, and to permit persons to whom the Software is
103
+ furnished to do so, subject to the following conditions:
104
+
105
+ The above copyright notice and this permission notice shall be included in
106
+ all copies or substantial portions of the Software.
107
+
108
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
109
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
110
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
111
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
112
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
113
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
114
+ THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/xbuild ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ require 'bundler/setup'
3
+ Bundler.setup
4
+
5
+ require 'xbuild/cli'
6
+ XBuild::CLI.run
data/lib/xbuild/cli.rb ADDED
@@ -0,0 +1,102 @@
1
+ require 'clamp'
2
+ require 'yaml'
3
+ require 'xbuild'
4
+
5
+ module XBuild
6
+
7
+ class CLI < Clamp::Command
8
+
9
+ CONFIG_FILE_NAME = ".xbuild.yml"
10
+
11
+ option ["-x", "--dry-run"],
12
+ :flag,
13
+ "Runs all the process without actually calling the build tool.",
14
+ argument_name: :dry_run
15
+ option ["-p", "--pretty"],
16
+ :flag,
17
+ "Uses xcpretty to format build output (only when using xcodebuild).",
18
+ argument_name: :pretty
19
+ option ["-v", "--verbose"],
20
+ :flag,
21
+ "Enables verbose mode.",
22
+ argument_name: :verbose
23
+ option ["-F", "--xctool"],
24
+ :flag,
25
+ "Uses xctool instead of xcodebuild as the build tool.",
26
+ argument_name: :xctool
27
+
28
+ parameter "ACTION", "The build action to be run. (#{Runner::ACTIONS.join("|")})"
29
+ parameter "[WORKSPACE]", "Sets the project's workspace."
30
+ parameter "[SCHEME]", "Sets the project's scheme."
31
+
32
+ def execute
33
+ parse_config_file!
34
+ validate!
35
+ exit(1) unless runner.run(action)
36
+ end
37
+
38
+ private
39
+
40
+ def validate!
41
+ [:workspace, :scheme].each do |parameter|
42
+ if send(parameter).nil?
43
+ puts "Error: Parameter '#{parameter}' must be set either using '#{CONFIG_FILE_NAME}' or through command line."
44
+ exit(1)
45
+ end
46
+ end
47
+ end
48
+
49
+ def parse_config_file!
50
+ return unless File.exist?(CONFIG_FILE_NAME)
51
+ config = load_yaml_file(CONFIG_FILE_NAME)
52
+ set_parameter_value(config, :workspace)
53
+ set_parameter_value(config, :scheme)
54
+ # clan's default options are not used
55
+ # because if a config file is defined
56
+ # we want command line options to
57
+ # have precedence over options defined
58
+ # in the config file. That is why
59
+ # default value are manually applied
60
+ # after merging config file options
61
+ # with command line options
62
+ @options = default_options.merge(config.merge(options))
63
+ end
64
+
65
+ def options
66
+ return @options if @options
67
+ @options = {}
68
+ @options[:dry_run] = dry_run? unless dry_run?.nil?
69
+ @options[:verbose] = verbose? unless verbose?.nil?
70
+ @options[:pretty] = pretty? unless pretty?.nil?
71
+ @options[:xctool] = xctool? unless xctool?.nil?
72
+ @options
73
+ end
74
+
75
+ def default_options
76
+ {
77
+ dry_run: false,
78
+ verbose: false,
79
+ pretty: true,
80
+ xctool: false
81
+ }
82
+ end
83
+
84
+ def runner
85
+ @runner ||= Runner.new(workspace, scheme, options)
86
+ end
87
+
88
+ def load_yaml_file(file)
89
+ yaml = YAML.load_file(file)
90
+ Hash[yaml.map{ |k, v| [k.to_sym, v] }]
91
+ end
92
+
93
+ def set_parameter_value(config, parameter)
94
+ value = config.delete(parameter)
95
+ if send(parameter).nil?
96
+ instance_variable_set("@#{parameter}", value)
97
+ end
98
+ end
99
+
100
+ end
101
+
102
+ end
@@ -0,0 +1,132 @@
1
+ module XBuild
2
+
3
+ class SystemCommandExecutor
4
+
5
+ def execute(command)
6
+ system(command)
7
+ end
8
+
9
+ end
10
+
11
+ class Runner
12
+
13
+ ACTIONS = %w(
14
+ clean
15
+ build
16
+ test
17
+ archive
18
+ analyze
19
+ install
20
+ )
21
+
22
+ DEFAULT_ACTION_ARGUMENTS = {
23
+ 'test' => {
24
+ 'sdk' => 'iphonesimulator'
25
+ }
26
+ }
27
+
28
+ attr_reader :workspace, :scheme, :command_executor, :action_arguments
29
+
30
+ def initialize(workspace, scheme, opts = {})
31
+ @workspace = workspace
32
+ @scheme = scheme
33
+ opts = {verbose: false, dry_run: false, pretty: true, xctool: false}.merge(opts)
34
+ @pretty = opts[:pretty]
35
+ @verbose = opts[:verbose]
36
+ @dry_run = opts[:dry_run]
37
+ @xctool = opts[:xctool]
38
+ @action_arguments = opts[:action_arguments] || {}
39
+ @command_executor = opts[:command_executor] || SystemCommandExecutor.new
40
+ end
41
+
42
+ def xctool?
43
+ @xctool
44
+ end
45
+
46
+ def pretty?
47
+ !xctool? && @pretty
48
+ end
49
+
50
+ def run(action, arguments = {}, options = {})
51
+ success = false
52
+ if valid_action?(action)
53
+ options = default_base_options.merge(options)
54
+ arguments = merge_action_arguments(action, arguments)
55
+ command = build_command(action, arguments, options)
56
+ success = execute(command)
57
+ else
58
+ raise "Invalid action #{action}"
59
+ end
60
+ success
61
+ end
62
+
63
+ def dry_run?
64
+ @dry_run
65
+ end
66
+
67
+ def verbose?
68
+ @verbose
69
+ end
70
+
71
+ ACTIONS.each do |action|
72
+ define_method(action) do |*args|
73
+ run(action, *args)
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def merge_action_arguments(action, arguments)
80
+ args = action_arguments.fetch(action, {}).merge(arguments)
81
+ DEFAULT_ACTION_ARGUMENTS.fetch(action, {}).merge(args)
82
+ end
83
+
84
+ def build_command(action, arguments, options)
85
+ options = to_options_string(options)
86
+ arguments = to_options_string(arguments)
87
+ cmd = "#{build_tool}#{options} #{action}#{arguments}".strip
88
+ cmd = pipe_xcpretty(cmd) if pretty?
89
+ cmd
90
+ end
91
+
92
+ def build_tool
93
+ if xctool?
94
+ "xctool"
95
+ else
96
+ "xcodebuild"
97
+ end
98
+ end
99
+
100
+ def execute(command)
101
+ log("Executing command '#{command}'")
102
+ command_executor.execute(command) unless dry_run?
103
+ end
104
+
105
+ def valid_action?(action)
106
+ ACTIONS.include?(action)
107
+ end
108
+
109
+ def log(message)
110
+ puts "#{self.class}: #{message}" if verbose?
111
+ end
112
+
113
+ def default_base_options
114
+ @default_base_options ||= { workspace: workspace, scheme: scheme }
115
+ end
116
+
117
+ def pipe_xcpretty(cmd)
118
+ "set -o pipefail && #{cmd} | xcpretty -c"
119
+ end
120
+
121
+ def to_options_string(options = {})
122
+ options.reduce("") do |options_string, (key, value)|
123
+ if value
124
+ options_string + " -#{key} #{value}"
125
+ else
126
+ options_string + " -#{key}"
127
+ end
128
+ end
129
+ end
130
+
131
+ end
132
+ end
@@ -0,0 +1,3 @@
1
+ module Xbuild
2
+ VERSION = "0.1.0"
3
+ end
data/lib/xbuild.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'xbuild/version'
2
+ require 'xbuild/runner'
3
+
4
+ module XBuild
5
+
6
+ end
@@ -0,0 +1,172 @@
1
+ require 'spec_helper'
2
+
3
+ describe XBuild::Runner do
4
+
5
+ subject(:xbuild) { XBuild::Runner.new(workspace, scheme, options) }
6
+
7
+ let(:project) { "SpecProject" }
8
+ let(:scheme) { project }
9
+ let(:workspace) { "#{project}.xcworkspace" }
10
+ let(:command_executor) { double("command_executor") }
11
+ let(:pretty) { false }
12
+ let(:dry_run) { false }
13
+ let(:action) { XBuild::Runner::ACTIONS.sample }
14
+ let(:options) do
15
+ {
16
+ xctool: build_tool == "xctool",
17
+ command_executor: command_executor,
18
+ pretty: pretty,
19
+ dry_run: dry_run
20
+ }
21
+ end
22
+ let(:command_for_task) do
23
+ ->(task) do
24
+ cmd = "#{build_tool} -workspace #{workspace} -scheme #{scheme} #{task}"
25
+ cmd += " -sdk iphonesimulator" if task == "test"
26
+ cmd
27
+ end
28
+ end
29
+
30
+ shared_examples "a build tool runner" do
31
+
32
+ XBuild::Runner::ACTIONS.each do |action|
33
+
34
+ describe "##{action}" do
35
+ it "executes the #{action} task" do
36
+ expect(command_executor).to receive(:execute).with(command_for_task[action])
37
+ xbuild.send(action)
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ describe "#run" do
44
+
45
+ context "when the action is valid" do
46
+
47
+ it "executes the action" do
48
+ expect(command_executor).to receive(:execute).with(command_for_task[action])
49
+ xbuild.run(action)
50
+ end
51
+
52
+ context "when arguments are present" do
53
+
54
+ let(:arguments) { {foo: 1, bar:2, baz: nil} }
55
+
56
+ it "executes the action with the given arguments" do
57
+ expect(command_executor).to receive(:execute).with(match(/^.* #{action} .*-foo 1 -bar 2 -baz.*$/))
58
+ xbuild.run(action, arguments)
59
+ end
60
+
61
+ context "when xbuild was initialized with arguments for the given action" do
62
+
63
+ let(:options) do
64
+ {
65
+ xctool: build_tool == "xctool",
66
+ command_executor: command_executor,
67
+ pretty: pretty,
68
+ dry_run: dry_run,
69
+ action_arguments: {
70
+ action => {
71
+ :foo => 4,
72
+ :jaz => nil
73
+ }
74
+ }
75
+ }
76
+ end
77
+
78
+ it "combines both arguments" do
79
+ expect(command_executor).to receive(:execute).with(match(/^.* #{action} .*-foo 1 -jaz -bar 2 -baz.*$/))
80
+ xbuild.run(action, arguments)
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ context "when options are present" do
88
+
89
+ let(:arguments) { {} }
90
+ let(:build_options) { {foo: 1, bar:2, baz: nil} }
91
+
92
+ it "executes the action with the given options" do
93
+ expect(command_executor).to receive(:execute).with(match(/^.* -foo 1 -bar 2 -baz.* #{action}.*$/))
94
+ xbuild.run(action, arguments, build_options)
95
+ end
96
+
97
+ end
98
+
99
+ context "when the command executor returns true" do
100
+
101
+ before(:each) { allow(command_executor).to receive(:execute).and_return(true) }
102
+
103
+ it "returns true" do
104
+ expect(xbuild.run(action)).to be_truthy
105
+ end
106
+
107
+ end
108
+
109
+ context "when the command executor returns false" do
110
+
111
+ before(:each) { allow(command_executor).to receive(:execute).and_return(false) }
112
+
113
+ it "returns false" do
114
+ expect(xbuild.run(action)).to be_falsy
115
+ end
116
+
117
+ end
118
+
119
+ context "when XBuild's option 'dry_run' is true" do
120
+
121
+ let(:dry_run) { true }
122
+
123
+ it "does not call the command executor" do
124
+ expect(command_executor).not_to receive(:execute)
125
+ end
126
+
127
+ end
128
+
129
+ end
130
+
131
+ context "when the action is invalid" do
132
+
133
+ it "raises an error" do
134
+ expect { xbuild.run("foo") }.to raise_error("Invalid action foo")
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+
141
+ end
142
+
143
+ context "when using xctool as the build tool" do
144
+
145
+ let(:build_tool) { "xctool" }
146
+ it_behaves_like "a build tool runner"
147
+
148
+ end
149
+
150
+ context "when using xcodebuild as the build tool" do
151
+
152
+ let(:build_tool) { "xcodebuild" }
153
+ it_behaves_like "a build tool runner"
154
+
155
+ describe "#run" do
156
+
157
+ context "when XBuild's option 'pretty' is true" do
158
+
159
+ let(:pretty) { true }
160
+
161
+ it "uses xcpretty to format the output" do
162
+ expect(command_executor).to receive(:execute).with(match(/^set -o pipefail && xcodebuild .* | xcpretty -c$/))
163
+ xbuild.run(action)
164
+ end
165
+
166
+ end
167
+
168
+ end
169
+
170
+ end
171
+
172
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'xbuild'
5
+ require 'byebug'
6
+ require "codeclimate-test-reporter"
7
+ CodeClimate::TestReporter.start
8
+
9
+ RSpec.configure do |config|
10
+ # some (optional) config here
11
+ end
data/xbuild.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xbuild/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "xbuild"
8
+ spec.version = Xbuild::VERSION
9
+ spec.authors = ["Guido Marucci Blas"]
10
+ spec.email = ["guidomb@gmail.com"]
11
+ spec.summary = %q{A wrapper over xcodebuild and xctool }
12
+ spec.description = %q{XBuild is a thin wrapper on top of xcodebuild and xctool that allows you to configure your favorite iOS & Mac build tool for your project.}
13
+ spec.homepage = "https://github.com/guidomb/xbuild"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.1.0"
24
+ spec.add_development_dependency "byebug", "~> 3.5.1"
25
+ spec.add_development_dependency "codeclimate-test-reporter"
26
+
27
+ spec.add_dependency "clamp", "~>0.6.3"
28
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xbuild
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Guido Marucci Blas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.5.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.5.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: codeclimate-test-reporter
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: clamp
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.6.3
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.6.3
97
+ description: XBuild is a thin wrapper on top of xcodebuild and xctool that allows
98
+ you to configure your favorite iOS & Mac build tool for your project.
99
+ email:
100
+ - guidomb@gmail.com
101
+ executables:
102
+ - xbuild
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".ruby-version"
109
+ - ".travis.yml"
110
+ - Gemfile
111
+ - LICENSE.txt
112
+ - README.md
113
+ - Rakefile
114
+ - bin/xbuild
115
+ - lib/xbuild.rb
116
+ - lib/xbuild/cli.rb
117
+ - lib/xbuild/runner.rb
118
+ - lib/xbuild/version.rb
119
+ - spec/runner_spec.rb
120
+ - spec/spec_helper.rb
121
+ - xbuild.gemspec
122
+ homepage: https://github.com/guidomb/xbuild
123
+ licenses:
124
+ - MIT
125
+ metadata: {}
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.2.2
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: A wrapper over xcodebuild and xctool
146
+ test_files:
147
+ - spec/runner_spec.rb
148
+ - spec/spec_helper.rb