lita-github 0.1.0 → 0.1.1
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/README.md +2 -0
- data/lib/lita-github/r.rb +3 -0
- data/lib/lita-github/version.rb +1 -1
- data/lib/lita/handlers/github.rb +1 -0
- data/lib/lita/handlers/github_repo.rb +36 -0
- data/locales/en.yml +3 -0
- data/spec/unit/lita/handlers/github_repo_spec.rb +67 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bca7c5436b3f7d3858b5374d633dbf2ce49a78d
|
4
|
+
data.tar.gz: 0f13f80249167fb9cfb48b835c02c377af0994e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d69a87f51a1b4a4d3ce7ad68bc471e29207da530cb192e9d45773a7608d32f1c97f35543030af4b940bc5b9665b5caa609b847232da733ad79ef0a9ef9f99c06
|
7
|
+
data.tar.gz: df92f580a280732f33141f74fe5eb8897ac599eb6f876770fb505cea5c777cc4c66af535171db12ac01147e57a09345880f2472048f8cc5fde56046539642677
|
data/README.md
CHANGED
@@ -59,6 +59,8 @@ Here is the current functionality:
|
|
59
59
|
* `!gh repo delete PagerDuty/lita-github`
|
60
60
|
* Deletes the repo you specify, requires confirmation before doing so
|
61
61
|
* **Note:** This method is disabled by default, you need to enable it by setting `config.handlers.github.repo_delete_enabled = true` in your configuration file
|
62
|
+
* `!gh repo rename PagerDuty/lita-github better-lita-github`
|
63
|
+
* Renames the repo you specify -- requires confirmation
|
62
64
|
* `!gh repo teams PagerDuty/lita-github`
|
63
65
|
* list all of the teams currently attached to a repo
|
64
66
|
* `!gh repo team add <TEAM_ID|TEAM_SLUG> PagerDuty/lita-github`
|
data/lib/lita-github/r.rb
CHANGED
@@ -26,6 +26,9 @@ module LitaGithub
|
|
26
26
|
# key1:value key2:"value2" key3:'a better value'
|
27
27
|
OPT_REGEX ||= /((?:\s+?[a-zA-Z0-9_]+?):(?:(?:".+?")|(?:'.+?')|(?:[a-zA-Z0-9_]+)))/
|
28
28
|
|
29
|
+
# regex matcher for a repo name (not including the org).
|
30
|
+
REPO_NAME_REGEX = '(?<repo_name>[a-zA-Z0-9_\-]+)'
|
31
|
+
|
29
32
|
# regex matcher for: Org/repo
|
30
33
|
REPO_REGEX = '(?:(?<org>[a-zA-Z0-9_\-]+)(?:\s+?)?\/)?(?:\s+?)?(?<repo>[a-zA-Z0-9_\-]+)'
|
31
34
|
end
|
data/lib/lita-github/version.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
# @author Tim Heckman <tim@pagerduty.com>
|
22
22
|
module LitaGithub
|
23
23
|
# lita-github version
|
24
|
-
VERSION = '0.1.
|
24
|
+
VERSION = '0.1.1'
|
25
25
|
|
26
26
|
# lita-github version split amongst different revisions
|
27
27
|
MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
|
data/lib/lita/handlers/github.rb
CHANGED
@@ -68,6 +68,17 @@ module Lita
|
|
68
68
|
}
|
69
69
|
)
|
70
70
|
|
71
|
+
route(
|
72
|
+
/#{LitaGithub::R::A_REG}repo\s+?rename\s+?#{LitaGithub::R::REPO_REGEX}\s+?#{LitaGithub::R::REPO_NAME_REGEX}/,
|
73
|
+
:repo_rename,
|
74
|
+
command: true,
|
75
|
+
confirmation: true,
|
76
|
+
help: {
|
77
|
+
'gh repo rename PagerDuty/lita-github better-lita-github' =>
|
78
|
+
'Rename the PagerDuty/lita-github repo to PagerDuty/better-lita-github'
|
79
|
+
}
|
80
|
+
)
|
81
|
+
|
71
82
|
route(
|
72
83
|
/#{LitaGithub::R::A_REG}repo\s+?(teams|team\s+?list)\s+?#{LitaGithub::R::REPO_REGEX}/,
|
73
84
|
:repo_teams_list,
|
@@ -117,6 +128,16 @@ module Lita
|
|
117
128
|
response.reply(create_repo(org, repo, opts))
|
118
129
|
end
|
119
130
|
|
131
|
+
def repo_rename(response)
|
132
|
+
return response.reply(t('method_disabled')) if func_disabled?(__method__)
|
133
|
+
org, repo = repo_match(response.match_data)
|
134
|
+
new_repo = response.match_data['repo_name']
|
135
|
+
|
136
|
+
return response.reply(t('not_found', org: org, repo: repo)) unless repo?(rpo(org, repo))
|
137
|
+
|
138
|
+
response.reply(rename_repo(org, repo, new_repo))
|
139
|
+
end
|
140
|
+
|
120
141
|
def repo_delete(response)
|
121
142
|
return response.reply(t('method_disabled')) if func_disabled?(__method__)
|
122
143
|
|
@@ -308,6 +329,21 @@ module Lita
|
|
308
329
|
reply
|
309
330
|
end
|
310
331
|
|
332
|
+
def rename_repo(org, repo, new_repo)
|
333
|
+
full_name = rpo(org, repo)
|
334
|
+
reply = nil
|
335
|
+
begin
|
336
|
+
octo.edit_repository(full_name, name: new_repo)
|
337
|
+
ensure
|
338
|
+
if repo?(rpo(org, new_repo))
|
339
|
+
reply = t('repo_rename.pass', org: org, old_repo: repo, new_repo: new_repo)
|
340
|
+
else
|
341
|
+
reply = t('repo_rename.fail', org: org, repo: repo)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
reply
|
345
|
+
end
|
346
|
+
|
311
347
|
def delete_repo(org, repo)
|
312
348
|
full_name = rpo(org, repo)
|
313
349
|
reply = nil
|
data/locales/en.yml
CHANGED
@@ -26,6 +26,9 @@ en:
|
|
26
26
|
pass: "Created %{org}/%{repo}: %{repo_url}"
|
27
27
|
fail: "Unable to create %{org}/%{repo}"
|
28
28
|
exists: "Unable to create %{org}/%{repo} as it already exists"
|
29
|
+
repo_rename:
|
30
|
+
pass: "Renamed %{org}/%{old_repo} to %{org}/%{new_repo}"
|
31
|
+
fail: "Unable to rename %{org}/%{repo}"
|
29
32
|
repo_delete:
|
30
33
|
pass: "Deleted %{org}/%{repo}"
|
31
34
|
fail: "Unable to delete %{org}/%{repo}"
|
@@ -24,6 +24,10 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
24
24
|
it { is_expected.to route_command('gh repo new GrapeDuty/lita-test private:true team:heckman').to(:repo_create) }
|
25
25
|
it { is_expected.to route_command('gh repo new GrapeDuty/lita-test private:true randomunparseabletext ').to(:repo_create) }
|
26
26
|
|
27
|
+
# repo_rename command routing
|
28
|
+
it { is_expected.to route_command('gh repo rename GrapeDuty/lita-test lita-test-2').to(:repo_rename) }
|
29
|
+
it { is_expected.to route_command('gh repo rename lita-test lita-test-2').to(:repo_rename) }
|
30
|
+
|
27
31
|
# repo_delete command routing
|
28
32
|
it { is_expected.to route_command('gh repo delete GrapeDuty/lita-test').to(:repo_delete) }
|
29
33
|
it { is_expected.to route_command('gh repo delete lita-test').to(:repo_delete) }
|
@@ -303,6 +307,34 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
303
307
|
end
|
304
308
|
end
|
305
309
|
|
310
|
+
describe '.rename_repo' do
|
311
|
+
before do
|
312
|
+
allow(github_repo).to receive(:octo).and_return(double('Octokit::Client', edit_repository: nil))
|
313
|
+
end
|
314
|
+
|
315
|
+
context 'when repo renamed' do
|
316
|
+
before do
|
317
|
+
allow(github_repo).to receive(:repo?).with("#{github_org}/better-lita-test").and_return(true)
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'should confirm successful rename' do
|
321
|
+
expect(github_repo.send(:rename_repo, github_org, 'lita-test', 'better-lita-test'))
|
322
|
+
.to eql 'Renamed GrapeDuty/lita-test to GrapeDuty/better-lita-test'
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
context 'when repo not renamed' do
|
327
|
+
before do
|
328
|
+
allow(github_repo).to receive(:repo?).with("#{github_org}/better-lita-test").and_return(false)
|
329
|
+
end
|
330
|
+
|
331
|
+
it 'should reply with failure message' do
|
332
|
+
expect(github_repo.send(:rename_repo, github_org, 'lita-test', 'better-lita-test'))
|
333
|
+
.to eql 'Unable to rename GrapeDuty/lita-test'
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
306
338
|
describe '.remove_team_from_repo' do
|
307
339
|
before do
|
308
340
|
@octo_obj = double('Octokit::Client', remove_team_repository: true)
|
@@ -742,6 +774,41 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
742
774
|
end
|
743
775
|
end
|
744
776
|
|
777
|
+
describe '.repo_rename' do
|
778
|
+
before do
|
779
|
+
allow(github_repo).to receive(:func_disabled?).and_return(false)
|
780
|
+
allow(github_repo).to receive(:rename_repo).and_return('hello there')
|
781
|
+
allow(github_repo).to receive(:repo?).with("#{github_org}/lita-test").and_return(true)
|
782
|
+
end
|
783
|
+
|
784
|
+
it 'reply with the return from rename_repo()' do
|
785
|
+
send_command("gh repo rename #{github_org}/lita-test better-lita-test")
|
786
|
+
expect(replies.last).to eql 'hello there'
|
787
|
+
end
|
788
|
+
|
789
|
+
context 'when command disabled' do
|
790
|
+
before do
|
791
|
+
allow(github_repo).to receive(:func_disabled?).and_return(true)
|
792
|
+
end
|
793
|
+
|
794
|
+
it 'should no-op and say such if the command is disabled' do
|
795
|
+
send_command("gh repo rename #{github_org}/lita-test better-lita-test")
|
796
|
+
expect(replies.last).to eql disabled_reply
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
800
|
+
context 'when repo not found' do
|
801
|
+
before do
|
802
|
+
allow(github_repo).to receive(:repo?).with("#{github_org}/lita-test").and_return(false)
|
803
|
+
end
|
804
|
+
|
805
|
+
it 'should no-op informing you that the repo is not there' do
|
806
|
+
send_command("gh repo rename #{github_org}/lita-test better-lita-test")
|
807
|
+
expect(replies.last).to eql 'That repo (GrapeDuty/lita-test) was not found'
|
808
|
+
end
|
809
|
+
end
|
810
|
+
end
|
811
|
+
|
745
812
|
describe '.repo_teams_list' do
|
746
813
|
before do
|
747
814
|
@teams = [
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Heckman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|