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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b959cb1831568937ec335c6b06f0ec7ea36cd6ed
4
- data.tar.gz: 611acc65b8c1aefad5e62d42f3554e0eb2bdd40b
3
+ metadata.gz: f0ab8a523680ec339432ce597c050ff9aabf9d39
4
+ data.tar.gz: 3fe8cc22e494bb5cba8ad803370586f8aaa0a621
5
5
  SHA512:
6
- metadata.gz: fd64c38b4f8d142c49c38e7402012dd7abda75495b4cd445ef96b88fe7d16148ef55b5043ce086c1766e025d16e4ef19b8fe01575ebabc41bdb2ac10e2bd85d8
7
- data.tar.gz: beb3ddb14cd36f0196ad8f11e7afb743c549cb353a341c28e4665092282b7e346a7b3e55b920df3cdf9857023935502f26dccba3a194d887dfa027e2612fe575
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
- use_cases = {
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Idonethis
2
2
  module Cli
3
- VERSION = "0.11.0"
3
+ VERSION = "0.12.0"
4
4
  end
5
5
  end
@@ -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
- "https://idonethis.com/api/v0.1/dones/"
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.11.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