git_curate 0.6.2 → 0.6.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/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/git_curate.rb +1 -0
- data/lib/git_curate/branch.rb +42 -0
- data/lib/git_curate/runner.rb +12 -49
- data/lib/git_curate/version.rb +1 -1
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3210c7e8b48389447db001fa0b444b930a764a2c8c390a61827a2d6f01436d3b
         | 
| 4 | 
            +
              data.tar.gz: 3b31eb0d7f14f5cc6cad363de5feb41aa9b38c2f3cea985b7ea309bfc0201f2d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9c9d9b44f67a34b792045029656cf8c2e5f916d2325c45e6a2cf23989fd4d2c40431107b61405ad05dab21a0b8c80bf8e6ce3051689ca61a0429f0ca0c822ec3
         | 
| 7 | 
            +
              data.tar.gz: 4178cf08ef5e4785cb42ec4d9437f1b0079e0adaa5ad8c56f87c25ba00ab6f678a0d1dde64ba57630b43f4376b149aeab7eeb332de28ef7c9cc4419f16137160
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.6. | 
| 1 | 
            +
            0.6.3
         | 
    
        data/lib/git_curate.rb
    CHANGED
    
    
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            module GitCurate
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              class Branch
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                attr_reader :raw_name
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # raw_name should start in "* " if the current branch, but should otherwise have not whitespace.
         | 
| 8 | 
            +
                def initialize(raw_name)
         | 
| 9 | 
            +
                  @raw_name = raw_name
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def proper_name
         | 
| 13 | 
            +
                  @proper_name ||= @raw_name.lstrip.gsub(/^\*\s+/, '')
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def current?
         | 
| 17 | 
            +
                  @current ||= /^\*\s+/.match?(@raw_name)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def displayable_name(pad:)
         | 
| 21 | 
            +
                  if pad && !current?
         | 
| 22 | 
            +
                    "  #{@raw_name}"
         | 
| 23 | 
            +
                  else
         | 
| 24 | 
            +
                    @raw_name
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def last_author
         | 
| 29 | 
            +
                  `git log -n1 --format=format:%an #{proper_name}`
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def last_commit_date
         | 
| 33 | 
            +
                  `git log -n1 --date=short --format=format:%cd #{proper_name}`
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def last_subject
         | 
| 37 | 
            +
                  `git log -n1 --format=format:%s #{proper_name}`
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            end
         | 
    
        data/lib/git_curate/runner.rb
    CHANGED
    
    | @@ -10,8 +10,6 @@ module GitCurate | |
| 10 10 | 
             
              LEADING_STAR_REGEX = /^\* /
         | 
| 11 11 | 
             
              REMOTE_INFO_REGEX = /^[^\s]+\s+[^\s]+\s+\[(.+?)\]/
         | 
| 12 12 |  | 
| 13 | 
            -
              Branch = Struct.new("Branch", :raw, :proper, :displayable)
         | 
| 14 | 
            -
             | 
| 15 13 | 
             
              class Runner
         | 
| 16 14 |  | 
| 17 15 | 
             
                def initialize(opts)
         | 
| @@ -24,37 +22,20 @@ module GitCurate | |
| 24 22 | 
             
                    exit
         | 
| 25 23 | 
             
                  end
         | 
| 26 24 |  | 
| 27 | 
            -
                  branches = command_to_a("git branch"). | 
| 28 | 
            -
             | 
| 29 | 
            -
                  end
         | 
| 30 | 
            -
             | 
| 25 | 
            +
                  branches = command_to_a("git branch").map { |b| Branch.new(b) }
         | 
| 26 | 
            +
                  branches.reject!(&:current?) if interactive?
         | 
| 31 27 | 
             
                  merged_branches = command_to_a("git branch --merged").to_set
         | 
| 32 28 | 
             
                  upstream_branches = get_upstream_branches
         | 
| 33 29 |  | 
| 34 30 | 
             
                  table = Tabulo::Table.new(branches, vertical_rule_character: " ", intersection_character: " ",
         | 
| 35 31 | 
             
                    horizontal_rule_character: "-", column_padding: 0, align_header: :left) do |t|
         | 
