cuesmash 0.1.7.1 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab02397923ae6bcc8a4d50e9669002b717e238cf
4
- data.tar.gz: 49b186b927bff4dab83ac849d725638ff573b413
3
+ metadata.gz: 48e58bea94fd7f9c3530ae9d5e58b01c97be9fa8
4
+ data.tar.gz: e9b0af7c1164eb3421559e980670669cd5621c21
5
5
  SHA512:
6
- metadata.gz: 16d9547be2c387b300fe344cec9f8e5208b0e69b94bce6ada59bbf1e44daa8d21c709d1e717a08d8d3bbdd928e723a902227855bc32161c190d4c05e84bf2bbe
7
- data.tar.gz: ba1036e189318efedbdef926b43638a9e01fc83aa33d3561152505a7fdefd4022b6ec3ec65054974f45278f4f56104bb32ab68314336421f6c9d5fd8ad73e5c9
6
+ metadata.gz: 8b363d22b641435db75895ce121375df0c37741cbc3738c04cd1fa15b7ae400e69faf931d35a536ad02d41b49a7d02c826fb483bbd702ac84b392a01ce159e09
7
+ data.tar.gz: e476b772402fe0daee97cdcd25b8ba61d6f1c4c180d7afe360e25a7e0371b79cf600fc8183930bb037aa27ad1f3213c009b6ff29a02520a269626aacc63e211b
data/.cuesmash.yml CHANGED
@@ -12,4 +12,7 @@ devices:
12
12
  [8.0]
13
13
  default:
14
14
  os: iPhone 5s
15
- version: 8.0
15
+ version: 8.1
16
+ test_timeout: 120
17
+
18
+ build_configuration: 'Debug'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cuesmash (0.1.7.1)
4
+ cuesmash (0.1.9)
5
5
  CFPropertyList (>= 2.2.8)
6
6
  rest-client (~> 1.7.2)
7
7
  thor (>= 0.19.1)
@@ -21,6 +21,7 @@ GEM
21
21
  columnize (0.8.9)
22
22
  debugger-linecache (1.2.0)
23
23
  diff-lcs (1.2.5)
24
+ docile (1.1.5)
24
25
  ffi (1.9.5)
25
26
  formatador (0.2.5)
26
27
  guard (2.6.1)
@@ -40,6 +41,7 @@ GEM
40
41
  lumberjack (1.0.9)
41
42
  method_source (0.8.2)
42
43
  mime-types (2.3)
44
+ multi_json (1.10.1)
43
45
  netrc (0.7.7)
44
46
  pry (0.10.1)
45
47
  coderay (~> 1.1.0)
@@ -64,6 +66,11 @@ GEM
64
66
  rspec-mocks (3.1.2)
65
67
  rspec-support (~> 3.1.0)
66
68
  rspec-support (3.1.1)
69
+ simplecov (0.9.1)
70
+ docile (~> 1.1.0)
71
+ multi_json (~> 1.0)
72
+ simplecov-html (~> 0.8.0)
73
+ simplecov-html (0.8.0)
67
74
  slop (3.6.0)
68
75
  thor (0.19.1)
69
76
  timers (4.0.1)
@@ -81,3 +88,4 @@ DEPENDENCIES
81
88
  pry (>= 0.10.1)
82
89
  rake (>= 10.3.2)
83
90
  rspec (>= 3.1.0)
91
+ simplecov (~> 0.9.0)
data/cuesmash.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "cuesmash"
7
- spec.version = "0.1.7.1"
7
+ spec.version = "0.1.9"
8
8
  spec.authors = ["Alex Fish", "Jarod McBride"]
9
9
  spec.email = ["fish@ustwo.co.uk", "jarod@ustwo.com"]
10
10
  spec.description = "A gift for Juan"
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'guard-rspec', '>= 4.3.1'
26
26
  spec.add_development_dependency 'pry', '>= 0.10.1'
27
27
  spec.add_development_dependency 'byebug', '>= 3.5.1'
28
+ spec.add_development_dependency 'simplecov', '~> 0.9.0'
28
29
 
29
30
  spec.add_runtime_dependency 'CFPropertyList', '>= 2.2.8'
