issues 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/bin/issues CHANGED
@@ -39,7 +39,7 @@ desc 'List of Issues'
39
39
  command :list do |c|
40
40
  c.desc 'mileston '
41
41
  c.arg_name 'milestone'
42
- c.switch [:m, :milestone]
42
+ c.flag [:m, :milestone]
43
43
 
44
44
  c.desc 'assignee'
45
45
  c.arg_name 'username'
@@ -66,17 +66,16 @@ command :milestones do |c|
66
66
  c.flag [:s, :state]
67
67
 
68
68
  c.action do |global_options,options,args|
69
- p '[TODO] Implement Milestones List'
69
+ Issues::Repo.find(global_options[:repo]).milestones.each do |milestone|
70
+ p milestone
71
+ end
70
72
  end
71
73
  end
72
74
 
73
75
 
74
76
  pre do |global,command,options,args|
75
- # Pre logic here
76
- # Return true to proceed; false to abort and not call the
77
- # chosen command
78
- # Use skips_pre before a command to skip this block
79
- # on that command only
77
+ Issues::Github.username = global[:username]
78
+ Issues::Github.password = global[:password]
80
79
  true
81
80
  end
82
81
 
@@ -11,8 +11,11 @@ spec = Gem::Specification.new do |s|
11
11
  s.extra_rdoc_files = ['README.rdoc','issues.rdoc']
12
12
  s.rdoc_options << '--title' << 'issues' << '--main' << 'README.rdoc' << '-ri'
13
13
  s.bindir = 'bin'
14
- s.add_development_dependency('rake')
15
- s.add_development_dependency('rdoc')
14
+ s.add_dependency 'virtus', ['>=0.4.0']
15
+ s.add_dependency 'faraday', ['>=0.7.6']
16
+ s.add_dependency 'json', ['>=1.6.5']
17
+ s.add_development_dependency 'rake', ['>=0.9.2.2']
18
+ s.add_development_dependency 'rdoc', ['>=3.12']
16
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
20
  s.files = `git ls-files`.split("\n")
18
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,4 +1,13 @@
1
+ require 'virtus'
2
+ require 'faraday'
3
+ require 'json'
4
+ require 'singleton'
5
+
1
6
  require 'issues/version'
7
+ require 'issues/github'
8
+ require 'issues/user'
9
+ require 'issues/repo'
10
+ require 'issues/milestone'
2
11
 
3
12
  module Issues
4
13
 
@@ -0,0 +1,13 @@
1
+ require 'issues/github/connection'
2
+ require 'issues/github/resource'
3
+
4
+ module Issues
5
+ module Github
6
+ extend self
7
+ attr_accessor :username, :password
8
+
9
+ def connection
10
+ Github::Connection.instance.connection
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Issues
2
+ module Github
3
+ class Connection
4
+ include Singleton
5
+
6
+ def connection
7
+ @conn ||= Faraday.new(:url => "https://api.github.com")
8
+ @conn.basic_auth(Github.username, Github.password) unless Github.password.nil?
9
+ @conn
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module Issues
2
+ module Github
3
+ module Resource
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def github
10
+ Github.connection
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ module Issues
2
+ class Milestone
3
+ include Virtus
4
+ include Github::Resource
5
+
6
+ attribute :number, Integer
7
+ attribute :title, String
8
+ attribute :repo, Repo
9
+
10
+ def self.all(repo)
11
+ body = github.get("/repos/#{repo.handle}/milestones").body
12
+ JSON.parse(body).map {|attributes| new(attributes.merge(repo: repo)) }
13
+ end
14
+
15
+ def to_s
16
+ "##{number} - #{title} (#{repo.handle})"
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ module Issues
2
+ class Repo
3
+ include Virtus
4
+
5
+ attribute :name, String
6
+ attribute :owner, User
7
+
8
+ def self.find(handle)
9
+ login, name = handle.split('/')
10
+ new(name: name, owner: { login: login })
11
+ end
12
+
13
+ def milestones
14
+ Milestone.all(self)
15
+ end
16
+
17
+ def handle
18
+ "#{owner.login}/#{name}"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module Issues
2
+ class User
3
+ include Virtus
4
+ attribute :login, String
5
+
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Issues
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: issues
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,30 +9,63 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-22 00:00:00.000000000 Z
12
+ date: 2012-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: virtus
16
+ requirement: &70245939337220 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.4.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70245939337220
25
+ - !ruby/object:Gem::Dependency
26
+ name: faraday
27
+ requirement: &70245939336240 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.6
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70245939336240
36
+ - !ruby/object:Gem::Dependency
37
+ name: json
38
+ requirement: &70245939335400 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.6.5
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70245939335400
14
47
  - !ruby/object:Gem::Dependency
15
48
  name: rake
16
- requirement: &70346535924580 !ruby/object:Gem::Requirement
49
+ requirement: &70245939334560 !ruby/object:Gem::Requirement
17
50
  none: false
18
51
  requirements:
19
52
  - - ! '>='
20
53
  - !ruby/object:Gem::Version
21
- version: '0'
54
+ version: 0.9.2.2
22
55
  type: :development
23
56
  prerelease: false
24
- version_requirements: *70346535924580
57
+ version_requirements: *70245939334560
25
58
  - !ruby/object:Gem::Dependency
26
59
  name: rdoc
27
- requirement: &70346535924100 !ruby/object:Gem::Requirement
60
+ requirement: &70245939333560 !ruby/object:Gem::Requirement
28
61
  none: false
29
62
  requirements:
30
63
  - - ! '>='
31
64
  - !ruby/object:Gem::Version
32
- version: '0'
65
+ version: '3.12'
33
66
  type: :development
34
67
  prerelease: false
35
- version_requirements: *70346535924100
68
+ version_requirements: *70245939333560
36
69
  description:
37
70
  email: marcin.ciunelis@gmail.com
38
71
  executables:
@@ -42,6 +75,7 @@ extra_rdoc_files:
42
75
  - README.rdoc
43
76
  - issues.rdoc
44
77
  files:
78
+ - .gitignore
45
79
  - Gemfile
46
80
  - LICENSE
47
81
  - README.rdoc
@@ -50,6 +84,12 @@ files:
50
84
  - issues.gemspec
51
85
  - issues.rdoc
52
86
  - lib/issues.rb
87
+ - lib/issues/github.rb
88
+ - lib/issues/github/connection.rb
89
+ - lib/issues/github/resource.rb
90
+ - lib/issues/milestone.rb
91
+ - lib/issues/repo.rb
92
+ - lib/issues/user.rb
53
93
  - lib/issues/version.rb
54
94
  - test/tc_nothing.rb
55
95
  homepage: https://github.com/martinciu/issues