rrline 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d9fc098e54d70e863d9b9ffc14b3e9dfdb4f88dc
4
+ data.tar.gz: 4809e2b695484a2de42ff313b67f4000928a5b64
5
+ SHA512:
6
+ metadata.gz: 6cbb3b66d537e83f8d6903684183a359c72840d80a205ad2780a48a54879e0867cd00a2605537fbb586c09d40526bd044ea1ce306d9c679d564e36ec06106eec
7
+ data.tar.gz: 45064fc31f82bd823c5b88046233ad195dcd599b8a4759a9f6d597936e9664f83e93c212d715ec0d03b08d69604cfe90c7dc6cebeeb1eda691af440e9e35b2b9
data/README.rdoc ADDED
@@ -0,0 +1,42 @@
1
+ = Runrun.it Command Line Tool
2
+
3
+ == Description
4
+
5
+ This is a very simple tool to make the process of list and hit play on your tasks easier.
6
+
7
+ == Installation
8
+
9
+ Install as a RubyGem:
10
+
11
+ $ gem install rrline
12
+
13
+ And install dependencies:
14
+
15
+ $ bundle
16
+
17
+ == Usage
18
+
19
+ === Basics
20
+
21
+ To use rr, first, store your API keys: (you can find them on you Profile page)
22
+
23
+ rr -k <app-key>,<user-token>
24
+
25
+ To list your fist 10 tasks:
26
+
27
+ rr -l
28
+
29
+ To hit play on your first task just:
30
+
31
+ rr -p
32
+
33
+ To start working in another task:
34
+
35
+ rr -p <task-id>
36
+
37
+
38
+ If rr command is not available across the folders, you can add the executable to the shell's lookup path:
39
+
40
+ export PATH=/Users/<your user>/<folder where downloaded code is>/rr/bin:$PATH
41
+
42
+
data/bin/rr ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/rr"
4
+
5
+ begin
6
+ RR::Application.new(ARGV).run
7
+ rescue Errno::ENOENT => err
8
+ abort "rr: #{err.message}"
9
+ end
data/data/keys.yaml ADDED
@@ -0,0 +1,3 @@
1
+ ---
2
+ - 51025d11e0c231dfc8689c7cc486d53d
3
+ - NjGuaZ7O2ItAMLTWjRG
@@ -0,0 +1,129 @@
1
+ module RR
2
+ class Application
3
+
4
+ def initialize(argv)
5
+ @working_dir = File.dirname(__FILE__)
6
+ @params = parse_options(argv)
7
+ @filename = "#{@working_dir}/../../data/keys.yaml"
8
+ @tasks_url = 'https://secure.runrun.it/api/v1.0/tasks'
9
+ HTTPI.adapter = :curb
10
+ HTTPI.log = false
11
+ end
12
+
13
+ def run
14
+ case @params.command
15
+ when :help
16
+ puts "\n##### This is a Runrun.it Command Line Tool #####\n\n
17
+ -k\tStore your keys: -k <app-key>,<user-token>\n
18
+ -l\tList tasks opened for you\n
19
+ -p\tStart working on a task. Default the top priority. You can specify task_id for other tasks: rr -p <task_id>"
20
+ when :keys
21
+ Dir.mkdir "#{@working_dir}/../../data"
22
+ File.open(@filename, 'w') { |file| file.write(YAML::dump(@params.keys)) }
23
+ puts "Storing keys..."
24
+ when :list
25
+ headers = get_headers
26
+ query = {:responsible_id => 'me', :sort => 'queue_position', :sortDir => 'asc', :page => 1, :limit => 10}
27
+
28
+ result = make_request(@tasks_url, query, headers, :get)
29
+
30
+ result.each do |task|
31
+ print "#%6s - #{task['title']}" % task['id']
32
+ if task['is_working_on']
33
+ print Rainbow(" [Working]").green
34
+ else
35
+ print Rainbow(" [Paused!]").red if task['queue_position'] == 1
36
+ end
37
+ print "\n"
38
+ end
39
+ when :play
40
+ puts "Playing..."
41
+ if @params.task
42
+ task_to_play = @params.task
43
+ else
44
+ task_to_play = get_first_task_id
45
+ end
46
+ play(task_to_play)
47
+ end
48
+
49
+ puts "\nDone!"
50
+ end
51
+
52
+ def parse_options(argv)
53
+ options = OpenStruct.new
54
+
55
+ OptionParser.new do |opts|
56
+
57
+ opts.on('-h','Shows help screen') do
58
+ options.command = :help
59
+ end
60
+
61
+ opts.on('-k', '--keys App-key, User-token', Array, 'Save keys') do |keys|
62
+ options.command = :keys
63
+ options.keys = keys
64
+ end
65
+
66
+ opts.on('-p', '--play [TASK_ID]', Integer, 'Play task') do |task|
67
+ options.command = :play
68
+ options.task = task
69
+ end
70
+
71
+ opts.on('-l','List tasks...') do
72
+ options.command = :list
73
+ end
74
+
75
+ end.parse!
76
+
77
+ options
78
+ end
79
+
80
+ def get_stored_keys
81
+ if File.exist?(@filename)
82
+ keys = YAML::load(File.open(@filename))
83
+ return {:app_key => keys[0], :user_token => keys[1]}
84
+ else
85
+ puts "ERROR: You need to store your credentials first. Use rr -k <app-key>,<user-token>"
86
+ exit
87
+ end
88
+ end
89
+
90
+ def make_request(url, query_body, headers, type)
91
+ request = HTTPI::Request.new
92
+ request.url = url
93
+ request.query = query_body if type == :get
94
+ request.body = query_body if type == :post
95
+ request.headers = headers
96
+
97
+ begin
98
+ buffer = HTTPI.send(type, request)
99
+ rescue => error
100
+ puts "ERROR: Trying to connect to Runrun.it API\n"
101
+ puts error
102
+ exit
103
+ end
104
+
105
+ return JSON.parse(buffer.body) unless buffer.body.strip.empty?
106
+ end
107
+
108
+ def get_first_task_id
109
+ headers = get_headers
110
+ query = {:responsible_id => 'me', :sort => 'queue_position', :sortDir => 'asc', :page => 1, :limit => 1}
111
+
112
+ result = get_request(@tasks_url, query, headers)
113
+ return result.first['id']
114
+ end
115
+
116
+ def play(task_id)
117
+ headers = get_headers
118
+ play_url = @tasks_url + "/#{task_id}/play"
119
+ result = make_request(play_url, nil, headers, :post)
120
+ end
121
+
122
+ def get_headers
123
+ keys = get_stored_keys
124
+ headers = {:content_type => :json, :accept => :json, :'app-key' => "#{keys[:app_key]}", :'user-token' => "#{keys[:user_token]}"}
125
+ headers
126
+ end
127
+
128
+ end
129
+ end
data/lib/rr/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module RR
2
+ VERSION = "0.0.1"
3
+ end
data/lib/rr.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "optparse"
2
+ require "ostruct"
3
+ require "open3"
4
+ require "yaml"
5
+ require "httpi"
6
+ require 'json'
7
+ require 'pp'
8
+ require 'rainbow'
9
+ require_relative "rr/application"
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rrline
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Fransky
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: iVery simple application for Runrun.it Command Line Tool
14
+ email:
15
+ - franklin@runrun.it
16
+ executables:
17
+ - rr
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/rr
22
+ - lib/rr/application.rb
23
+ - lib/rr/version.rb
24
+ - lib/rr.rb
25
+ - data/keys.yaml
26
+ - README.rdoc
27
+ homepage: http://runrun.it
28
+ licenses: []
29
+ metadata: {}
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 1.9.2
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.3.6
44
+ requirements: []
45
+ rubyforge_project: rrline
46
+ rubygems_version: 2.1.11
47
+ signing_key:
48
+ specification_version: 4
49
+ summary: Simple application for RR Command Line Tool
50
+ test_files: []
51
+ has_rdoc: