Sha256: 6eafd2cf2dbf78916aba0fa2e849b451eab229d3fb278e35bbe4d6e293a5b637

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Binbundle
  # String helpers
  class Jewel
    # Include version info in output
    attr_writer :include_version

    # Include sudo
    attr_writer :sudo

    # Include --user-install
    attr_writer :user_install

    # Binaries
    attr_reader :bins

    # Gem name
    attr_reader :gem

    ##
    ## Create a new Jewel object
    ##
    ## @param      gem_name  [String] The gem name
    ## @param      bins      [Array|String] The executables
    ## @param      version   [String] The semantic version
    ##
    ## @return     [Jewel] new jewel object
    ##
    def initialize(gem_name = '', bins = [], version = nil)
      @gem = gem_name
      @bins = if bins.is_a?(String)
                bins.split(/ *, */)
              else
                bins
              end
      @version = version
      @include_version = true
    end

    ##
    ## Output Jewel as command
    ##
    ## @return     [String] Command representation of the object.
    ##
    def to_s
      version = @include_version && @version ? " -v '#{@version}'" : ''
      if @sudo
        "sudo gem install #{@gem}#{version}"
      elsif @user_install
        "gem install --user-install #{@gem}#{version}"
      else
        "gem install #{@gem}#{version}"
      end
    end

    ##
    ## Output a Binfile-ready version of the Jewel
    ##
    ## @return     [String] Binfile string
    ##
    def gem_command
      ver = @include_version ? " -v '#{@version}'" : ''
      ui = @user_install ? '--user-install ' : ''
      sudo = @sudo ? 'sudo ' : ''
      "# Executables: #{@bins.join(', ')}\n#{to_s}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
binbundle-1.0.10 lib/binbundle/jewel.rb