toggl-worktime 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +53 -0
- data/README.md +41 -0
- data/exe/toggl-worktime +23 -12
- data/lib/toggl/worktime.rb +1 -0
- data/lib/toggl/worktime/config.rb +49 -0
- data/lib/toggl/worktime/driver.rb +36 -16
- data/lib/toggl/worktime/merger.rb +8 -7
- data/lib/toggl/worktime/time.rb +2 -2
- data/lib/toggl/worktime/version.rb +1 -1
- data/toggl-worktime.gemspec +5 -6
- metadata +30 -28
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f726845f28a920e1348ee0fd4fc2b136a6394b8f4007ea8498095b6eddc39e5a
         | 
| 4 | 
            +
              data.tar.gz: e820f632627f8b8b137008cb48b4a9678ec14682aef3256750ccb8367a4a7d65
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4352863b125a2315ded1ec35702f0a04976fd2a3957ad0fd16a487251a98869f653de2fa01931a81e77c8a05950fafc4e56fe2cde32745b3d673d0ae430f91ce
         | 
| 7 | 
            +
              data.tar.gz: d890b93dc1664bf686c5a36cbc271b24a5f7b95fc66b02a4a9bfa40cfb35d301e01feb89eb46e4fd8d9462d91c4daf89a904a31e3ab8343ba21b3f6a8d290f8d
         | 
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            # Change Log
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## [v0.3.0](https://github.com/limitusus/toggl-worktime/tree/v0.3.0) (2018-08-01)
         | 
| 4 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.2.0...v0.3.0)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            **Closed issues:**
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            - ignore vacation tag [\#3](https://github.com/limitusus/toggl-worktime/issues/3)
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            **Merged pull requests:**
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            - Config YAML [\#5](https://github.com/limitusus/toggl-worktime/pull/5) ([limitusus](https://github.com/limitusus))
         | 
| 13 | 
            +
            - Specify year [\#4](https://github.com/limitusus/toggl-worktime/pull/4) ([limitusus](https://github.com/limitusus))
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ## [v0.2.0](https://github.com/limitusus/toggl-worktime/tree/v0.2.0) (2018-04-02)
         | 
| 16 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.8...v0.2.0)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            **Merged pull requests:**
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            - Remove const [\#2](https://github.com/limitusus/toggl-worktime/pull/2) ([limitusus](https://github.com/limitusus))
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ## [v0.1.8](https://github.com/limitusus/toggl-worktime/tree/v0.1.8) (2018-04-01)
         | 
| 23 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.7...v0.1.8)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            **Merged pull requests:**
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            - Export work\_time from driver [\#1](https://github.com/limitusus/toggl-worktime/pull/1) ([limitusus](https://github.com/limitusus))
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ## [v0.1.7](https://github.com/limitusus/toggl-worktime/tree/v0.1.7) (2017-09-19)
         | 
| 30 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.6...v0.1.7)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            ## [v0.1.6](https://github.com/limitusus/toggl-worktime/tree/v0.1.6) (2017-09-19)
         | 
| 33 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.5...v0.1.6)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ## [v0.1.5](https://github.com/limitusus/toggl-worktime/tree/v0.1.5) (2017-08-15)
         | 
| 36 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.4...v0.1.5)
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            ## [v0.1.4](https://github.com/limitusus/toggl-worktime/tree/v0.1.4) (2017-07-07)
         | 
| 39 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.3...v0.1.4)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ## [v0.1.3](https://github.com/limitusus/toggl-worktime/tree/v0.1.3) (2017-07-07)
         | 
| 42 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.2...v0.1.3)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            ## [v0.1.2](https://github.com/limitusus/toggl-worktime/tree/v0.1.2) (2017-07-05)
         | 
| 45 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.1...v0.1.2)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            ## [v0.1.1](https://github.com/limitusus/toggl-worktime/tree/v0.1.1) (2017-07-05)
         | 