30
31
  spec.add_runtime_dependency 'thor', '>= 0.19.1'
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ module Cuesmash
5
+
6
+ #
7
+ # Provides an object to get information about the ios app that is being built.
8
+ #
9
+ class AndroidApp < App
10
+
11
+ # app/build/outputs/apk/
12
+ attr_reader :app_dir
13
+
14
+ # Public: the full path including the built app i.e. ./app/build/outputs/apk/app-debug.apk"
15
+ attr_reader :app_path
16
+
17
+ # Public: the app name i.e. app-debug.apk
18
+ attr_reader :app_name
19
+
20
+ #
21
+ # Create a new App instance
22
+ #
23
+ # @param project_name [String] the project name to be built.
24
+ # @param build_configuration [String] which build configuration to run i.e. Release, Debug
25
+ #
26
+ # @return [App] A app instance
27
+ def initialize(project_name:, build_configuration:)
28
+ @app_name = "#{project_name}-#{build_configuration}" << ".apk"
29
+
30
+ @app_dir = File.expand_path("./app/build/outputs/apk/")
31
+
32
+ @app_path = "#{@app_dir}/" << "#{@app_name}"
33
+ end
34
+
35
+ end # class AndroidApp
36
+ end # module Cuesmash
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ module Cuesmash
5
+
6
+ #
7
+ # Creates the appium.txt file that is needed by appium
8
+ #
9
+ # @author [jarod]
10
+ #
11
+ class AndroidAppiumText
12
+
13
+ attr_accessor :appium_avd
14
+ attr_accessor :appium_app
15
+ attr_accessor :appium_platform_name
16
+ attr_accessor :appium_new_command_timeout
17
+ attr_accessor :appium_text_for_file
18
+
19
+ #
20
+ # [initialize description]
21
+ # @param platform_name: [type] [description]
22
+ # @param avd: [type] [description]
23
+ # @param app: [type] [description]
24
+ # @param new_command_timeout: 60 [type] [description]
25
+ #
26
+ # @return [type] [description]
27
+ def initialize(platform_name:, avd:, app:, new_command_timeout: 60)
28
+ @appium_platform_name = platform_name
29
+ @appium_avd = avd
30
+ @appium_app = app
31
+ @appium_new_command_timeout = new_command_timeout
32
+ end
33
+
34
+ def execute
35
+ started
36
+ update
37
+ completed
38
+ end
39
+
40
+ private
41
+
42
+ def started
43
+ Logger.info "Updating appium.txt"
44
+ end
45
+
46
+ def update
47
+ @appium_text_for_file = file_text
48
+ IO.write("features/support/appium.txt", @appium_text_for_file)
49
+ end
50
+
51
+ def completed
52
+ Logger.info "appium.txt updated 👌"
53
+ end
54
+
55
+ # [caps]
56
+ # platformName = "Android"
57
+ # app = "/Users/admin/repos/android-bbd-sample/app/build/outputs/apk/app-debug.apk"
58
+ # newCommandTimeout = "130"
59
+ # avd = "Nexus_6_API_21"
60
+ def file_text
61
+ text = "[caps]\n"
62
+ text << "platformName = \"#{appium_platform_name}\"\n"
63
+ text << "deviceName = \"Android Emulator\"\n"
64
+ text << "avd = \"#{appium_avd}\"\n"
65
+ text << "app = \"#{appium_app}\"\n"
66
+ text << "newCommandTimeout = \"#{appium_new_command_timeout}\"\n"
67
+ Logger.debug "appium.text == #{text}"
68
+ text
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+ require 'cuesmash/android_appium_text'
4
+
5
+ module Cuesmash
6
+
7
+ #
8
+ # The main point of entry for all commands, Command parses command line arguments
9
+ # and decides what to do about them.
10
+ #
11
+ # @author [alexfish]
12
+ #
13
+ class AndroidCommand
14
+
15
+ #
16
+ # Execute a command with some arguments
17
+ # then figure out what we're supposed to be doing with
18
+ # the arguments
19
+ #
20
+ # @param avd: [type] [description]
21
+ # @param server: [type] [description]
22
+ # @param tags: [type] [description]
23
+ # @param debug: false [type] [description]
24
+ # @param format: nil [type] [description]
25
+ # @param output: nil [type] [description]
26
+ # @param app: [type] [description]
27
+ # @param profile: [type] [description]
28
+ # @param quiet: false [type] [description]
29
+ # @param timeout: [type] [description]
30
+ #
31
+ # @return [type] [description]
32
+ def self.execute(avd:, server:, tags:, debug: false, format: nil, output: nil, app:, profile:, quiet: false, timeout:)
33
+
34
+ if debug
35
+ Logger.level = ::Logger::DEBUG
36
+ Logger.formatter = proc do |serverity, time, progname, msg|
37
+ "\n#{time}\t#{serverity}\t#{msg.rstrip}"
38
+ end
39
+ end
40
+
41
+ # Update the appium.txt file
42
+ create_appium_txt(app: app.app_path, timeout: timeout, avd: avd)
43
+
44
+ # start the appium server
45
+ app_server = AppiumServer.new
46
+ app_server.start_server
47
+
48
+ # Run the tests
49
+ run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
50
+
51
+ # Stop the Appium server
52
+ # app_server.stop_server
53
+
54
+ end # execute
55
+
56
+ #
57
+ # Run the cucumber tests, that's why we're here afterall
58
+ #
59
+ # @param tags [Array] The cucumber tags to test with
60
+ # @param profile [String] cucumber profile to use
61
+ # @param format [String] The output format for the cucumber tests, Optional
62
+ # @param output [String] The path to the output directory to output test reports to, Optional
63
+ # @param quiet [Boolean] quiet flag for cucumber
64
+ #
65
+ def self.run_tests(tags:, profile:, format: nil, output: nil, quiet: false)
66
+ cucumber = Cuesmash::Cucumber.new(tags, profile, quiet)
67
+ cucumber.format = format if format
68
+ cucumber.output = output if output
69
+ cucumber.test
70
+ end
71
+
72
+ #
73
+ # Update appium.txt file with the directory of the build product
74
+ #
75
+ # @param platform_name [String] default 'iOS' name of platform to test on (Android or iOS)
76
+ # @param device_name [String] deviceName = "iPhone Simulator"
77
+ # @param platform_version [String] platformVersion = "7.1"
78
+ # @param app [String] path to built .app file
79
+ # @param timeout [String] time in seconds to set the newCommandTimeout to.
80
+ #
81
+ def self.create_appium_txt(platform_name: "Android", app:, timeout:, avd:)
82
+ appium = Cuesmash::AndroidAppiumText.new(platform_name: platform_name, avd: avd, app: app, new_command_timeout: timeout)
83
+ appium.execute
84
+ end
85
+ end # class Command
86
+ end # module Cuesmash
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ module Cuesmash
4
+
5
+ #
6
+ # iOS Specific compiler
7
+ #
8
+ class AndroidCompiler < Compiler
9
+
10
+ OUTPUT_PATH = "app/build/outputs/apk"
11
+
12
+ def initialize
13
+ end
14
+
15
+ #
16
+ # Generate the string to be used as the gradle build command
17
+ # using the scheme ivar
18
+ #
19
+ # @return [String] The full gradle build command with args
20
+ def command
21
+ gradle_command = './gradlew assemble'
22
+
23
+ Logger.info "gradle_command == #{gradle_command}"
24
+ gradle_command
25
+ end # command
26
+ end # class AndroidCompiler
27
+ end # module Cuesmash
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ module Cuesmash
5
+
6
+ #
7
+ # Provides an object to get information about the ios app that is being built.
8
+ #
9
+ class AndroidApp < App
10
+
11
+ # app/build/outputs/apk/
12
+ attr_reader :app_dir
13
+
14
+ # Public: the full path including the built app i.e. ./app/build/outputs/apk/app-debug.apk"
15
+ attr_reader :app_path
16
+
17
+ # Public: the app name i.e. app-debug.apk
18
+ attr_reader :app_name
19
+
20
+ #
21
+ # Create a new App instance
22
+ #
23
+ # @param project_name [String] the project name to be built.
24
+ # @param build_configuration [String] which build configuration to run i.e. Release, Debug
25
+ #
26
+ # @return [App] A app instance
27
+ def initialize(project_name:, build_configuration:)
28
+ @app_name = "#{project_name}-#{build_configuration}" << ".apk"
29
+
30
+ @app_dir = File.expand_path("./app/build/outputs/apk/")
31
+
32
+ @app_path = "#{@app_dir}/" << "#{@app_name}"
33
+ end
34
+
35
+ end # class AndroidApp
36
+ end # module Cuesmash
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ module Cuesmash
5
+
6
+ #
7
+ # Provides an object to get information about the ios app that is being built
8
+ #
9
+ class App
10
+
11
+ # Public: the xcode Derived Data temp directory
12
+ attr_reader :tmp_dir
13
+
14
+ #
15
+ # Create a new App instance
16
+ #
17
+ # @return [App] A app instance
18
+ def initialize()
19
+ @tmp_dir = Dir.mktmpdir(file_name)
20
+ end
21
+ end
22
+ end
@@ -14,6 +14,8 @@ module Cuesmash
14
14
  attr_accessor :app
