star_track 0.1.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 +7 -0
 - data/bin/star_track +11 -0
 - data/lib/star_track/commands.rb +41 -0
 - data/lib/star_track/task_manager/wunderlist.rb +30 -0
 - data/lib/star_track/time_tracker/freckle.rb +47 -0
 - data/lib/star_track.rb +9 -0
 - metadata +105 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: bde9c0c7fb5de6e86c082c2d61fba4a83af16b84
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 278b240e679d260498cb46ea50b8602514896829
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3ee755d26b45145e6909c86546838a0b7789d32b3b680489c1f838850ddf0b1fe58bf99b26293b438d179cb715c906155dded290aa2e3df4f3e50e09e6438cdc
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 230a91319eda8dd29e8227b8b9df1160627ce6a7d7886fce85f117df1e62220fc72be8cffa1c4d876a1477219dddb1b6f92a31e840ea646e1e9179f024471874
         
     | 
    
        data/bin/star_track
    ADDED
    
    
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module StarTrack
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Commands
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.help
         
     | 
| 
      
 4 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 5 
     | 
    
         
            +
                  print "> star_track help   ".colorize(:green)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  puts "- pretty obvious, isn't it?"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  print "> star_track config ".colorize(:green)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  puts "- creates a new .star_track.yaml file at your user's root path (to be implemented)"
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  print "> star_track hh:mm  ".colorize(:green)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  puts "- time tracks hh hours and mm minutes, ex: star_track 8:00"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def self.runner
         
     | 
| 
      
 17 
     | 
    
         
            +
                  task_manager = StarTrack::TaskManager::Wunderlist.new
         
     | 
| 
      
 18 
     | 
    
         
            +
                  time_tracker = StarTrack::TimeTracker::Freckle.new
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  print "Task manager: ".colorize(:blue)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  puts "Wunderlist"
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  print "Time tracker: ".colorize(:blue)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  puts "Freckle"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  puts "=> Loading today tasks...".colorize(:green)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  today_tasks = task_manager.today_tasks
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  puts "==> Here is what you did today:".colorize(:green)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  today_tasks.each { |task| puts "- #{task}" }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  puts "=> Now creating entry on the time tracker...".colorize(:green)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  time_tracker.track(today_tasks)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  puts "==> Entry created successfully!".colorize(:green)
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'wunderlist'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module StarTrack
         
     | 
| 
      
 4 
     | 
    
         
            +
              module TaskManager
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Wunderlist
         
     | 
| 
      
 6 
     | 
    
         
            +
                  attr_reader :client
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 9 
     | 
    
         
            +
                    config = YAML.load_file("#{ENV['HOME']}/.star_track.yaml")["wunderlist"]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    @access_token = config["access_token"]
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @client_id    = config["client_id"]
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @list_name    = config["list_name"]
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    @client = ::Wunderlist::API.new(
         
     | 
| 
      
 16 
     | 
    
         
            +
                      access_token: @access_token,
         
     | 
| 
      
 17 
     | 
    
         
            +
                      client_id:    @client_id
         
     | 
| 
      
 18 
     | 
    
         
            +
                    )
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  def today_tasks
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @list ||= client.list(@list_name)
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                    @list.tasks(completed: true).select do |task|
         
     | 
| 
      
 25 
     | 
    
         
            +
                      Date.parse(task.completed_at) == Date.today
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end.map(&:title)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'freckle'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module StarTrack
         
     | 
| 
      
 4 
     | 
    
         
            +
              module TimeTracker
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Freckle
         
     | 
| 
      
 6 
     | 
    
         
            +
                  attr_reader :client
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 9 
     | 
    
         
            +
                    config = YAML.load_file("#{ENV['HOME']}/.star_track.yaml")["freckle"]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    @token      = config["token"]
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @project_id = config["project_id"].to_i
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                    @client = ::Freckle::Client.new(token: @token)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def track(tasks)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    params = {
         
     | 
| 
      
 19 
     | 
    
         
            +
                      description: tasks.join(" - "),
         
     | 
| 
      
 20 
     | 
    
         
            +
                      project_id:  @project_id,
         
     | 
| 
      
 21 
     | 
    
         
            +
                      minutes:     billable_time,
         
     | 
| 
      
 22 
     | 
    
         
            +
                      date:        Date.today.to_s,
         
     | 
| 
      
 23 
     | 
    
         
            +
                    }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    client.create_entry(params)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  private
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  def billable_time
         
     | 
| 
      
 31 
     | 
    
         
            +
                    validate_given_time!
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    args          = ARGV[0].split(":")
         
     | 
| 
      
 34 
     | 
    
         
            +
                    given_hours   = args[0].to_i
         
     | 
| 
      
 35 
     | 
    
         
            +
                    given_minutes = args[1].to_i
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    (given_hours * 60) + given_minutes
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  def validate_given_time!
         
     | 
| 
      
 41 
     | 
    
         
            +
                    unless ARGV[0]
         
     | 
| 
      
 42 
     | 
    
         
            +
                      abort "[ERROR] Missing billable time parameter!".colorize(:red)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/star_track.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,105 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: star_track
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - victor-am
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-09-12 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: wunderlist-api
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: freckles
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: colorize
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: pry
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 70 
     | 
    
         
            +
            email: 
         
     | 
| 
      
 71 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 72 
     | 
    
         
            +
            - star_track
         
     | 
| 
      
 73 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 74 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 75 
     | 
    
         
            +
            files:
         
     | 
| 
      
 76 
     | 
    
         
            +
            - bin/star_track
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/star_track.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/star_track/commands.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/star_track/task_manager/wunderlist.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/star_track/time_tracker/freckle.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            homepage: https://github.com/victor-am/star_track
         
     | 
| 
      
 82 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 83 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 84 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 85 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 86 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 87 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 89 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 90 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 91 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 92 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 93 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 94 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 95 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 96 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 97 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 98 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 99 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 100 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 101 
     | 
    
         
            +
            rubygems_version: 2.6.11
         
     | 
| 
      
 102 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 103 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 104 
     | 
    
         
            +
            summary: Because manual time tracking is for barbarians
         
     | 
| 
      
 105 
     | 
    
         
            +
            test_files: []
         
     |