| 36 32 |  | 
| 37 | 
            -
                    t.add_column(:branch, header: "Branch") { | | 
| 38 | 
            -
             | 
| 39 | 
            -
                    t.add_column("Last  | 
| 40 | 
            -
             | 
| 41 | 
            -
                     | 
| 42 | 
            -
             | 
| 43 | 
            -
                    t.add_column("Last author") do |branch|
         | 
| 44 | 
            -
                      `git log -n1 --format='format:%an' #{branch.proper}`
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    t.add_column("Last subject") do |branch|
         | 
| 48 | 
            -
                      `git log -n1 --format='format:%s' #{branch.proper}`
         | 
| 49 | 
            -
                    end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                    t.add_column("Merged\ninto HEAD?") do |branch|
         | 
| 52 | 
            -
                      merged_branches.include?(branch.proper) ? "Merged" : "Not merged"
         | 
| 53 | 
            -
                    end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                    t.add_column("Status vs\nupstream") do |branch|
         | 
| 56 | 
            -
                      upstream_branches.fetch(branch.proper, "No upstream")
         | 
| 57 | 
            -
                    end
         | 
| 33 | 
            +
                    t.add_column(:branch, header: "Branch") { |b| b.displayable_name(pad: !interactive?) }
         | 
| 34 | 
            +
                    t.add_column("Last commit", &:last_commit_date)
         | 
| 35 | 
            +
                    t.add_column("Last author", &:last_author)
         | 
| 36 | 
            +
                    t.add_column("Last subject", &:last_subject)
         | 
| 37 | 
            +
                    t.add_column("Merged#{$/}into HEAD?") { |b| merged_branches.include?(b.proper_name) ? "Merged" : "Not merged" }
         | 
| 38 | 
            +
                    t.add_column("Status vs#{$/}upstream") { |b| upstream_branches.fetch(b.proper_name, "No upstream") }
         | 
| 58 39 | 
             
                  end
         | 
| 59 40 |  | 
| 60 41 | 
             
                  prompt = " Delete? [y/n/done/abort/help] "
         | 
| @@ -73,7 +54,7 @@ module GitCurate | |
| 73 54 | 
             
                    if interactive?
         | 
| 74 55 | 
             
                      case HighLine.ask("#{row}#{prompt}")
         | 
| 75 56 | 
             
                      when "y"
         | 
| 76 | 
            -
                        branches_to_delete <<  | 
| 57 | 
            +
                        branches_to_delete << row.source.proper_name
         | 
| 77 58 | 
             
                      when "n", ""
         | 
| 78 59 | 
             
                        ;  # do nothing
         | 
| 79 60 | 
             
                      when "done"
         | 
| @@ -82,7 +63,7 @@ module GitCurate | |
| 82 63 | 
             
                        exit
         | 
| 83 64 | 
             
                      when "abort"
         | 
| 84 65 | 
             
                        puts table.horizontal_rule
         | 
| 85 | 
            -
                        puts " | 
| 66 | 
            +
                        puts "#{$/}Aborting. No branches deleted."
         | 
| 86 67 | 
             
                        exit
         | 
| 87 68 | 
             
                      else
         | 
| 88 69 | 
             
                        puts table.horizontal_rule
         | 
| @@ -105,24 +86,6 @@ module GitCurate | |
| 105 86 | 
             
                  !@opts[:list]
         | 
| 106 87 | 
             
                end
         | 
| 107 88 |  | 
| 108 | 
            -
                def proper_branch(raw_branch)
         | 
| 109 | 
            -
                  raw_branch.lstrip.gsub(/^\*\s*/, '')
         | 
| 110 | 
            -
                end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                def displayable_branch(raw_branch)
         | 
| 113 | 
            -
                  return raw_branch if interactive?
         | 
| 114 | 
            -
             | 
| 115 | 
            -
                  current_branch?(raw_branch) ? raw_branch : "  " + raw_branch
         | 
| 116 | 
            -
                end
         | 
| 117 | 
            -
             | 
| 118 | 
            -
                def excluded_branch?(raw_branch)
         | 
| 119 | 
            -
                  interactive? && current_branch?(raw_branch)
         | 
| 120 | 
            -
                end
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                def current_branch?(raw_branch)
         | 
| 123 | 
            -
                  raw_branch =~ /^\s*\*/
         | 
| 124 | 
            -
                end
         | 
| 125 | 
            -
             | 
| 126 89 | 
             
                # Returns a Hash containing, as keys, all local branches that have upstream branches,
         | 
| 127 90 | 
             
                # and, as values, a brief description of each branch's status relative to its upstream
         | 
| 128 91 | 
             
                # branch (up to date, or ahead/behind)
         | 
| @@ -149,9 +112,9 @@ module GitCurate | |
| 149 112 | 
             
                  if branches_to_delete.size != 0
         | 
| 150 113 | 
             
                    puts
         | 
| 151 114 | 
             
                    system("git branch -D #{branches_to_delete.join(" ")}")
         | 
| 152 | 
            -
                    puts " | 
| 115 | 
            +
                    puts "#{$/}Done"
         | 
| 153 116 | 
             
                  else
         | 
| 154 | 
            -
                    puts " | 
| 117 | 
            +
                    puts "#{$/}No branches deleted."
         | 
| 155 118 | 
             
                  end
         | 
| 156 119 | 
             
                end
         | 
| 157 120 |  | 
    
        data/lib/git_curate/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: git_curate
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Matthew Harvey
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-07-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: highline
         | 
| @@ -116,6 +116,7 @@ files: | |
| 116 116 | 
             
            - exe/git-curate
         | 
| 117 117 | 
             
            - git_curate.gemspec
         | 
| 118 118 | 
             
            - lib/git_curate.rb
         | 
| 119 | 
            +
            - lib/git_curate/branch.rb
         | 
| 119 120 | 
             
            - lib/git_curate/cli_parser.rb
         | 
| 120 121 | 
             
            - lib/git_curate/copyright.rb
         | 
| 121 122 | 
             
            - lib/git_curate/runner.rb
         |