multi_repo 0.1.1 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f35b21a8b627819ec3d5884167260ba7d3887d3766cf5ea14d93ec717e1faaf
4
- data.tar.gz: 1c1ba25b23f728b5284cf5947b44527482ba1bd2967a7a3d3026b7ba2c3b145e
3
+ metadata.gz: b2f8e962cb396736c017c1dd641f20503dde65b5dadaf20d38bb98a1811d3f4c
4
+ data.tar.gz: da90a0d13d0e8c999e80a40979627470f64551d55b89f2a08b629040e07130ef
5
5
  SHA512:
6
- metadata.gz: 6022d318abee6743deddfdf0bd3e33a421161682c9c9f5e5bade18049e2c0982cb46651a96d05c369334ae969bb9ec17dd4eeba776bea36e48964d9f5dc19d34
7
- data.tar.gz: 21ce3ed99d97f4fc2538e9e31ea610ff65420fe2937ed77c3418bceaac63def8033e5104b7232612459a89a6f2099554a89cf09c5189ac2f2372d725c5c48056
6
+ metadata.gz: ffa32e47da1036891d73af604b0ddc1bd9f02d1ab053c1b84c6ba4604ca52ef6c842cb214636020ed1f79e2d6a4d50bc47ffdbd40e22e787a9e2eddce659284f
7
+ data.tar.gz: '055905a0eb895e8cfd4377d5f73018465911d3a3a72e88e052acae945619f000b05cfb8264a105b1fada75087c96343ea0aafe860221b37eaee995007418b77a'
data/README.md CHANGED
@@ -4,7 +4,7 @@ MultiRepo is a tool for managing multiple git repositories.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/multi_repo.svg)](http://badge.fury.io/rb/multi_repo)
6
6
  [![CI](https://github.com/ManageIQ/multi_repo/actions/workflows/ci.yaml/badge.svg)](https://github.com/ManageIQ/multi_repo/actions/workflows/ci.yaml)
7
- [![Code Climate](http://img.shields.io/codeclimate/github/ManageIQ/multi_repo.svg)](https://codeclimate.com/github/ManageIQ/multi_repo)
7
+ [![Code Climate](https://codeclimate.com/github/ManageIQ/multi_repo.svg)](https://codeclimate.com/github/ManageIQ/multi_repo)
8
8
 
9
9
  ## Installation
10
10
 
@@ -164,7 +164,7 @@ module MultiRepo::Helpers
164
164
 
165
165
  success =
166
166
  system("git checkout -B #{dest_name} #{start_point}") &&
167
- system("git pull --rebase=merges #{source_remote} #{source_name}") &&
167
+ system("git pull --no-rebase #{source_remote} #{source_name}") &&
168
168
  system("git push -f #{dest_remote} #{dest_name}")
169
169
 
170
170
  if backup_remote_defined?
@@ -15,18 +15,20 @@ module MultiRepo::Helpers
15
15
  end
16
16
 
17
17
  def run
18
+ due_on_str = due_on.strftime("%Y-%m-%d").inspect
19
+
18
20
  existing = github.find_milestone_by_title(repo_name, title)
19
21
  if close
20
22
  if existing
21
23
  puts "Closing milestone #{title.inspect} (#{existing.number})"
22
- github.close_milestone(repo.name, title, existing.number)
24
+ github.close_milestone(repo_name, title, existing.number)
23
25
  end
24
26
  elsif existing
25
- puts "Updating milestone #{title.inspect} (#{existing.number}) with due date #{due_on_str.inspect}"
26
- github.update_milestone(repo.name, existing.number, due_on)
27
+ puts "Updating milestone #{title.inspect} (#{existing.number}) with due date #{due_on_str}"
28
+ github.update_milestone(repo_name, existing.number, due_on)
27
29
  else
28
- puts "Creating milestone #{title.inspect} with due date #{due_on_str.inspect}"
29
- github.create_milestone(repo.name, title, due_on)
30
+ puts "Creating milestone #{title.inspect} with due date #{due_on_str}"
31
+ github.create_milestone(repo_name, title, due_on)
30
32
  end
31
33
  end
32
34
  end
@@ -44,14 +44,15 @@ module MultiRepo::Service
44
44
  exit($?.exitstatus) unless system?(command, **kwargs)
45
45
  end
46
46
 
47
- attr_accessor :registry, :cache, :dry_run
47
+ attr_accessor :registry, :default_headers, :cache, :dry_run
48
48
 
49
- def initialize(registry: self.class.registry, cache: true, dry_run: false)
49
+ def initialize(registry: self.class.registry, default_headers: nil, cache: true, dry_run: false)
50
50
  require "rest-client"
51
51
  require "fileutils"
52
52
  require "json"
53
53
 
54
54
  @registry = registry
55
+ @default_headers = default_headers
55
56
 
56
57
  @cache = cache
57
58
  @dry_run = dry_run
@@ -135,6 +136,8 @@ module MultiRepo::Service
135
136
  def request(verb, path, body: nil, headers: {}, verbose: true)
136
137
  path = File.join(registry, path)
137
138
 
139
+ headers = default_headers.merge(headers) if default_headers
140
+
138
141
  if dry_run && %i[delete put post patch].include?(verb)
139
142
  puts "+ dry_run: #{verb.to_s.upcase} #{path}".light_black if verbose
140
143
  {}
@@ -71,12 +71,12 @@ module MultiRepo::Service
71
71
  end
72
72
 
73
73
  def self.team_ids_by_name(org)
74
- @team_ids ||= {}
75
- @team_ids[org] ||= client.org_teams(org).map { |t| [t.slug, t.id] }.sort.to_h
74
+ @team_ids_by_name ||= {}
75
+ @team_ids_by_name[org] ||= client.org_teams(org).map { |t| [t.slug, t.id] }.sort.to_h
76
76
  end
77
77
 
78
78
  def self.team_names(org)
79
- team_ids(org).keys
79
+ team_ids_by_name(org).keys
80
80
  end
81
81
 
82
82
  def self.disabled_workflows(repo_name)
@@ -1,3 +1,3 @@
1
1
  module MultiRepo
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/scripts/make_alumni CHANGED
@@ -14,7 +14,7 @@ opts = Optimist.options do
14
14
  end
15
15
 
16
16
  class MultiRepo::MakeAlumni
17
- attr_reader :org, :dry_run
17
+ attr_reader :org, :dry_run, :github
18
18
 
19
19
  def initialize(org:, dry_run:, **_)
20
20
  @org = org
@@ -23,13 +23,14 @@ class MultiRepo::MakeAlumni
23
23
  end
24
24
 
25
25
  def run(user)
26
- progress = MultiRepo.progress_bar(teams.size + repos.size)
26
+ progress = MultiRepo::CLI.progress_bar(teams.size + repos.size)
27
27
 
28
28
  github.add_team_membership(org, "alumni", user)
29
29
  progress.increment
30
30
 
31
- non_alumni_teams = github.team_names(org) - ["alumni"]
32
- non_alumni_teams.each do |team|
31
+ teams.each do |team|
32
+ next if team == "alumni"
33
+
33
34
  github.remove_team_membership(org, team, user)
34
35
  progress.increment
35
36
  end
@@ -41,6 +42,16 @@ class MultiRepo::MakeAlumni
41
42
 
42
43
  progress.finish
43
44
  end
45
+
46
+ private
47
+
48
+ def teams
49
+ @teams ||= github.team_names(org)
50
+ end
51
+
52
+ def repos
53
+ @repos ||= github.client.org_repos(org).reject(&:archived?).map(&:full_name).sort
54
+ end
44
55
  end
45
56
 
46
57
  make_alumni = MultiRepo::MakeAlumni.new(**opts)
@@ -11,7 +11,7 @@ opts = Optimist.options do
11
11
  opt :extra_repos, "Extra repos to reenable workflows in", :type => :strings, :default => []
12
12
 
13
13
  MultiRepo::CLI.common_options(self, :only => :dry_run)
14
- ende
14
+ end
15
15
 
16
16
  github = MultiRepo::Service::Github.new(**opts.slice(:dry_run))
17
17
 
@@ -19,11 +19,11 @@ repos = (github.org_repo_names(opts[:org]) + opts[:extra_repos]).sort
19
19
  repos.each do |repo_name|
20
20
  puts MultiRepo::CLI.header(repo_name)
21
21
 
22
- disabled_workflows = github.disabled_workflows
22
+ disabled_workflows = github.disabled_workflows(repo_name)
23
23
  if disabled_workflows.any?
24
24
  disabled_workflows.each do |w|
25
25
  puts "** Enabling #{w.html_url} (#{w.id})"
26
- github.enable_workflow(github, repo_name, w.html_url, w.id)
26
+ github.enable_workflow(repo_name, w.id)
27
27
  end
28
28
  else
29
29
  puts "** No disabled workflows found"
@@ -14,7 +14,7 @@ opts = Optimist.options do
14
14
  MultiRepo::CLI.common_options(self)
15
15
  end
16
16
  Optimist.die(:due_on, "is required") if !opts[:close] && !opts[:due_on]
17
- Optimist.die(:due_on, "must be a date format") if opts[:due_on] && !MultiRepo::Service::GitHub.valid_milestone_date?(opts[:due_on])
17
+ Optimist.die(:due_on, "must be a date format") if opts[:due_on] && !MultiRepo::Service::Github.valid_milestone_date?(opts[:due_on])
18
18
 
19
19
  MultiRepo::CLI.each_repo(**opts) do |repo|
20
20
  MultiRepo::Helpers::UpdateMilestone.new(repo.name, **opts).run
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_repo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Authors
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-28 00:00:00.000000000 Z
11
+ date: 2023-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport