Sha256: 47e750b6d21710321a171da039a46c75c520944fac0c4bfb93579a30d9993bde

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

require 'forwardable'

module DockerSync
  module Dependencies
    module Unox
      LEGACY_UNOX_WARNING          = 'You installed unison-fsmonitor (unox) the old legacy way (i.e. not using brew). We need to fix that.'.freeze
      FAILED_TO_REMOVE_LEGACY_UNOX = 'Failed to remove legacy unison-fsmonitor (unox). Please delete /usr/local/bin/unison-fsmonitor manually and try again.'.freeze

      class << self
        extend Forwardable
        def_delegators :"Thor::Shell::Color.new", :say_status, :yes?
      end

      def self.available?
        return @available if defined? @available
        cmd = 'brew list unox &> /dev/null'
        @available = defined?(Bundler) ? Bundler.clean_system(cmd) : system(cmd)
      end

      def self.ensure!
        return if available?
        cleanup_non_brew_version!
        PackageManager.install_package('eugenmayer/dockersync/unox')
      end

      def self.cleanup_non_brew_version!
        return unless non_brew_version_installed?
        uninstall_cmd = 'sudo rm -f /usr/local/bin/unison-fsmonitor'
        say_status 'warning', LEGACY_UNOX_WARNING, :yellow
        raise(FAILED_TO_REMOVE_LEGACY_UNOX) unless yes?('Uninstall legacy unison-fsmonitor (unox)? (y/N)')
        say_status 'command', uninstall_cmd, :white
        system(uninstall_cmd)
      end

      def self.non_brew_version_installed?
        !available? && File.exist?('/usr/local/bin/unison-fsmonitor')
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
docker-sync-0.5.7 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.6 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.5 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.4 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.3 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.2 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.1 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.0 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.0.pre.rc1 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.0.pre.beta3 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.0.pre.beta2 lib/docker-sync/dependencies/unox.rb
docker-sync-0.5.0.pre.beta1 lib/docker-sync/dependencies/unox.rb