Sha256: f53f5a1fddcc4c8d91cdf147c9db118e4407a44f3e5567a3369780f4d7e14ce2

Contents?: true

Size: 859 Bytes

Versions: 1

Compression:

Stored size: 859 Bytes

Contents

require 'lerna/strategy'

module Lerna
  module Strategies
    class Wall < Strategy
      def applicable?
        wanted_displays.length >= 2
      end

      def preconfigure
        disconnected = displays - wanted_displays
        disconnected.flat_map { |d|
          ['--output', d.name, '--off']
        }
      end

      def configure
        names = wanted_displays.map(&:name)
        leftmost = configure_one(names.first)
        names.each_cons(2).inject(leftmost) { |a, (l, r)|
          a + configure_one(r) + ['--right-of', l]
        }
      end

    private

      def wanted_displays
        displays.
          select(&:connected?).
          select { |d| d.external? && d.digital? }.
          sort_by(&:name)
      end

      def configure_one(name)
        ['--output', name, '--auto', '--rotate', 'normal']
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lerna-0.1.1 lib/lerna/strategies/wall.rb