Sha256: 22b413e4389b88b76502015ca1432ab6c725c9366a712c0c719a875dc6a5851f

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

require 'thor'

module PebbleX

  class CLI < Thor

    class_option :verbose, :type => :boolean
    #class_option :version, :type => :boolean, :desc => "Prints version"
    class_option :pebble_sdk, :banner => "<directory>", :desc => "Sets directory of Pebble SDK (default derived from PATH)"

    def self.exit_on_failure?
      true
    end

    desc "version", "Prints the pebblex's version information"
    def version
      puts PebbleX::VERSION
    end
    map %w(-v --version) => :version

    desc "xcode", "Creates and Xcode project file"
    def xcode
      xcode = command_helper PebbleX::Xcode
      xcode.create_project
    end

    desc "build", "Builds pebble project"
    def build
      pebble = command_helper PebbleX::Pebble
      exit(pebble.build)
    end

    desc "debug", "Loads PBW and logs output from connected watch"
    def debug
      pebble = command_helper PebbleX::Pebble
      exit(pebble.debug)
    end

    # provide recurring logic (based on command line switches) to separate commands
    no_commands do

      def command_helper(cls)
        cls.new self
      end

      def verbose?
        return options[:verbose]
      end

      def sys_call(call)
        `#{call}`
      end

      def pebble_sdk_dir
        sdk_dir = options[:pebble_sdk]
        unless sdk_dir
          pebble_cmd = sys_call('which pebble').strip
          if pebble_cmd != ''
            sdk_dir = File.expand_path('../..', pebble_cmd)
          end
        end

        unless sdk_dir != ''
          raise ArgumentError, "Make sure the 'pebble' command is on your path or you pass --pebble_sdk."
        end

        return sdk_dir
      end

      def pebble_cmd
        pebble_cmd = File.expand_path('bin/pebble', self.pebble_sdk_dir)
        unless File.exists?(pebble_cmd)
          raise ArgumentError, "Cannot find 'pebble' command at #{pebble_cmd}."
        end
        return pebble_cmd
      end

      def pebblex_cmd
        return $0
      end

    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pebblex-0.0.4 lib/pebble_x/cli.rb
pebblex-0.0.3 lib/pebble_x/cli.rb