tug 0.0.2 → 0.0.3
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/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
|