15
15
  attr_accessor :platform_name
16
16
  attr_accessor :device_name
17
+ attr_accessor :new_command_timeout
18
+ attr_accessor :appium_text_for_file
17
19
 
18
20
  #
19
21
  # Create a new appium_text instance. These params are based off the appium.txt
@@ -25,11 +27,12 @@ module Cuesmash
25
27
  # @param app [String] path to built .app file
26
28
  #
27
29
  # @return [AppiumText] A appiumtext instance
28
- def initialize(platform_name:, device_name:, platform_version:, app:)
30
+ def initialize(platform_name:, device_name:, platform_version: nil, app:, new_command_timeout: 60)
29
31
  @platform_name = platform_name
30
32
  @device_name = device_name
31
33
  @platform_version = platform_version
32
34
  @app = app
35
+ @new_command_timeout = new_command_timeout
33
36
  end
34
37
 
35
38
  def execute
@@ -38,7 +41,6 @@ module Cuesmash
38
41
  completed
39
42
  end
40
43
 
41
-
42
44
  private
43
45
 
44
46
  def started
@@ -46,8 +48,8 @@ module Cuesmash
46
48
  end
47
49
 
48
50
  def update
49
- text = file_text
50
- IO.write("features/support/appium.txt", text)
51
+ @appium_text_for_file = file_text
52
+ IO.write("features/support/appium.txt", @appium_text_for_file)
51
53
  end
