class Fastlane::Actions::HoursAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 51
def self.authors
  ["@RishabhTayal"]
end
available_options() click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 65
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :start_timing,
                            env_name: "HOURS_START_TIMING",
                         description: "Starts recording time. Set this to `true` in `before_all` block",
                            optional: false,
                            is_string: false,
                            default_value: false),
    FastlaneCore::ConfigItem.new(key: :measure_timing,
                            env_name: "HOURS_MEASURE_TIMING",
                         description: "Calculates the total time taken for this lane. Set this to `true` in `after_all` block",
                            optional: false,
                            is_string: false,
                            default_value: false)
  ]
end
description() click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 47
def self.description
  "Record total time saved by fastlane"
end
details() click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 59
def self.details
  [
    "This action will calculate the total time saved for your project and save the save_duration.txt in `fastlane` folder."
  ].join(' ')
end
is_supported?(platform) click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 82
def self.is_supported?(platform)
  # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
  # See: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Platforms.md
  #
  # [:ios, :mac, :android].include?(platform)
  true
end
return_value() click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 55
def self.return_value
  # If your method provides a return value, you can describe here what it does
end
run(params) click to toggle source
# File lib/fastlane/plugin/hours/actions/hours_action.rb, line 5
def self.run(params)
  # UI.message("The hours plugin is working!")
  start_timing = params[:start_timing]
  if start_timing
    puts "Start time: "
    puts Time.now
    started_time = Time.now
    ENV["Start_time"] = started_time.to_s
  end

  measure_timing = params[:measure_timing]
  if measure_timing
    puts "End Time: "
    puts Time.now
    started_time = Time.parse(ENV["Start_time"])
    duration = Time.now - started_time
    existing_duration = 0
    file = File.open("save_duration.txt", "a+")
    existing_duration = file.read.to_i
    File.open("save_duration.txt", 'w+') do |f|
      duration += existing_duration
      f.puts(duration)
    end
    duration_minutes = (duration / 60.0).round
    if duration_minutes == 0
      UI.success "Total #{duration.round} seconds saved till now 🎉"
    elsif duration_minutes >= 60
      # duration_hours = distance_of_time_in_words(duration) # (duration_minutes / 60.0).round
      mm, ss = duration.divmod(60)            #=> [4515, 21]
      hh, mm = mm.divmod(60)           #=> [75, 15]
      if hh == 1
        UI.success "Total #{hh} hour #{mm} minutes  saved till now 🎉"
      else
        UI.success "Total #{hh} hours #{mm} minutes saved till now 🎉"
      end
    else
      UI.success "Total #{duration_minutes} minutes saved till now 🎉"
    end

  end
end