class TheFox::Timr::Command::LogCommand

By default this Command prints all todays [Tracks](TheFox::Timr::Model::Track).

Man page: [timr-log(1)](../../../../man/timr-log.1.html)

Constants

MAN_PATH

Path to man page.

Public Class Methods

new(argv = Array.new) click to toggle source
# File lib/timr/command/log_command.rb, line 20
def initialize(argv = Array.new)
        super()
        
        @help_opt = false
        
        @from_opt = nil
        @to_opt = nil
        
        @start_date = nil
        @end_date = nil
        
        @start_time = nil
        @end_time = nil
        
        loop_c = 0 # Limit the loop.
        while loop_c < 1024 && argv.length > 0
                loop_c += 1
                arg = argv.shift
                
                case arg
                when '-h', '--help'
                        @help_opt = true
                
                when '-s', '--from'
                        @from_opt = Time.parse(argv.shift)
                when '-e', '--to'
                        @to_opt = Time.parse(argv.shift)
                
                when '-d', '--day'
                        @from_opt, @to_opt = DateTimeHelper.parse_day_argv(argv)
                when '-m', '--month'
                        @from_opt, @to_opt = DateTimeHelper.parse_month_argv(argv)
                when '-y', '--year'
                        @from_opt, @to_opt = DateTimeHelper.parse_year_argv(argv)
                
                when '-a', '--all'
                        @from_opt = Time.parse('1970-01-01 00:00:00')
                        @to_opt   = Time.parse('2099-12-31 23:59:59')
                
                when '--sd', '--start-date'
                        @start_date = Time.parse(argv.shift)
                when '--ed', '--end-date'
                        @end_date = Time.parse(argv.shift)
                when '--st', '--start-time'
                        @start_time = Time.parse(argv.shift)
                when '--et', '--end-time'
                        @end_time = Time.parse(argv.shift)
                
                else
                        raise LogCommandError, "Unknown argument '#{arg}'. See 'timr log --help'."
                end
        end
        
        @daytime_filter = false
        if @start_date && @end_date && @start_time && @end_time
                @from_opt = Time.parse("#{@start_date.strftime('%F')} #{@start_time.strftime('%T')}")
                @to_opt   = Time.parse("#{@end_date.strftime('%F')} #{@end_time.strftime('%T')}")
                
                @daytime_filter = true
        end
        
        today = Date.today
        unless @from_opt
                @from_opt = Time.new(today.year, today.month, today.day, 0, 0, 0)
        end
        unless @to_opt
                @to_opt = Time.new(today.year, today.month, today.day, 23, 59, 59)
        end
        
        @filter_options = {:from => @from_opt, :to => @to_opt}
end

Public Instance Methods

run() click to toggle source

See BasicCommand#run.

# File lib/timr/command/log_command.rb, line 93
def run
        if @help_opt
                help
                return
        end
        
        @timr = Timr.new(@cwd)
        
        print_small_table
end

Private Instance Methods

help() click to toggle source
# File lib/timr/command/log_command.rb, line 252
def help
        puts 'usage: timr log [-s|--from <date_time>] [-e|--to <date_time>]'
        puts '   or: timr log --sd <date> --ed <date> --st <time> --et <time>'
        puts '   or: timr log -d|--day <date>'
        puts '   or: timr log -m|--month <YYYY-MM>'
        puts '   or: timr log -y|--year <YYYY>'
        puts '   or: timr log -a|--all'
        puts '   or: timr log [-h|--help]'
        puts
        puts 'Total Filter'
        puts "    -s, --from '<date_time>'     From Date/Time. Must be in quotes."
        puts '                                 Default: today 00:00:00'
        puts "    -e, --to   '<date_time>'     To Date/Time. Must be in quotes."
        puts '                                 Default: today 23:59:59'
        puts '    -d, --day   <date>           A single day from 00:00 to 23:59.'
        puts '    -m, --month <[YYYY-]MM>      A single month from 01 to 31.'
        puts '    -y, --year  [<YYYY>]         A single year from 01-01 to 12-31.'
        puts '    -a, --all                    Show all Tracks.'
        puts
        puts 'Day Time Filter'
        puts '    --sd, --start-date <date>    Start Date'
        puts '    --ed,   --end-date <date>    End Date'
        puts '    --st, --start-time <time>    Start Time'
        puts '    --et,   --end-time <time>    End Time'
        puts
        puts 'If you would like to filter everything between 09:00 and 17:00 on every day'
        puts 'in the range from Mon 2017-03-06 to Fri 2017-03-10:'
        puts
        puts '    timr log --sd 2017-03-06 --ed 2017-03-10 --st 09:00 --et 17:00'
        puts
        puts 'Columns'
        puts '    START    Track Start Date'
        puts '    END      Track End Date'
        puts '    DUR      Track Duration'
        puts '    TASK     Task ID'
        puts '    TRACK    Track ID and Title.'
        puts
        HelpCommand.print_datetime_help
        puts
end
print_small_table() click to toggle source