mygegegems 0.0.2 → 0.0.3
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/lib/mygegegems/cli.rb +31 -12
- data/lib/mygegegems/version.rb +1 -1
- data/spec/cli_spec.rb +34 -0
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: deda87a5957026286a659350a24c2bc19a38599e
         | 
| 4 | 
            +
              data.tar.gz: 396693b54e065d040e45b39783723334a6707622
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 48d56fd754e23f7baeb419fc1006da98fa0c552d5f64fdd958786c0bbf031a598501cea08a8537f4c2228d99a9fe507441c1f682bb6da7c713e5f61739de67a3
         | 
| 7 | 
            +
              data.tar.gz: 9e94366406bf857b57ec914a5f25c96dcf72d67ebd126ac0fb12eb9e7b23300fddabb96f1a708f7df7565bbc8decfab8514c40c75b491a72bfae43a84ffb2f31
         | 
    
        data/lib/mygegegems/cli.rb
    CHANGED
    
    | @@ -24,6 +24,10 @@ module Mygegegems | |
| 24 24 | 
             
                option :handle,
         | 
| 25 25 | 
             
                        aliases:'-h',
         | 
| 26 26 | 
             
                        desc:"Show stat of gems of a user with given handle"
         | 
| 27 | 
            +
                option :sort,
         | 
| 28 | 
            +
                        aliases:'-s',
         | 
| 29 | 
            +
                        default:'download',
         | 
| 30 | 
            +
                        desc:"Sort a list by given title. any of 'name', 'diff' or 'download'"
         | 
| 27 31 | 
             
                def stat
         | 
| 28 32 | 
             
                  if handle = options[:handle]
         | 
| 29 33 | 
             
                    gems = Mygegegems.gems(handle)
         | 
| @@ -31,7 +35,7 @@ module Mygegegems | |
| 31 35 | 
             
                    border_line = "-" * 30
         | 
| 32 36 | 
             
                    total = gems.inject(0) { |sum, (_, dl)| sum + dl }
         | 
| 33 37 | 
             
                    num_of_gems = gems.size
         | 
| 34 | 
            -
                    body = body(gems, {}, total.to_s.size, 3)
         | 
| 38 | 
            +
                    body = body(gems, {}, total.to_s.size, 3, options[:sort])
         | 
| 35 39 | 
             
                    footer = footer(total, nil, gems.size)
         | 
| 36 40 | 
             
                  else
         | 
| 37 41 | 
             
                    invoke(:update, [], {}) if options[:update]
         | 
| @@ -43,7 +47,7 @@ module Mygegegems | |
| 43 47 | 
             
                    space1, space2 = [total, diff_total].map { |t| t.to_s.size }
         | 
| 44 48 | 
             
                    header = header(date, t_date, target)
         | 
| 45 49 | 
             
                    border_line = "-" * real_size(header)
         | 
| 46 | 
            -
                    body = body(gems, diffs, space1, space2)
         | 
| 50 | 
            +
                    body = body(gems, diffs, space1, space2, options[:sort])
         | 
| 47 51 | 
             
                    footer = footer(total, diff_total, num_of_gems, space1, space2)
         | 
| 48 52 | 
             
                  end
         | 
| 49 53 |  | 
| @@ -54,21 +58,36 @@ module Mygegegems | |
| 54 58 | 
             
                  puts footer
         | 
| 55 59 | 
             
                end
         | 
| 56 60 |  | 
| 61 | 
            +
                desc "version", "Show Mygegegems version"
         | 
| 62 | 
            +
                def version
         | 
| 63 | 
            +
                  puts "Mygegegems #{Mygegegems::VERSION} (c) 2014 kyoendo"
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
                map "-v" => :version
         | 
| 66 | 
            +
             | 
| 57 67 | 
             
                no_tasks do
         | 
| 58 68 | 
             
                  def header(date1, date2, label)
         | 
| 59 69 | 
             
                    "As of #{date1} (#{label}: \e[33m#{date2}\e[0m)"
         | 
| 60 70 | 
             
                  end
         | 
| 61 71 |  | 
| 62 | 
            -
                  def body(gems, diffs, space1, space2)
         | 
| 63 | 
            -
                    gems | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
                         | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            +
                  def body(gems, diffs, space1, space2, sort)
         | 
| 73 | 
            +
                    gems.map { |name, dl|
         | 
| 74 | 
            +
                          diff = diffs && diffs[name] || -1
         | 
| 75 | 
            +
                          [dl, diff, name]
         | 
| 76 | 
            +
                        }.sort_by { |arr|
         | 
| 77 | 
            +
                          case sort.intern
         | 
| 78 | 
            +
                          when :download then -arr[0]
         | 
| 79 | 
            +
                          when :diff     then -arr[1]
         | 
| 80 | 
            +
                          when :name     then arr[2]
         | 
| 81 | 
            +
                          else -arr[0]
         | 
| 82 | 
            +
                          end
         | 
| 83 | 
            +
                        }.map { |dl, diff, name|
         | 
| 84 | 
            +
                          if diff >= 0
         | 
| 85 | 
            +
                            "%#{space1}d \e[33m+%#{space2}d \e[32m%s\e[0m" % [dl, diff, name]
         | 
| 86 | 
            +
                          else
         | 
| 87 | 
            +
                            none = "-".center(space2)
         | 
| 88 | 
            +
                            "%#{space1}d  \e[33m#{none} \e[32m%s\e[0m" % [dl, name]
         | 
| 89 | 
            +
                          end
         | 
| 90 | 
            +
                        }
         | 
| 72 91 | 
             
                  end
         | 
| 73 92 |  | 
| 74 93 | 
             
                  def footer(total, diff_total, num_of_gems, space1=0, space2=0)
         | 
    
        data/lib/mygegegems/version.rb
    CHANGED
    
    
    
        data/spec/cli_spec.rb
    CHANGED
    
    | @@ -77,5 +77,39 @@ describe Mygegegems::CLI do | |
| 77 77 | 
             
                    end
         | 
| 78 78 | 
             
                  end
         | 
| 79 79 | 
             
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                context "with sort option" do
         | 
| 82 | 
            +
                  it "sorts results by name" do
         | 
| 83 | 
            +
                    described_class.start(['stat', '--sort', 'name'])
         | 
| 84 | 
            +
                    expect($stdout.string).to eq ~<<-EOS
         | 
| 85 | 
            +
                      As of 2014-07-11 (last: \e[33m2014-07-10\e[0m)
         | 
| 86 | 
            +
                      -----------------------------------
         | 
| 87 | 
            +
                       762 \e[33m+  2 \e[32memot\e[0m
         | 
| 88 | 
            +
                       354 \e[33m+ 14 \e[32mgh-diff\e[0m
         | 
| 89 | 
            +
                      3345 \e[33m+  0 \e[32mlet_it_fall\e[0m
         | 
| 90 | 
            +
                       299 \e[33m+ 18 \e[32mmatreska\e[0m
         | 
| 91 | 
            +
                       297 \e[33m+ 30 \e[32mtildoc\e[0m
         | 
| 92 | 
            +
                      2225 \e[33m+100 \e[32mtogglate\e[0m
         | 
| 93 | 
            +
                      -----------------------------------
         | 
| 94 | 
            +
                      7282 \e[33m+164 \e[32m6 gems\e[0m
         | 
| 95 | 
            +
                    EOS
         | 
| 96 | 
            +
                  end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                  it "sorts results by diff" do
         | 
| 99 | 
            +
                    described_class.start(['stat', '--sort', 'diff'])
         | 
| 100 | 
            +
                    expect($stdout.string).to eq ~<<-EOS
         | 
| 101 | 
            +
                      As of 2014-07-11 (last: \e[33m2014-07-10\e[0m)
         | 
| 102 | 
            +
                      -----------------------------------
         | 
| 103 | 
            +
                      2225 \e[33m+100 \e[32mtogglate\e[0m
         | 
| 104 | 
            +
                       297 \e[33m+ 30 \e[32mtildoc\e[0m
         | 
| 105 | 
            +
                       299 \e[33m+ 18 \e[32mmatreska\e[0m
         | 
| 106 | 
            +
                       354 \e[33m+ 14 \e[32mgh-diff\e[0m
         | 
| 107 | 
            +
                       762 \e[33m+  2 \e[32memot\e[0m
         | 
| 108 | 
            +
                      3345 \e[33m+  0 \e[32mlet_it_fall\e[0m
         | 
| 109 | 
            +
                      -----------------------------------
         | 
| 110 | 
            +
                      7282 \e[33m+164 \e[32m6 gems\e[0m
         | 
| 111 | 
            +
                    EOS
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
                end
         | 
| 80 114 | 
             
              end
         | 
| 81 115 | 
             
            end
         |