| 48 | 
            +
            [Full Changelog](https://github.com/limitusus/toggl-worktime/compare/v0.1.0...v0.1.1)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            ## [v0.1.0](https://github.com/limitusus/toggl-worktime/tree/v0.1.0) (2017-07-05)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
             | 
| 53 | 
            +
            \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
         | 
    
        data/README.md
    CHANGED
    
    | @@ -13,6 +13,17 @@ worktime | |
| 13 13 | 
             
            2017-06-12 13:29:09 - 2017-06-12 19:23:23
         | 
| 14 14 | 
             
            ```
         | 
| 15 15 |  | 
| 16 | 
            +
            or you can specify year (default is "this" year)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ```console
         | 
| 19 | 
            +
            $ toggl-worktime 2017 6 12
         | 
| 20 | 
            +
            Tomoya Kabe
         | 
| 21 | 
            +
            worktime
         | 
| 22 | 
            +
            2017-06-12 09:54:34 - 2017-06-12 12:40:45
         | 
| 23 | 
            +
            2017-06-12 13:29:09 - 2017-06-12 19:23:23
         | 
| 24 | 
            +
            ```
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 16 27 | 
             
            Weekend
         | 
| 17 28 |  | 
| 18 29 | 
             
            ```console
         | 
| @@ -50,6 +61,36 @@ abcdef0123456789 | |
| 50 61 |  | 
| 51 62 | 
             
            You can get your API token from Toggl at your profile settings page.
         | 
| 52 63 |  | 
| 64 | 
            +
            NOTE: as of togglv8 v1.2.1, `.toggl` file **MUST NOT** end with a newline (`\010` or LF).
         | 
| 65 | 
            +
            The recommended way to create the file is `echo -n 'YOUR_TOGGL_API_TOKEN' > ~/.toggl`.
         | 
| 66 | 
            +
            This issue [will be fixed in the next togglv8 release](https://github.com/kanet77/togglv8/pull/21).
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            ### Configuration
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            Place configuration file in `~/.toggl_worktime`.
         | 
| 71 | 
            +
            Or you can specify your favorite path with `-c CONFIG` option.
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            ```
         | 
| 74 | 
            +
            # -*- yaml -*-
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            # working time interval within <working_interval_min> minutes is ignored
         | 
| 77 | 
            +
            working_interval_min: 10
         | 
| 78 | 
            +
            # Split the day at <day_begin_hour> o'clock
         | 
| 79 | 
            +
            day_begin_hour: 6
         | 
| 80 | 
            +
            # Timezone
         | 
| 81 | 
            +
            timezone: Asia/Tokyo
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            # Time entries which match the condition below will not be counted as working time
         | 
| 84 | 
            +
            # Multiple conditions can be specified as an array in top level,
         | 
| 85 | 
            +
            # multiple keys (only "tags" for now) can be specified as hash keys in a condition,
         | 
| 86 | 
            +
            # and multiple values can be specifeid as an array.
         | 
| 87 | 
            +
            # Array conditions will be treated as "OR"
         | 
| 88 | 
            +
            # Hash conditions will be treated as "AND"
         | 
| 89 | 
            +
            ignore_conditions:
         | 
| 90 | 
            +
              - tags:
         | 
| 91 | 
            +
                  - vacation
         | 
| 92 | 
            +
            ```
         | 
| 93 | 
            +
             | 
| 53 94 | 
             
            ### Just run
         | 
| 54 95 |  | 
| 55 96 | 
             
            ```console
         | 
    
        data/exe/toggl-worktime
    CHANGED
    
    | @@ -3,22 +3,33 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            $LOAD_PATH << File.expand_path("#{File.dirname __FILE__}/../lib")
         | 
| 5 5 |  | 
| 6 | 
            +
            require 'optparse'
         | 
| 6 7 | 
             
            require 'rubygems'
         | 
| 7 8 | 
             
            require 'toggl/worktime'
         | 
| 8 9 |  | 
| 9 10 | 
             
            Version = Toggl::Worktime::VERSION
         | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 11 | 
            +
            config_file = "#{ENV['HOME']}/.toggl_worktime"
         | 
| 12 | 
            +
            debug = false
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            opt = OptionParser.new
         | 
| 15 | 
            +
            opt.on('-c CONFIG', '--config CONFIG') { |v| config_file = v }
         | 
| 16 | 
            +
            opt.on('--debug') { |v| debug = v }
         | 
| 17 | 
            +
            opt.parse!(ARGV)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            config = Toggl::Worktime::Config.new(path: config_file)
         | 
| 20 | 
            +
            driver = Toggl::Worktime::Driver.new(config: config)
         | 
| 21 | 
            +
            p config if debug
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            if ARGV.size == 3
         | 
| 24 | 
            +
              year, month, day = *ARGV.map(&:to_i)
         | 
| 25 | 
            +
            elsif ARGV.size == 2
         | 
| 26 | 
            +
              year = Time.now.year
         | 
| 27 | 
            +
              month, day = *ARGV.map(&:to_i)
         | 
| 28 | 
            +
            else
         | 
| 29 | 
            +
              raise ArgumentError, 'Usage: toggl-worktime [YEAR] MONTH DAY'
         | 
| 30 | 
            +
            end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            driver.merge!(year, month, day)
         | 
| 22 33 | 
             
            user = driver.me
         | 
| 23 34 |  | 
| 24 35 | 
             
            puts user['fullname']
         | 
    
        data/lib/toggl/worktime.rb
    CHANGED
    
    
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'yaml'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Toggl
         | 
| 6 | 
            +
              module Worktime
         | 
| 7 | 
            +
                # Config for Toggl::Worktime
         | 
| 8 | 
            +
                class Config
         | 
| 9 | 
            +
                  attr_accessor :foo
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  ATTRS = %i[
         | 
| 12 | 
            +
                    working_interval_min
         | 
| 13 | 
            +
                    day_begin_hour
         | 
| 14 | 
            +
                    timezone
         | 
| 15 | 
            +
                    ignore_conditions
         | 
| 16 | 
            +
                  ].freeze
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  ATTR_DEFAULTS = {
         | 
| 19 | 
            +
                    working_interval_min: 10,
         | 
| 20 | 
            +
                    day_begin_hour: 6,
         | 
| 21 | 
            +
                    timezone: 'Asia/Tokyo',
         | 
| 22 | 
            +
                    ignore_conditions: []
         | 
| 23 | 
            +
                  }.freeze
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  ATTRS.each do |attr|
         | 
| 26 | 
            +
                    attr_accessor attr
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def initialize(args)
         | 
| 30 | 
            +
                    c = self.class.load_config(args[:path])
         | 
| 31 | 
            +
                    attr_set(c)
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  class << self
         | 
| 35 | 
            +
                    def load_config(path)
         | 
| 36 | 
            +
                      YAML.safe_load(File.open(path).read).transform_keys(&:to_sym)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  private
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  def attr_set(hash)
         | 
| 43 | 
            +
                    ATTRS.each do |k|
         | 
| 44 | 
            +
                      send((k.to_s + '=').to_sym, hash.key?(k) ? hash[k] : ATTR_DEFAULTS[k])
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
            end
         | 
| @@ -4,31 +4,52 @@ module Toggl | |
| 4 4 | 
             
              module Worktime
         | 
| 5 5 | 
             
                # Toggle API driver
         | 
| 6 6 | 
             
                class Driver
         | 
| 7 | 
            +
                  ONE_DAY_SECONDS = 86_400
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
                  attr_reader :toggl
         | 
| 8 10 | 
             
                  attr_reader :work_time
         | 
| 9 11 |  | 
| 10 | 
            -
                  def initialize( | 
| 12 | 
            +
                  def initialize(config:)
         | 
| 11 13 | 
             
                    @toggl = TogglV8::API.new
         | 
| 12 | 
            -
                    @ | 
| 14 | 
            +
                    @config = config
         | 
| 13 15 | 
             
                    @merger = nil
         | 
| 14 16 | 
             
                    @work_time = nil
         | 
| 17 | 
            +
                    @zone_offset = Toggl::Worktime::Time.zone_offset(@config.timezone)
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def time_entries(year, month, day)
         | 
| 21 | 
            +
                    beginning_day = ::Time.new(
         | 
| 22 | 
            +
                      year, month, day, @config.day_begin_hour, 0, 0, @zone_offset
         | 
| 23 | 
            +
                    )
         | 
| 24 | 
            +
                    ending_day = beginning_day + ONE_DAY_SECONDS
         | 
| 25 | 
            +
                    start_iso = beginning_day.strftime('%FT%T%:z')
         | 
| 26 | 
            +
                    end_iso = ending_day.strftime('%FT%T%:z')
         | 
| 27 | 
            +
                    toggl.get_time_entries(start_date: start_iso, end_date: end_iso)
         | 
| 15 28 | 
             
                  end
         | 
| 16 29 |  | 
| 17 | 
            -
                   | 
| 18 | 
            -
             | 
| 19 | 
            -
                     | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 30 | 
            +
                  # time_entries filter with @config.ignore_conditions
         | 
| 31 | 
            +
                  def filter_entries(entries)
         | 
| 32 | 
            +
                    pass_l = lambda { |entry|
         | 
| 33 | 
            +
                      @config.ignore_conditions.none? do |cond|
         | 
| 34 | 
            +
                        cond.keys.all? do |key|
         | 
| 35 | 
            +
                          case key
         | 
| 36 | 
            +
                          when 'tags'
         | 
| 37 | 
            +
                            entry['tags']&.any? { |t| cond[key].include?(t) }
         | 
| 38 | 
            +
                          end
         | 
| 39 | 
            +
                        end
         | 
| 40 | 
            +
                      end
         | 
| 41 | 
            +
                    }
         | 
| 42 | 
            +
                    entries.select { |e| pass_l.call(e) }
         | 
| 23 43 | 
             
                  end
         | 
| 24 44 |  | 
| 25 45 | 
             
                  def me
         | 
| 26 46 | 
             
                    @toggl.me(true)
         | 
| 27 47 | 
             
                  end
         | 
| 28 48 |  | 
| 29 | 
            -
                  def merge!(month, day | 
| 30 | 
            -
                    time_entries = time_entries(month, day | 
| 31 | 
            -
                     | 
| 49 | 
            +
                  def merge!(year, month, day)
         | 
| 50 | 
            +
                    time_entries = time_entries(year, month, day)
         | 
| 51 | 
            +
                    time_entries = filter_entries(time_entries)
         | 
| 52 | 
            +
                    @merger = Toggl::Worktime::Merger.new(time_entries, @config)
         | 
| 32 53 | 
             
                    @work_time = @merger.merge
         | 
| 33 54 | 
             
                  end
         | 
| 34 55 |  | 
| @@ -40,17 +61,16 @@ module Toggl | |
| 40 61 | 
             
                    end
         | 
| 41 62 | 
             
                  end
         | 
| 42 63 |  | 
| 43 | 
            -
                  def time_expr( | 
| 44 | 
            -
                     | 
| 64 | 
            +
                  def time_expr(time)
         | 
| 65 | 
            +
                    time ? time.getlocal(@zone_offset).strftime('%F %T') : 'nil'
         | 
| 45 66 | 
             
                  end
         | 
| 46 67 |  | 
| 47 68 | 
             
                  def total_time
         | 
| 48 | 
            -
                     | 
| 49 | 
            -
                    total_seconds = (time * 86400).to_i
         | 
| 69 | 
            +
                    total_seconds = @merger.total_time.to_i
         | 
| 50 70 | 
             
                    hours = total_seconds / (60 * 60)
         | 
| 51 71 | 
             
                    minutes = (total_seconds - (hours * 60 * 60)) / 60
         | 
| 52 72 | 
             
                    seconds = total_seconds % 60
         | 
| 53 | 
            -
                    format( | 
| 73 | 
            +
                    format('%02d:%02d:%02d', hours, minutes, seconds)
         | 
| 54 74 | 
             
                  end
         | 
| 55 75 | 
             
                end
         | 
| 56 76 | 
             
              end
         | 
| @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'time'
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module Toggl
         | 
| 4 6 | 
             
              module Worktime
         | 
| 5 7 | 
             
                # Time-entries merger
         | 
| @@ -8,10 +10,9 @@ module Toggl | |
| 8 10 |  | 
| 9 11 | 
             
                  ONE_DAY_MINUTES = 24 * 60
         | 
| 10 12 |  | 
| 11 | 
            -
                  def initialize(time_entries,  | 
| 13 | 
            +
                  def initialize(time_entries, config)
         | 
| 12 14 | 
             
                    @time_entries = time_entries
         | 
| 13 | 
            -
                    @ | 
| 14 | 
            -
                    @max_working_interval = max_working_interval
         | 
| 15 | 
            +
                    @config = config
         | 
| 15 16 | 
             
                    @current_start = nil
         | 
| 16 17 | 
             
                    @current_stop = nil
         | 
| 17 18 | 
             
                    @continuing = true
         | 
| @@ -35,7 +36,7 @@ module Toggl | |
| 35 36 | 
             
                  end
         | 
| 36 37 |  | 
| 37 38 | 
             
                  def time_entries_each
         | 
| 38 | 
            -
                    zone_offset = Toggl::Worktime::Time.zone_offset(@timezone)
         | 
| 39 | 
            +
                    zone_offset = Toggl::Worktime::Time.zone_offset(@config.timezone)
         | 
| 39 40 | 
             
                    @time_entries.each do |te|
         | 
| 40 41 | 
             
                      start = parse_date(te['start'], zone_offset)
         | 
| 41 42 | 
             
                      stop = parse_date(te['stop'], zone_offset)
         | 
| @@ -43,7 +44,7 @@ module Toggl | |
| 43 44 | 
             
                      @current_start = start if @current_start.nil?
         | 
| 44 45 | 
             
                      @current_stop = stop if @current_stop.nil?
         | 
| 45 46 | 
             
                      if start.nil? || stop.nil?
         | 
| 46 | 
            -
                        warn  | 
| 47 | 
            +
                        warn 'start or stop time is nil: total time may be incomplete'
         | 
| 47 48 | 
             
                      else
         | 
| 48 49 | 
             
                        @total_time += stop - start
         | 
| 49 50 | 
             
                      end
         | 
| @@ -53,13 +54,13 @@ module Toggl | |
| 53 54 |  | 
| 54 55 | 
             
                  def parse_date(date, zone_offset)
         | 
| 55 56 | 
             
                    return nil if date.nil?
         | 
| 56 | 
            -
                     | 
| 57 | 
            +
                    ::Time.parse(date).getlocal(zone_offset)
         | 
| 57 58 | 
             
                  end
         | 
| 58 59 |  | 
| 59 60 | 
             
                  def continuing(start)
         | 
| 60 61 | 
             
                    return true if @current_stop.nil?
         | 
| 61 62 | 
             
                    interval = (start - @current_stop) * ONE_DAY_MINUTES
         | 
| 62 | 
            -
                    @continuing = interval < @ | 
| 63 | 
            +
                    @continuing = interval < @config.working_interval_min
         | 
| 63 64 | 
             
                  end
         | 
| 64 65 | 
             
                end
         | 
| 65 66 | 
             
              end
         | 
    
        data/lib/toggl/worktime/time.rb
    CHANGED
    
    | @@ -4,11 +4,11 @@ module Toggl | |
| 4 4 | 
             
              module Worktime
         | 
| 5 5 | 
             
                # Timezone
         | 
| 6 6 | 
             
                module Time
         | 
| 7 | 
            -
                  #  | 
| 7 | 
            +
                  # Seconds
         | 
| 8 8 | 
             
                  def self.zone_offset(timezone)
         | 
| 9 9 | 
             
                    tz = ENV['TZ']
         | 
| 10 10 | 
             
                    ENV['TZ'] = timezone
         | 
| 11 | 
            -
                    offset =  | 
| 11 | 
            +
                    offset = ::Time.now.utc_offset
         | 
| 12 12 | 
             
                    ENV['TZ'] = tz
         | 
| 13 13 | 
             
                    offset
         | 
| 14 14 | 
             
                  end
         | 
    
        data/toggl-worktime.gemspec
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 | 
            -
            # coding: utf-8
         | 
| 2 1 | 
             
            # frozen_string_literal: true
         | 
| 3 2 |  | 
| 4 | 
            -
            lib = File.expand_path(' | 
| 3 | 
            +
            lib = File.expand_path('lib', __dir__)
         | 
| 5 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 6 5 | 
             
            require 'toggl/worktime/version'
         | 
| 7 6 |  | 
| @@ -23,12 +22,12 @@ Gem::Specification.new do |spec| | |
| 23 22 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 24 23 | 
             
              spec.require_paths = ['lib']
         | 
| 25 24 |  | 
| 26 | 
            -
              spec.add_dependency 'togglv8'
         | 
| 27 25 | 
             
              spec.add_dependency 'awesome_print'
         | 
| 28 | 
            -
              spec. | 
| 29 | 
            -
              spec.add_development_dependency 'rb-readline'
         | 
| 30 | 
            -
              spec.add_development_dependency 'rubocop'
         | 
| 26 | 
            +
              spec.add_dependency 'togglv8'
         | 
| 31 27 | 
             
              spec.add_development_dependency 'bundler', '~> 1.15'
         | 
| 28 | 
            +
              spec.add_development_dependency 'pry'
         | 
| 32 29 | 
             
              spec.add_development_dependency 'rake', '~> 10.0'
         | 
| 30 | 
            +
              spec.add_development_dependency 'rb-readline'
         | 
| 33 31 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 32 | 
            +
              spec.add_development_dependency 'rubocop'
         | 
| 34 33 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,17 +1,17 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: toggl-worktime
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tomoya KABE
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018- | 
| 11 | 
            +
            date: 2018-08-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: awesome_print
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| @@ -25,7 +25,7 @@ dependencies: | |
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: togglv8
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ">="
         | 
| @@ -39,21 +39,21 @@ dependencies: | |
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 42 | 
            +
              name: bundler
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 45 | 
            +
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '1.15'
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 52 | 
            +
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '1.15'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: pry
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - ">="
         | 
| @@ -67,61 +67,61 @@ dependencies: | |
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name:  | 
| 70 | 
            +
              name: rake
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - - " | 
| 73 | 
            +
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '0'
         | 
| 75 | 
            +
                    version: '10.0'
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - - " | 
| 80 | 
            +
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '0'
         | 
| 82 | 
            +
                    version: '10.0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 84 | 
            +
              name: rb-readline
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - - " | 
| 87 | 
            +
                - - ">="
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: ' | 
| 89 | 
            +
                    version: '0'
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 | 
            -
                - - " | 
| 94 | 
            +
                - - ">="
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: ' | 
| 96 | 
            +
                    version: '0'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 98 | 
            +
              name: rspec
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: ' | 
| 103 | 
            +
                    version: '3.0'
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: ' | 
| 110 | 
            +
                    version: '3.0'
         | 
| 111 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name:  | 
| 112 | 
            +
              name: rubocop
         | 
| 113 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 114 | 
             
                requirements:
         | 
| 115 | 
            -
                - - " | 
| 115 | 
            +
                - - ">="
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: ' | 
| 117 | 
            +
                    version: '0'
         | 
| 118 118 | 
             
              type: :development
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 | 
            -
                - - " | 
| 122 | 
            +
                - - ">="
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: ' | 
| 124 | 
            +
                    version: '0'
         | 
| 125 125 | 
             
            description: Summarise Toggl Time Entries
         | 
| 126 126 | 
             
            email:
         | 
| 127 127 | 
             
            - limit.usus@gmail.com
         | 
| @@ -134,6 +134,7 @@ files: | |
| 134 134 | 
             
            - ".rspec"
         | 
| 135 135 | 
             
            - ".rubocop.yml"
         | 
| 136 136 | 
             
            - ".travis.yml"
         | 
| 137 | 
            +
            - CHANGELOG.md
         | 
| 137 138 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 138 139 | 
             
            - Gemfile
         | 
| 139 140 | 
             
            - LICENSE.txt
         | 
| @@ -143,6 +144,7 @@ files: | |
| 143 144 | 
             
            - bin/setup
         | 
| 144 145 | 
             
            - exe/toggl-worktime
         | 
| 145 146 | 
             
            - lib/toggl/worktime.rb
         | 
| 147 | 
            +
            - lib/toggl/worktime/config.rb
         | 
| 146 148 | 
             
            - lib/toggl/worktime/driver.rb
         | 
| 147 149 | 
             
            - lib/toggl/worktime/merger.rb
         | 
| 148 150 | 
             
            - lib/toggl/worktime/time.rb
         |