Sha256: f8d56404c5f873479e646cf1cf96c0c96cb513a9230ae3d86c2cc52ec9bd6830

Contents?: true

Size: 1.75 KB

Versions: 16

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

require_relative '../name'
require_relative '../types'
require_relative '../values'

module RubyNPM
  module Options
    module Definitions
      class Workspaces
        attr_reader :workspace_name, :workspaces_name

        def initialize
          @workspace_name = Name.new('--workspace')
          @workspaces_name = Name.new('--workspaces')
        end

        def matches?(name)
          workspaces_name == Name.new(name)
        end

        def build(parameters)
          build_workspace_options(parameters) +
            build_workspaces_option(parameters)
        end

        private

        def build_workspace_options(parameters)
          workspaces = parameters[:workspaces]

          return build_no_options if workspaces.nil? || boolean?(workspaces)

          if workspaces.is_a?(Array)
            return workspaces.map do |v|
              build_string_option(workspace_name, v)
            end
          end

          [build_string_option(workspace_name, workspaces)]
        end

        def build_workspaces_option(parameters)
          workspaces = parameters[:workspaces]

          return build_no_options if workspaces.nil? || !boolean?(workspaces)

          [build_boolean_option(workspaces_name, workspaces)]
        end

        def build_no_options
          []
        end

        def build_string_option(name, value)
          Options.types.standard(
            name, Options.values.string(value), separator: ' '
          )
        end

        def build_boolean_option(name, value)
          Options.types.standard(
            name, Options.values.boolean(value), separator: ' '
          )
        end

        def boolean?(value)
          [true, false].include?(value)
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ruby_npm-0.2.0.pre.2 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.2.0.pre.1 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.14 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.13 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.12 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.11 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.10 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.9 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.8 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.7 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.6 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.5 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.4 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.3 lib/ruby_npm/options/definitions/workspaces.rb
ruby_npm-0.1.0.pre.2 lib/ruby_npm/options/definitions/workspaces.rb