You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: objective_c.rb
    path of file: ./repos/travis-build/lib/travis/build/script
    
    the code of the file until where you have to start completion: require 'shellwords'
require 'travis/build/script/shared/bundler'
require 'travis/build/script/shared/chruby'
require 'travis/build/script/shared/rvm'

module Travis
  module Build
    class Script
      class ObjectiveC < Script
        DEFAULTS = {
          rvm:     'default',
          gemfile: 'Gemfile',
          podfile: 'Podfile',
        }

        include RVM
        include Bundler

        def setup
          super
          sh.if podfile? do
            suppress_cocoapods_msg
          end
        end

        def announce
          super
          sh
    
        def script
          sh.if use_ruby_motion(with_bundler: true) do
            sh.cmd 'bundle exec rake spec'
          end

          sh.elif use_ruby_motion do
            sh.cmd 'rake spec'
          end

          sh.else do
            if config[:xcode_scheme] && (config[:xcode_project] || config[:xcode_workspace])
              if use_xctool?
                sh.cmd "xctool #{xcodebuild_args} build test"
              else
                sh.cmd "set -o pipefail && xcodebuild #{xcodebuild_args} build test | xcpretty"
              end
            else
              # deprecate DEPRECATED_MISSING_WORKSPACE_OR_PROJECT
              sh.cmd "echo -e \"\\033[33;1mWARNING:\\033[33m Using Objective-C testing without specifying a scheme and either a workspace or a project is deprecated.\"", echo: false, timing: true
              sh.cmd "echo \"  Check out our documentation for more information: http://about.travis-ci.org/docs/user/languages/objective-c/\"", echo: false, timing: true
              sh.failure
            end
          end