tug 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/tug +3 -3
- data/lib/tug/command/build_command.rb +6 -9
- data/lib/tug/command/command.rb +12 -10
- data/lib/tug/config/config_file.rb +21 -19
- data/lib/tug/config/external_config_file.rb +5 -3
- data/lib/tug/config/missing_config_file.rb +11 -9
- data/lib/tug/interface/interface.rb +18 -0
- data/lib/tug/project/project.rb +8 -6
- data/lib/tug/version.rb +1 -1
- data/lib/tug.rb +2 -2
- data/spec/build_command_spec.rb +9 -9
- data/spec/command_spec.rb +6 -6
- data/spec/config_file_spec.rb +9 -9
- data/spec/output.txt +2 -0
- data/spec/project_spec.rb +2 -2
- data/tug.gemspec +1 -0
- metadata +17 -6
- data/lib/tug/parser/empty_parser.rb +0 -12
- data/lib/tug/parser/parser.rb +0 -47
- data/spec/parser_spec.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9710a9c58ba0148c3f554af14898d4de0b966091
|
4
|
+
data.tar.gz: 35c8f0df420da37a7e73253e8c4df76aa38e82ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: baa1543c98c85d75f0f7cab80bcf1ab80afc9929e196e30213396f6f3467bb48c6a4ec17c2cac48c988546ff67ec04bbbaccd0a8f30e058637efd18baff8a527
|
7
|
+
data.tar.gz: b585022d3be40b825802081c9127ca4feffc9c4e198c357f4d0fa0ecfb48048f0157f1f8769c60c165cd0d0affc7007acc8aa332f2e33d6b5cb8e40af9456ce4
|
data/bin/tug
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
|
1
|
+
module Tug
|
2
|
+
class BuildCommand < Command
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def build(project)
|
9
|
-
project.schemes.each do |scheme|
|
10
|
-
system("xctool -workspace #{project.workspace} -scheme #{scheme} -sdk iphonesimulator")
|
4
|
+
def execute(project)
|
5
|
+
project.schemes.each do |scheme|
|
6
|
+
system("xctool -workspace #{project.workspace} -scheme #{scheme} -sdk iphonesimulator")
|
7
|
+
end
|
11
8
|
end
|
12
9
|
end
|
13
10
|
end
|
data/lib/tug/command/command.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
|
-
|
1
|
+
module Tug
|
2
|
+
class Command
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
class << self
|
5
|
+
def command_for_string(command_string)
|
6
|
+
case command_string
|
7
|
+
when "build"
|
8
|
+
Tug::BuildCommand.new
|
9
|
+
else
|
10
|
+
Tug::Command.new
|
11
|
+
end
|
10
12
|
end
|
11
13
|
end
|
12
|
-
end
|
13
14
|
|
14
|
-
|
15
|
+
def execute(project)
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
@@ -1,28 +1,30 @@
|
|
1
|
-
|
1
|
+
module Tug
|
2
|
+
class ConfigFile
|
2
3
|
|
3
|
-
|
4
|
+
attr_reader :project
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
class << self
|
7
|
+
def config_file(path=nil)
|
8
|
+
if path and File.file?(path)
|
9
|
+
Tug::ExternalConfigFile.new(path)
|
10
|
+
elsif File.file?(File.join(Dir.pwd, '.tug.yml'))
|
11
|
+
Tug::ConfigFile.new
|
12
|
+
else
|
13
|
+
Tug::MissingConfigFile.new
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
15
|
-
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
def initialize(path=nil)
|
19
|
+
config = YAML::load_file(File.join(Dir.pwd, '.tug.yml'))
|
20
|
+
@project = project_from_config(config)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
+
private
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
def project_from_config(config)
|
26
|
+
project_yaml = config['project']
|
27
|
+
Tug::Project.new(project_yaml['workspace'], project_yaml['schemes'])
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
@@ -1,14 +1,16 @@
|
|
1
|
-
|
1
|
+
module Tug
|
2
|
+
class MissingConfigFile < ConfigFile
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
def initialize(path=nil)
|
5
|
+
puts "Config file missing:\n" +
|
6
|
+
" Try specifying a path to your config file with the --config option"
|
7
|
+
abort
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
+
private
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
def abort
|
13
|
+
exit 1
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Tug
|
2
|
+
class Interface < Thor
|
3
|
+
|
4
|
+
desc "build", "build a project"
|
5
|
+
option :config
|
6
|
+
def build
|
7
|
+
config_file = Tug::ConfigFile.config_file(options[:config])
|
8
|
+
execute(__method__.to_s, config_file.project)
|
9
|
+
end
|
10
|
+
|
11
|
+
no_commands do
|
12
|
+
def execute(command, project)
|
13
|
+
command = Tug::Command.command_for_string(command)
|
14
|
+
command.execute(project)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/tug/project/project.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
|
1
|
+
module Tug
|
2
|
+
class Project
|
2
3
|
|
3
|
-
|
4
|
-
|
4
|
+
attr_reader :schemes
|
5
|
+
attr_reader :workspace
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def initialize(workspace, schemes)
|
8
|
+
@schemes = schemes
|
9
|
+
@workspace = workspace
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
data/lib/tug/version.rb
CHANGED
data/lib/tug.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require "optparse"
|
2
2
|
require 'yaml'
|
3
|
+
require 'thor'
|
3
4
|
|
4
5
|
require "tug/version"
|
5
6
|
|
6
7
|
require "tug/command/command"
|
7
8
|
require "tug/command/build_command"
|
8
9
|
|
9
|
-
require "tug/
|
10
|
-
require "tug/parser/empty_parser"
|
10
|
+
require "tug/interface/interface"
|
11
11
|
|
12
12
|
require "tug/config/config_file"
|
13
13
|
require "tug/config/missing_config_file"
|
data/spec/build_command_spec.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe BuildCommand do
|
3
|
+
describe Tug::BuildCommand do
|
4
4
|
|
5
5
|
describe "when executing" do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
@
|
9
|
-
@project = Project.new('workspace', ['scheme'])
|
8
|
+
@build_command = Tug::BuildCommand.new
|
9
|
+
@project = Tug::Project.new('workspace', ['scheme'])
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should run xctool" do
|
13
|
-
expect(@
|
14
|
-
@
|
13
|
+
expect(@build_command).to receive(:system).with(/xctool/)
|
14
|
+
@build_command.execute(@project)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should set the workspace" do
|
18
|
-
expect(@
|
19
|
-
@
|
18
|
+
expect(@build_command).to receive(:system).with(/-workspace workspace/)
|
19
|
+
@build_command.execute(@project)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should set the scheme" do
|
23
|
-
expect(@
|
24
|
-
@
|
23
|
+
expect(@build_command).to receive(:system).with(/-scheme scheme/)
|
24
|
+
@build_command.execute(@project)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
data/spec/command_spec.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Command do
|
3
|
+
describe Tug::Command do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@command = Command.new
|
6
|
+
@command = Tug::Command.new
|
7
7
|
end
|
8
8
|
|
9
9
|
describe "when returning a command" do
|
10
10
|
it "should return a build command" do
|
11
|
-
command = Command.command_for_string("build")
|
12
|
-
expect(command).to be_kind_of(BuildCommand)
|
11
|
+
command = Tug::Command.command_for_string("build")
|
12
|
+
expect(command).to be_kind_of(Tug::BuildCommand)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should return a default command" do
|
16
|
-
command = Command.command_for_string("hello")
|
17
|
-
expect(command).to be_kind_of(Command)
|
16
|
+
command = Tug::Command.command_for_string("hello")
|
17
|
+
expect(command).to be_kind_of(Tug::Command)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/spec/config_file_spec.rb
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe ConfigFile do
|
3
|
+
describe Tug::ConfigFile do
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
config = {'project' => {'workspace' => 'hello', 'schemes' => ["world"]}}
|
7
7
|
allow(YAML).to receive(:load_file).and_return(config)
|
8
|
-
@config_file = ConfigFile.new
|
8
|
+
@config_file = Tug::ConfigFile.new
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "when returning a config file" do
|
12
12
|
it "should return a config file for no path" do
|
13
13
|
expect(File).to receive(:file?).and_return(true)
|
14
|
-
config_file = ConfigFile.config_file
|
15
|
-
expect(config_file).to be_kind_of(ConfigFile)
|
14
|
+
config_file = Tug::ConfigFile.config_file
|
15
|
+
expect(config_file).to be_kind_of(Tug::ConfigFile)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should return a missing config file for no file found" do
|
19
|
-
allow_any_instance_of(MissingConfigFile).to receive(:abort)
|
19
|
+
allow_any_instance_of(Tug::MissingConfigFile).to receive(:abort)
|
20
20
|
expect(File).to receive(:file?).and_return(false)
|
21
|
-
config_file = ConfigFile.config_file
|
22
|
-
expect(config_file).to be_kind_of(MissingConfigFile)
|
21
|
+
config_file = Tug::ConfigFile.config_file
|
22
|
+
expect(config_file).to be_kind_of(Tug::MissingConfigFile)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should return an external config file for a path" do
|
26
26
|
allow(File).to receive(:file?).and_return(true)
|
27
|
-
config_file = ConfigFile.config_file("path")
|
28
|
-
expect(config_file).to be_kind_of(ExternalConfigFile)
|
27
|
+
config_file = Tug::ConfigFile.config_file("path")
|
28
|
+
expect(config_file).to be_kind_of(Tug::ExternalConfigFile)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
data/spec/output.txt
CHANGED
data/spec/project_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Project do
|
3
|
+
describe Tug::Project do
|
4
4
|
|
5
5
|
describe "when created" do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
@project = Project.new("workspace", ["scheme"])
|
8
|
+
@project = Tug::Project.new("workspace", ["scheme"])
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should have a workspace" do
|
data/tug.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "thor"
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Fish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,15 +105,13 @@ files:
|
|
91
105
|
- lib/tug/config/config_file.rb
|
92
106
|
- lib/tug/config/external_config_file.rb
|
93
107
|
- lib/tug/config/missing_config_file.rb
|
94
|
-
- lib/tug/
|
95
|
-
- lib/tug/parser/parser.rb
|
108
|
+
- lib/tug/interface/interface.rb
|
96
109
|
- lib/tug/project/project.rb
|
97
110
|
- lib/tug/version.rb
|
98
111
|
- spec/build_command_spec.rb
|
99
112
|
- spec/command_spec.rb
|
100
113
|
- spec/config_file_spec.rb
|
101
114
|
- spec/output.txt
|
102
|
-
- spec/parser_spec.rb
|
103
115
|
- spec/project_spec.rb
|
104
116
|
- spec/spec_helper.rb
|
105
117
|
- tug.gemspec
|
@@ -132,6 +144,5 @@ test_files:
|
|
132
144
|
- spec/command_spec.rb
|
133
145
|
- spec/config_file_spec.rb
|
134
146
|
- spec/output.txt
|
135
|
-
- spec/parser_spec.rb
|
136
147
|
- spec/project_spec.rb
|
137
148
|
- spec/spec_helper.rb
|
data/lib/tug/parser/parser.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
class Parser
|
2
|
-
|
3
|
-
attr_reader :options
|
4
|
-
attr_reader :command
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def parser_for_args(*options)
|
8
|
-
if options.size > 0
|
9
|
-
Parser.new(*options)
|
10
|
-
else
|
11
|
-
EmptyParser.new
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def initialize(*options)
|
17
|
-
@command = options.shift
|
18
|
-
@options = parsed_options(*options)
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def banner
|
24
|
-
"\n" +
|
25
|
-
"Commands:\n" +
|
26
|
-
" build - Build an xcode project\n\n" +
|
27
|
-
"Options:\n" +
|
28
|
-
" --config - Path to a .tug.yml config file"
|
29
|
-
end
|
30
|
-
|
31
|
-
def parsed_options(*options)
|
32
|
-
parsed_options = {}
|
33
|
-
|
34
|
-
o = OptionParser.new do |opts|
|
35
|
-
opts.on("-c", "--config CONFIG", "Configuration file path") do |config|
|
36
|
-
parsed_options[:config] = config
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
begin o.parse! options
|
41
|
-
rescue OptionParser::InvalidOption => e
|
42
|
-
puts banner
|
43
|
-
end
|
44
|
-
|
45
|
-
parsed_options
|
46
|
-
end
|
47
|
-
end
|
data/spec/parser_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Parser do
|
4
|
-
describe "when returning parsers" do
|
5
|
-
it "should return an option parser for options" do
|
6
|
-
parser = Parser.parser_for_args(["options"])
|
7
|
-
expect(parser).to be_a_kind_of(Parser)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should return an empty option parser for no options" do
|
11
|
-
parser = Parser.parser_for_args
|
12
|
-
expect(parser).to be_a_kind_of(EmptyParser)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "when parsing options" do
|
17
|
-
it "should parse the command" do
|
18
|
-
parser = Parser.parser_for_args("build")
|
19
|
-
expect(parser.command).to match("build")
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should parse the config file option" do
|
23
|
-
parser = Parser.new("build", "-c", "path")
|
24
|
-
expect(parser.options[:config]).to match("path")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|