rubyist 0.1.0 → 0.1.1

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: 9a090f3347c59e5c2ddb5d672d38b6da51d47fd4
4
- data.tar.gz: fd5ff1b380a483ccc155e1d559523260284f51d3
3
+ metadata.gz: 231a1d3ff0ec9cef4aec72fd2d5316d60a665584
4
+ data.tar.gz: 96c87378b49d87e9813b4a7ee5d3f189d7a25831
5
5
  SHA512:
6
- metadata.gz: a9be7bfb0f24b546cab7e5c37856f775390b5ba485d2fd4e3e7f980c07029439351a436ad121dc5033d2c7a56d304db7228f93829b2ee801ad2b176d008ec098
7
- data.tar.gz: abe083f590216cbdff57b30741afd786a24728cfd3f2cab38f86dfe5d42b3111df366d3b642f5678b40d7961d2ed3fdfedbfb88d5c96dadede0a5fa4c3244776
6
+ metadata.gz: 77fa697d8dec3730f5002da40a19cb680eb2b654fb7ef48c21afd9bdc6394d2aee390ecb1633950fabb0e9a1485b74ba2a314abba43db0960b387bdf973a6969
7
+ data.tar.gz: 481ef750edba3220295c53569f73d37a527608ade7bdf91d89e305dac6461fbcacdf7381282902ee3dbb864772c2671477054d282ba38c6639c931cd60460086
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Rubyist
2
2
 
3
- Know gems owned by someone
3
+ Just made this to know gems owned by someone, and forget the [gems](https://github.com/rubygems/gems) and [rubygems.org API](http://guides.rubygems.org/rubygems-org-api/)
4
4
 
5
5
  ## Installation
6
6
 
@@ -20,18 +20,26 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- ```ruby
24
- rubyist = Rubyist.new 'arthurnn'
23
+ ```
24
+ irb(main):001:0> Rubyist.own('kaminari').include? Rubyist.named('a_matsuda')
25
+ => true
25
26
  ```
26
27
 
27
28
  Interfaces as below
28
29
 
29
- ```ruby
30
- irb(main):001:0> Rubyist.instance_methods false
31
- => [:name, :gems, :total_downloads]
32
- irb(main):002:0> Rubyist::Gem.instance_methods false
33
- => [:name, :info, :versions, :total_downloads, :homepage_uri, :project_uri]
34
- irb(main):003:0> Rubyist::Gem::Version.instance_methods false
30
+ ```
31
+ irb(main):002:0> Rubyist.methods false
32
+ => [:named, :own]
33
+ irb(main):003:0> Rubyist.instance_methods false
34
+ => [:<=>, :name, :gems, :total_downloads]
35
+ irb(main):004:0> Rubyist::Gem.instance_methods false
36
+ => [:<=>, :name, :info, :versions, :total_downloads, :homepage_uri, :project_uri]
37
+ irb(main):005:0> Rubyist::Gem::Version.instance_methods false
35
38
  => [:summary, :number, :downloads, :created_at]
36
39
  ```
37
40
 
41
+ CLI
42
+
43
+ ```
44
+ $ rubyist tenderlove
45
+ ```
data/exe/rubyist ADDED
@@ -0,0 +1,39 @@
1
+ require 'rubyist'
2
+
3
+ def help
4
+ puts <<~EOH
5
+ Usage: rubyist [OPTION]... NAME
6
+ List gems owned by NAME, ordered by download count
7
+
8
+ -v also show versions
9
+ -h help
10
+ EOH
11
+ end
12
+
13
+ def help?
14
+ ARGV.include? '-h'
15
+ end
16
+
17
+ def versions?
18
+ ARGV.include? '-v'
19
+ end
20
+
21
+ name = (ARGV - ['-v', '-h']).first
22
+
23
+ if help? or name.nil?
24
+ help
25
+ exit
26
+ end
27
+
28
+ Rubyist.
29
+ named(name).
30
+ gems.
31
+ sort { |g1, g2| g1.total_downloads <=> g2.total_downloads }.
32
+ each do |g|
33
+ puts "#{g.name} #{g.total_downloads} > #{g.homepage_uri or g.project_uri}"
34
+ puts "#{g.info}"
35
+ g.versions.each do |v|
36
+ puts " #{v.number} #{v.downloads}"
37
+ end if versions?
38
+ puts
39
+ end
data/lib/rubyist.rb CHANGED
@@ -3,25 +3,51 @@ require 'gems'
3
3
  require 'time'
4
4
 
5
5
  class Rubyist
6
- attr_reader :name, :gems
6
+ attr_reader :name
7
+ include Comparable
7
8
 
8
9
  def initialize name
9
10
  @name = name
10
- @gems = Gems.gems(name).map { |g| Gem.new g }
11
+ end
12
+
13
+ def <=>(other)
14
+ name <=> other.name
15
+ end
16
+
17
+ def gems
18
+ return @gems if defined? @gems
19
+ result = Gems.gems(name)
20
+ @gems = (Hash === result ? [] : result.map { |g| Gem.new g })
11
21
  end
12
22
 
13
23
  def total_downloads
14
24
  gems.inject(0) { |sum, g| sum + g.total_downloads }
15
25
  end
16
26
 
27
+ class << self
28
+ alias_method :named, :new
29
+
30
+ def own gem_name
31
+ Gems.owners(gem_name).
32
+ map { |o| new o['handle'] }
33
+ end
34
+ end
35
+
17
36
  class Gem
18
- attr_reader :name, :info, :homepage_uri, :project_uri, :versions
37
+ attr_reader :name, :info, :homepage_uri, :project_uri
38
+ include Comparable
19
39
 
20
40
  def initialize hash
21
41
  @name, @info, @homepage_uri, @project_uri =
22
42
  %w[name info homepage_uri project_uri].map { |k| hash[k] }
43
+ end
44
+
45
+ def <=>(other)
46
+ name <=> other.name
47
+ end
23
48
 
24
- @versions = Gems.versions(name).map { |v| Version.new v }
49
+ def versions
50
+ @versions ||= Gems.versions(name).map { |v| Version.new v }
25
51
  end
26
52
 
27
53
  def total_downloads
@@ -1,3 +1,3 @@
1
1
  class Rubyist
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-06 00:00:00.000000000 Z
11
+ date: 2017-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -69,7 +69,8 @@ dependencies:
69
69
  description:
70
70
  email:
71
71
  - block24block@gmail.com
72
- executables: []
72
+ executables:
73
+ - rubyist
73
74
  extensions: []
74
75
  extra_rdoc_files: []
75
76
  files:
@@ -81,6 +82,7 @@ files:
81
82
  - Rakefile
82
83
  - bin/console
83
84
  - bin/setup
85
+ - exe/rubyist
84
86
  - lib/rubyist.rb
85
87
  - lib/rubyist/version.rb
86
88
  - rubyist.gemspec