Sha256: 75be052d9e4d647e6158cf8c30e67378cdf5d4b902dc4d17b4ad0029266f38c6

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

require 'fileutils'
require 'canals'
require 'canals/tools/assets'

module Canals
  module Tools
    module Completion
      include FileUtils
      extend self

      def config_path
        File.expand_path(".canals", ENV['HOME'])
      end

      def cmp_file
        File.expand_path('canals.sh', config_path)
      end

      def install_completion
        update_completion
        source = "source " << cmp_file

        rcfile = File.expand_path('.bashrc', ENV['HOME'])
        return false if File.read(rcfile).include? source
        File.open(rcfile, 'a') { |f| f.puts("", "# added by canals gem", "[ -f #{cmp_file} ] && #{source}") }
        true
      end

      def update_completion
        mkdir_p(config_path)
        cp(Assets['canals.sh'], cmp_file)
        update_config
      end

      def update_config
        Canals.config[:completion_version] = Canals::VERSION
        Canals.config.save!
      end

      def completion_installed?
        source = "source " << cmp_file
        rcfile = File.expand_path('.bashrc', ENV['HOME'])
        return false unless File.read(rcfile).include? source
        true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
canals-0.9.1 lib/canals/tools/completion.rb