Sha256: 58770f30b220b625abecc4a5f53fd06f8494f01909d6432a0c84769fa138f736

Contents?: true

Size: 1.26 KB

Versions: 8

Compression:

Stored size: 1.26 KB

Contents

module MetricFu

  class Churn < Generator

    def emit
      @output = generate_churn_metrics
    end

    def analyze
      if @output.match(/Churning requires a subversion or git repo/)
        @churn = [:churn => {}]
      else
        @churn = YAML::load(@output)
      end
    end

    # ensure hash only has the :churn key
    def to_h
      {:churn => @churn[:churn]}
    end

    private

    def generate_churn_metrics
      ensure_output_is_valid_yaml(churn_code)
    end

    def ensure_output_is_valid_yaml(output)
      yaml_start = output.index("---")
      if yaml_start
        output[yaml_start...output.length]
      else
        nil
      end
    end

    def churn_code
      command = "mf-churn #{build_churn_options}"
      mf_debug "** #{command}"
      `#{command}`
    end

    def build_churn_options
      opts = ["--yaml"]
      churn_options.each do |churn_option, command_flag|
        if has_option?(churn_option)
          opts << "#{command_flag}=#{options[churn_option]}"
        end
      end
      opts.join(" ")
    end

    def has_option?(churn_option)
      options.include?(churn_option)
    end
    def churn_options
      {
        :minimum_churn_count => '--minimum_churn_count',
        :start_date => '--start_date'
      }
    end

  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
metric_fu-4.1.2 lib/metric_fu/metrics/churn/churn.rb
metric_fu-4.1.1 lib/metric_fu/metrics/churn/churn.rb
metric_fu-4.1.0 lib/metric_fu/metrics/churn/churn.rb
metric_fu-4.0.0 lib/metric_fu/metrics/churn/churn.rb
metric_fu-3.0.1 lib/metric_fu/metrics/churn/churn.rb
metric_fu-3.0.0 lib/metric_fu/metrics/churn/churn.rb
metric_fu-2.1.4.pre5 lib/metric_fu/metrics/churn/churn.rb
metric_fu-2.1.4.pre4 lib/metric_fu/metrics/churn/churn.rb