52
54
 
53
55
  def completed
@@ -63,8 +65,9 @@ module Cuesmash
63
65
  text = "[caps]\n"
64
66
  text << "platformName = \"#{platform_name}\"\n"
65
67
  text << "deviceName = \"#{device_name}\"\n"
66
- text << "platformVersion = \"#{platform_version}\"\n"
68
+ text << "platformVersion = \"#{platform_version}\"\n" unless platform_version == nil
67
69
  text << "app = \"#{app}\"\n"
70
+ text << "newCommandTimeout = \"#{new_command_timeout}\"\n"
68
71
  Logger.debug "appium.text == #{text}"
69
72
  text
70
73
  end
@@ -30,9 +30,10 @@ module Cuesmash
30
30
  # @param app [IosApp Object]
31
31
  # @param profile [String]
32
32
  # @param quiet [String]
33
+ # @param timeout [String] newCommandTimeout for appium in seconds
33
34
  #
34
35
  # @return [type] [description]
35
- def execute(device:, os:, server:, tags:, scheme:, debug: false, format: nil, output: nil, travis: nil, app:, profile:, quiet: false)
36
+ def execute(device:, os:, server:, tags:, scheme:, debug: false, format: nil, output: nil, travis: nil, app:, profile:, quiet: false, timeout:)
36
37
 
37
38
  if debug
38
39
  Logger.level = ::Logger::DEBUG
@@ -45,14 +46,14 @@ module Cuesmash
45
46
  # update_plist(scheme, app.app_path)
46
47
 
47
48
  # Update the appium.txt file
48
- create_appium_txt(app: app.app_path, device_name: device, platform_version: os)
49
+ create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
49
50
 
50
51
  # start the appium server
