idonethis-cli 0.11.0 → 0.12.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/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
|