idonethis-cli 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/adapters/cli.rb +19 -9
- data/lib/adapters/views/cli.rb +16 -0
- data/lib/idonethis/cli/version.rb +1 -1
- data/lib/idonethis/index.rb +13 -1
- data/lib/idonethis/use_cases/teams.rb +49 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0ab8a523680ec339432ce597c050ff9aabf9d39
|
4
|
+
data.tar.gz: 3fe8cc22e494bb5cba8ad803370586f8aaa0a621
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: def9b1051c054f31a38e440c21cfba144a5488c0ecfb45575cf43881b632b9adfd28f0c4e8c1a3baf98be5e1c288683d5cd6542caf9a090dcea71284678f5907
|
7
|
+
data.tar.gz: 59ea502d7d1b014b06cab4c111e1d62d3919a0bba9dc1b3aa6a287f66cb6598e4bc52bb317a61ae0ec2a1be91cfd4caa8b439598a192d7d3318ad91443a41b63
|
data/README.md
CHANGED
@@ -7,6 +7,9 @@ A CLI for [idonethis](https://idonethis.com/).
|
|
7
7
|
```
|
8
8
|
$ gem install idonethis-cli
|
9
9
|
```
|
10
|
+
|
11
|
+
Due to [this defect](https://github.com/bundler/bundler/issues/1096), you may have to install rspec 3 manually. (Bundler tries to install development dependencies too.)
|
12
|
+
|
10
13
|
## Usage
|
11
14
|
|
12
15
|
### Configuration
|
data/lib/adapters/cli.rb
CHANGED
@@ -21,15 +21,7 @@ module Idonethis::Adapters
|
|
21
21
|
|
22
22
|
log.call "args: #{args}, command: #{command}, rest: #{rest}"
|
23
23
|
|
24
|
-
|
25
|
-
list: Idonethis::UseCases::List.method(:apply),
|
26
|
-
new: Idonethis::UseCases::New.method(:apply),
|
27
|
-
config: Idonethis::UseCases::Config.method(:apply),
|
28
|
-
git: Idonethis::UseCases::Git.method(:apply),
|
29
|
-
help: ->(credential, args) { puts "TODO: implement help" }
|
30
|
-
}
|
31
|
-
|
32
|
-
use_case = use_cases[command.to_sym]
|
24
|
+
use_case = choose command.to_sym, rest
|
33
25
|
|
34
26
|
unless use_case
|
35
27
|
puts "No command <#{command.to_sym}> found"
|
@@ -41,6 +33,24 @@ module Idonethis::Adapters
|
|
41
33
|
|
42
34
|
private
|
43
35
|
|
36
|
+
def choose(command, opts)
|
37
|
+
use_cases = {
|
38
|
+
list: Idonethis::UseCases::List.method(:apply),
|
39
|
+
new: Idonethis::UseCases::New.method(:apply),
|
40
|
+
config: Idonethis::UseCases::Config.method(:apply),
|
41
|
+
git: Idonethis::UseCases::Git.method(:apply),
|
42
|
+
help: ->(credential, args) { puts "TODO: implement help" }
|
43
|
+
}
|
44
|
+
|
45
|
+
if command == :list && opts.include?("teams")
|
46
|
+
return ->(credential, args) {
|
47
|
+
Idonethis::UseCases::Teams.apply(credential, args.merge(view: Idonethis::Adapters::Views::Cli::Teams.method(:apply)))
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
use_case = use_cases[command]
|
52
|
+
end
|
53
|
+
|
44
54
|
def choose_log(args={})
|
45
55
|
args[:verbose] == true ? ->(msg){puts "[LOG] #{msg}"} : ->(_){}
|
46
56
|
end
|
data/lib/adapters/views/cli.rb
CHANGED
@@ -15,6 +15,22 @@ module Idonethis::Adapters
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
+
|
19
|
+
module Teams
|
20
|
+
class << self
|
21
|
+
def apply(teams=[])
|
22
|
+
teams.select.each_with_index do |d,i|
|
23
|
+
#{
|
24
|
+
# "updated"=>"2015-05-20T23:53:58.831", "created"=>"2015-05-20T23:53:48.357",
|
25
|
+
# "done_count"=>138,
|
26
|
+
# "url"=>"https://idonethis.com/api/v0.1/teams/benbiddington-personal/",
|
27
|
+
# "name"=>"ben.biddington personal", "short_name"=>"benbiddington-personal",
|
28
|
+
# "dones"=>"https://idonethis.com/api/v0.1/dones/?team=benbiddington-personal", "is_personal"=>true, "permalink"=>"https://idonethis.com/cal/benbiddington-personal/"}
|
29
|
+
printf("%-5s", i+1); print(%Q{#{d["updated"]}}); print(" "); printf("%-30s", d["name"]); printf("%-5s", %Q{(#{d["done_count"]})}); print(" "); print(%Q{#{d["permalink"]}}); print("\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
18
34
|
end
|
19
35
|
end
|
20
36
|
end
|
data/lib/idonethis/index.rb
CHANGED
@@ -5,10 +5,22 @@ module Idonethis
|
|
5
5
|
%Q{#{dones_base_earl}?#{params.map{|k,v| "#{k}=#{v}"}.join('&')}}
|
6
6
|
end
|
7
7
|
|
8
|
+
def teams()
|
9
|
+
teams_base_earl
|
10
|
+
end
|
11
|
+
|
8
12
|
private
|
9
13
|
|
10
14
|
def dones_base_earl
|
11
|
-
"
|
15
|
+
"#{base_earl}/dones/"
|
16
|
+
end
|
17
|
+
|
18
|
+
def teams_base_earl
|
19
|
+
"#{base_earl}/teams/"
|
20
|
+
end
|
21
|
+
|
22
|
+
def base_earl
|
23
|
+
"https://idonethis.com/api/v0.1"
|
12
24
|
end
|
13
25
|
end
|
14
26
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Idonethis::UseCases
|
2
|
+
module Teams
|
3
|
+
class << self
|
4
|
+
def apply(credential, args={})
|
5
|
+
log = args[:log] || fail("You need to supply :log adapter")
|
6
|
+
view = args[:view] || fail("You need to supply :view adapter")
|
7
|
+
|
8
|
+
list = get(credential, log, args).tap{|result| log.call(result)}
|
9
|
+
|
10
|
+
view.call list
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def get(credential, log, args)
|
16
|
+
result = []
|
17
|
+
page = 1
|
18
|
+
|
19
|
+
loop do
|
20
|
+
reply = get_page(page, credential, log, args)
|
21
|
+
|
22
|
+
result += reply["results"]
|
23
|
+
|
24
|
+
page += 1
|
25
|
+
|
26
|
+
break if reply["next"].nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
result
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_page(page, credential, log, args) # https://idonethis.com/api/v0.1/teams/
|
33
|
+
url = Idonethis::Index.teams
|
34
|
+
|
35
|
+
log.call "url: #{url}"
|
36
|
+
|
37
|
+
internet = args[:internet] || fail("You need to supply :internet adapter")
|
38
|
+
|
39
|
+
parse internet.get(url, { "Authorization" => "Token #{credential[:token]}", accept: "application/json"})
|
40
|
+
end
|
41
|
+
|
42
|
+
def parse(reply)
|
43
|
+
require 'json'
|
44
|
+
|
45
|
+
JSON.parse(reply.body)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: idonethis-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Biddington
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- lib/idonethis/use_cases/git.rb
|
111
111
|
- lib/idonethis/use_cases/list.rb
|
112
112
|
- lib/idonethis/use_cases/new.rb
|
113
|
+
- lib/idonethis/use_cases/teams.rb
|
113
114
|
homepage: https://github.com/ben-biddington/idonethis-cli
|
114
115
|
licenses:
|
115
116
|
- MIT
|