51
52
  app_server = AppiumServer.new
52
53
  app_server.start_server
53
54
 
54
55
  # Run the tests
55
- run_tests(ios: os, tags: tags, profile: profile, format: format, output: output, quiet: quiet)
56
+ run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
56
57
 
57
58
  # Stop the Appium server
58
59
  # app_server.stop_server
@@ -81,8 +82,8 @@ module Cuesmash
81
82
  # @param output [String] The path to the output directory to output test reports to, Optional
82
83
  # @param quiet [Boolean] quiet flag for cucumber
83
84
  #
84
- def run_tests(ios:, tags:, profile:, format: nil, output: nil, quiet: false)
85
- cucumber = Cuesmash::Cucumber.new(ios, tags, profile, quiet)
85
+ def run_tests(tags:, profile:, format: nil, output: nil, quiet: false)
86
+ cucumber = Cuesmash::Cucumber.new(tags, profile, quiet)
86
87
  cucumber.format = format if format
87
88
  cucumber.output = output if output
88
89
  cucumber.test
@@ -95,11 +96,12 @@ module Cuesmash
95
96
  # @param device_name [String] deviceName = "iPhone Simulator"
96
97
  # @param platform_version [String] platformVersion = "7.1"
97
98
  # @param app [String] path to built .app file
99
+ # @param timeout [String] time in seconds to set the newCommandTimeout to.
98
100
  #
99
- def create_appium_txt(platform_name: "iOS", device_name:, platform_version:, app:)
100
- appium = AppiumText.new(platform_name: platform_name, device_name: device_name, platform_version: platform_version, app: app)
101
+ def create_appium_txt(platform_name: "iOS", device_name:, platform_version:, app:, timeout:)
102
+ appium = AppiumText.new(platform_name: platform_name, device_name: device_name, platform_version: platform_version, app: app, new_command_timeout: timeout)
101
103
  appium.execute
102
104
  end
103
- end
104
- end
105
- end
105
+ end # self
106
+ end # class Command
107
+ end # module Cuesmash
@@ -6,20 +6,15 @@ module Cuesmash
6
6
  # The calamsash compiler will compiles the Xcode project with the
7
7
  # scheme it's told to compile with.
8
8
  #
9
- # @author [alexfish]
10
- #
11
9
  class Compiler
12
- # include Logging
13
10
 
14
11
  # Public: the Scheme the compiler is compiling
15
12
  attr_accessor :scheme
16
13
  attr_accessor :tmp_dir
17
- attr_accessor :build_configuration
18
14
 
19
- def initialize(scheme, tmp_dir, build_configuration)
15
+ def initialize(scheme, tmp_dir)
20
16
  @scheme = scheme
21
17
  @tmp_dir = tmp_dir
22
- @build_configuration = build_configuration
23
18
  end
24
19
 
25
20
  #
@@ -44,7 +39,7 @@ module Cuesmash
44
39
  end
45
40
 
46
41
  if status != 0
47
- Logger.fatal "Compilation failed: #{output}"
42
+ # Logger.fatal "Compilation failed: #{output}"
48
43
  exit status
49
44
  status
50
45
  else
@@ -67,35 +62,5 @@ module Cuesmash
67
62
  def completed
68
63
  Logger.info "Compiled 👌"
69
64
  end
70
-
71
- #
72
- # Generate the string to be used as the xcode build command
73
- # using the scheme ivar
74
- #
75
- # @return [String] The full xcode build command with args
76
- def command
77
- # xcode_command = "xcodebuild #{workspace} -scheme #{@scheme} -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -derivedDataPath #{@tmp_dir}"
78
- xcode_command = "set -o pipefail && xcodebuild #{workspace} -scheme #{@scheme} -derivedDataPath #{@tmp_dir} -configuration #{@build_configuration} OBJROOT=#{@tmp_dir} SYMROOT=#{@tmp_dir} -sdk iphonesimulator build | bundle exec xcpretty -c"
79
-
80
- Logger.info "xcode_command == #{xcode_command}"
81
- xcode_command
82
- end
83
-
84
- #
85
- # Looks in the current directory for the workspace file and
86
- # gets it's name if there is one
87
- #
88
- # @return [String] The name of the workspace file that was found along with the -workspace flag
89
- def workspace
90
- wp = Dir["*.xcworkspace"].first
91
- if wp
92
- flag = "-workspace #{wp}"
93
- Logger.debug "workspace == #{wp}"
94
- return flag
95
- else
96
- Logger.debug "no workspace found"
97
- return wp
98
- end
99
- end
100
- end
101
- end
65
+ end # class compiler
66
+ end # module cuesmash
@@ -30,8 +30,7 @@ module Cuesmash
30
30
  # @param profile [String] the cucumber profile to use for the tests
31
31
  # @param quiet [Boolean]
32
32
  #
33
- def initialize(ios, tags, profile, quiet)
34
- @ios = ios
33
+ def initialize(tags, profile, quiet)
35
34
  @tags = tags
36
35
  @profile = profile
37
36
  @quiet = quiet
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'cuesmash/app'
5
+
6
+ module Cuesmash
7
+
8
+ #
9
+ # Provides an object to get information about the ios app that is being built.
10
+ #
11
+ class IosApp < App
12
+
13
+ # Public: the path to the dir containing the built app i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/
14
+ attr_reader :app_dir
15
+
16
+ # Public: the full path including the built app i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/MyApp.app"
17
+ attr_reader :app_path
18
+
19
+ # Public: the app name i.e. MyApp.app
20
+ attr_reader :app_name
21
+
22
+ # Public: the xcode Derived Data temp directory
23
+ attr_reader :tmp_dir
24
+
25
+ #
26
+ # Create a new App instance
27
+ #
28
+ # @param file_name [String] The usually is the scheme of the xcode project
29
+ # @param build_configuration [String] which iOS build configuration to run i.e. Release, Debug
30
+ #
31
+ # @return [App] A app instance
32
+ def initialize(file_name:, build_configuration:)
33
+ @app_name = "#{file_name}" << ".app"
34
+ @tmp_dir = Dir.mktmpdir(file_name)
35
+ @build_configuration = build_configuration
36
+
37
+ @app_dir = "#{@tmp_dir}" << "/#{@build_configuration}-iphonesimulator/"
38
+
39
+ @app_path = "#{@app_dir}" << "#{@app_name}"
40
+ end
41
+ end # class IosApp
42
+ end # module Cuesmash
@@ -0,0 +1,49 @@
1
+ # coding: utf-8
2
+
3
+ module Cuesmash
4
+
5
+ #
6
+ # iOS Specific compiler
7
+ #
8
+ class IosCompiler < Compiler
9
+
10
+ attr_accessor :scheme
11
+ attr_accessor :tmp_dir
12
+ attr_accessor :build_configuration
13
+
14
+ def initialize(scheme, tmp_dir, build_configuration)
15
+ @scheme = scheme
16
+ @tmp_dir = tmp_dir
17
+ @build_configuration = build_configuration
18
+ end
19
+
20
+ #
21
+ # Generate the string to be used as the xcode build command
22
+ # using the scheme ivar
23
+ #
24
+ # @return [String] The full xcode build command with args
25
+ def command
26
+ xcode_command = "set -o pipefail && xcodebuild #{workspace} -scheme #{@scheme} -derivedDataPath #{@tmp_dir} -configuration #{@build_configuration} OBJROOT=#{@tmp_dir} SYMROOT=#{@tmp_dir} -sdk iphonesimulator build | bundle exec xcpretty -c"
27
+
28
+ Logger.info "xcode_command == #{xcode_command}"
29
+ xcode_command
30
+ end # command
31
+
32
+ #
33
+ # Looks in the current directory for the workspace file and
34
+ # gets it's name if there is one
35
+ #
36
+ # @return [String] The name of the workspace file that was found along with the -workspace flag
37
+ def workspace
38
+ wp = Dir["*.xcworkspace"].first
39
+ if wp
40
+ flag = "-workspace #{wp}"
41
+ Logger.debug "workspace == #{wp}"
42
+ return flag
43
+ else
44
+ Logger.debug "no workspace found"
45
+ return wp
46
+ end
47
+ end # workspace
48
+ end # class IosCompiler
49
+ end # module Cuesmash