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 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