Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ PATH
remote: .
specs:
github-team-remover (0.0.2)
colored
octokit (~> 3.0)
thor

Expand All @@ -10,12 +11,13 @@ GEM
specs:
addressable (2.3.6)
ast (1.1.0)
colored (1.2)
diff-lcs (1.2.5)
faraday (0.9.0)
multipart-post (>= 1.2, < 3)
json (1.8.1)
multipart-post (2.0.0)
octokit (3.0.0)
octokit (3.1.0)
sawyer (~> 0.5.3)
parser (2.1.7)
ast (~> 1.1)
Expand Down
2 changes: 1 addition & 1 deletion bin/github-team-remover
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby

require 'bundler/setup'
require 'rubygems'
require 'remover'

Expand Down
1 change: 1 addition & 0 deletions github-team-remover.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Gem::Specification.new do |spec|

spec.add_dependency 'octokit', '~> 3.0'
spec.add_dependency 'thor'
spec.add_dependency 'colored'

spec.add_development_dependency 'rubocop'
spec.add_development_dependency 'rspec', '~> 3.0.0.beta2'
Expand Down
2 changes: 1 addition & 1 deletion lib/remover.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
require 'bundler/setup'

require 'remover/github'
require 'remover/team'
require 'remover/list'
require 'remover/cli'
require 'remover/configuration'
require 'remover/out'

module Remover
def self.configuration
Expand Down
7 changes: 6 additions & 1 deletion lib/remover/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ class CLI < Thor
method_option :organization, required: true
method_option :login, required: true
method_option :password, required: true
method_option :verbose, desc: 'Information about repositories and members'

desc('list', 'List unused teams')

def list
Remover.configuration.load_from_options!(options)

Remover::List.new(github).unused_teams.each do |team|
puts team.name
Remover::Out.new(team, verbose?).out_list
end
end

Expand All @@ -30,5 +31,9 @@ def octokit
password: Remover.configuration.password
)
end

def verbose?
true if options[:verbose]
end
end
end
2 changes: 1 addition & 1 deletion lib/remover/configuration.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Remover
class Configuration
OPTIONS = %i(organization login password)
OPTIONS = %i(organization login password verbose)

attr_accessor(*OPTIONS)

Expand Down
46 changes: 46 additions & 0 deletions lib/remover/out.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
require 'colored'

module Remover
class Out
attr_accessor :team, :verbose

def initialize(team, verbose)
@team, @verbose = team, verbose
end

def team_name
puts "Team name: #{team.name}".yellow
end

def out_members_v
team.out_mem_v.each do |member|
puts "| | #{member.html_url}".cyan
end
end

def out_members
puts "| Members: #{team.amt_mem}".blue
end

def out_rep_v
team.out_rep_v.each do |repos|
puts "| | #{repos.html_url}".green
end
end

def out_rep
puts "| Repositories: #{team.amt_rep}".red
end

def out_list
puts '===========* *** *============'
team_name
out_members
out_members_v if verbose
out_rep
out_rep_v if verbose
puts '===========* *** *============'
puts ''
end
end
end
16 changes: 16 additions & 0 deletions lib/remover/team.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,22 @@ def name
github_team.name
end

def amt_mem
github_client.team_members(github_team.id).size
end

def amt_rep
github_client.team_repositories(github_team.id).size
end

def out_mem_v
github_client.team_members(github_team.id)
end

def out_rep_v
github_client.team_repositories(github_team.id)
end

private

def with_members?
Expand Down
33 changes: 33 additions & 0 deletions spec/remover/cli_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
describe Remover::CLI do
let(:options) do
{
'organization' => 'MANasyrov2',
'login' => 'InFinite',
'password' => '000000',
'verbose' => 'true'
}
end

let(:configuration) { Remover::Configuration.new }

describe '#verbose' do
before do
configuration.load_from_options!(options)
end

context 'verbose not entered' do
let(:options) do {
'verbose' => 'false'
}
end

it 'returns false' do
expect(configuration.verbose).not_to eq('true')
end
end

it 'returns true' do
expect(configuration.verbose).to eq('true')
end
end
end
4 changes: 3 additions & 1 deletion spec/remover/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
{
'organization' => 'FlatSchool',
'login' => 'fs-school',
'password' => '123456'
'password' => '123456',
'verbose' => 'true'
}
end

Expand All @@ -18,6 +19,7 @@
expect(configuration.organization).to eq('FlatSchool')
expect(configuration.login).to eq('fs-school')
expect(configuration.password).to eq('123456')
expect(configuration.verbose).to eq('true')
end
end
end
40 changes: 40 additions & 0 deletions spec/remover/team_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,44 @@
end
end
end

describe '#amt_rep' do
before do
allow(github_client).to receive(:team_repositories) { [] }
end

it 'returns repository amount' do
expect(team.amt_rep).to eq(github_client.team_repositories(github_team.id).size)
end
end

describe '#out_rep_v' do
before do
allow(github_client).to receive(:team_repositories) { [] }
end

it 'returns array (info about repositories)' do
expect(team.out_rep_v).to be_an(Array)
end
end

describe '#amt_mem' do
before do
allow(github_client).to receive(:team_members) { [] }
end

it 'returns members amount' do
expect(team.amt_mem).to eq(github_client.team_members(github_team.id).size)
end
end

describe '#out_mem_v' do
before do
allow(github_client).to receive(:team_members) { [] }
end

it 'returns array (info about members)' do
expect(team.out_mem_v).to be_an(Array)
end
end
end