ellen-github 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +2 -6
- data/ellen-github.gemspec +2 -1
- data/lib/ellen/github.rb +3 -0
- data/lib/ellen/github/actions/base.rb +28 -0
- data/lib/ellen/github/actions/create_issue.rb +65 -0
- data/lib/ellen/github/actions/remember.rb +33 -0
- data/lib/ellen/github/version.rb +1 -1
- data/lib/ellen/handlers/github.rb +4 -12
- data/spec/spec_helper.rb +3 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c849dc2b74f690e8f9bec2968d5dc257586c968
|
4
|
+
data.tar.gz: fb81891c2819a3a6cca9d89659130890e1494b08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 564707102b614e9321ccab7e724673f83700efee00a475f435aa886259f6003c3e3dd0d2e9b7e9554784debf06dd01609fcc1b0c4afd245cadb753575fef3b8d
|
7
|
+
data.tar.gz: 40eeb7c04e55da2d1244edfbbcb8419ebf9bd608e1801703ed82a727788374b26e426af7bb828ce651fcc5a852e290b9f2c84008f201b958aa1cd4b6df32863b
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Manage GitHub via Ellen.
|
3
3
|
|
4
4
|
## Install
|
5
|
-
```
|
5
|
+
```ruby
|
6
6
|
# Gemfile
|
7
7
|
gem "ellen-github"
|
8
8
|
```
|
@@ -10,9 +10,5 @@ gem "ellen-github"
|
|
10
10
|
## Usage
|
11
11
|
```
|
12
12
|
@ellen create issue "<title>" on <username>/<repository> - Create a new Issue
|
13
|
-
|
14
|
-
|
15
|
-
## ENV
|
16
|
-
```
|
17
|
-
GITHUB_ACCESS_TOKEN - Github Access Token with `repo` or `public_repo` scope"
|
13
|
+
@ellen remember my github token <token> - Remember sender's GitHub access token
|
18
14
|
```
|
data/ellen-github.gemspec
CHANGED
@@ -16,10 +16,11 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
-
spec.add_dependency "ellen", ">= 0.1.
|
19
|
+
spec.add_dependency "ellen", ">= 0.1.3"
|
20
20
|
spec.add_dependency "octokit"
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec", "2.14.1"
|
24
|
+
spec.add_development_dependency "simplecov"
|
24
25
|
spec.add_development_dependency "webmock"
|
25
26
|
end
|
data/lib/ellen/github.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "octokit"
|
2
|
+
|
3
|
+
module Ellen
|
4
|
+
module Github
|
5
|
+
module Actions
|
6
|
+
class Base
|
7
|
+
NAMESPACE = "github"
|
8
|
+
|
9
|
+
attr_reader :message, :robot
|
10
|
+
|
11
|
+
def initialize(options)
|
12
|
+
@message = options[:message]
|
13
|
+
@robot = options[:robot]
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def access_tokens
|
19
|
+
robot.brain.data[NAMESPACE] ||= {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def sender_name
|
23
|
+
message.from
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "octokit"
|
2
|
+
|
3
|
+
module Ellen
|
4
|
+
module Github
|
5
|
+
module Actions
|
6
|
+
class CreateIssue < Base
|
7
|
+
def call
|
8
|
+
if has_access_token?
|
9
|
+
create
|
10
|
+
else
|
11
|
+
require_access_token
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def require_access_token
|
18
|
+
robot.say("I don't know your github access token")
|
19
|
+
end
|
20
|
+
|
21
|
+
def created
|
22
|
+
robot.say("Created a new Issue")
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
robot.say("Created #{issue.html_url}")
|
27
|
+
rescue Octokit::Unauthorized
|
28
|
+
robot.say("Failed in authentication (401)")
|
29
|
+
rescue Octokit::NotFound
|
30
|
+
robot.say("Could not find that repository")
|
31
|
+
rescue => exception
|
32
|
+
robot.say("Failed (#{exception.class})")
|
33
|
+
end
|
34
|
+
|
35
|
+
def issue
|
36
|
+
client.create_issue(repository, title, body)
|
37
|
+
end
|
38
|
+
|
39
|
+
def has_access_token?
|
40
|
+
!!access_token
|
41
|
+
end
|
42
|
+
|
43
|
+
def access_token
|
44
|
+
@access_token ||= access_tokens[sender_name]
|
45
|
+
end
|
46
|
+
|
47
|
+
def client
|
48
|
+
Octokit::Client.new(access_token: access_token)
|
49
|
+
end
|
50
|
+
|
51
|
+
def repository
|
52
|
+
message[:repo]
|
53
|
+
end
|
54
|
+
|
55
|
+
def title
|
56
|
+
message[:title]
|
57
|
+
end
|
58
|
+
|
59
|
+
def body
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ellen
|
2
|
+
module Github
|
3
|
+
module Actions
|
4
|
+
class Remember < Base
|
5
|
+
attr_reader :message, :robot
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@message = options[:message]
|
9
|
+
@robot = options[:robot]
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
remember
|
14
|
+
report
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def report
|
20
|
+
robot.say("Remembered #{robot.name}'s github access token")
|
21
|
+
end
|
22
|
+
|
23
|
+
def remember
|
24
|
+
access_tokens[sender_name] = given_access_token
|
25
|
+
end
|
26
|
+
|
27
|
+
def given_access_token
|
28
|
+
message[:token]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/ellen/github/version.rb
CHANGED
@@ -1,24 +1,16 @@
|
|
1
|
-
require "octokit"
|
2
|
-
|
3
1
|
module Ellen
|
4
2
|
module Handlers
|
5
3
|
class Github < Base
|
6
4
|
on(/create issue "(?<title>.+)" on (?<repo>.+)\z/, name: "create_issue", description: "Create a new issue")
|
7
5
|
|
8
|
-
|
6
|
+
on(/remember my github token (?<token>.+)\z/, name: "remember", description: "Remember sender's GitHub access token")
|
9
7
|
|
10
8
|
def create_issue(message)
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def client
|
17
|
-
@client ||= Octokit::Client.new(access_token: access_token)
|
9
|
+
Ellen::Github::Actions::CreateIssue.new(message: message, robot: robot).call
|
18
10
|
end
|
19
11
|
|
20
|
-
def
|
21
|
-
|
12
|
+
def remember(message)
|
13
|
+
Ellen::Github::Actions::Remember.new(message: message, robot: robot).call
|
22
14
|
end
|
23
15
|
end
|
24
16
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ellen-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.
|
19
|
+
version: 0.1.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.
|
26
|
+
version: 0.1.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: octokit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.14.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: webmock
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,12 +116,16 @@ extensions: []
|
|
102
116
|
extra_rdoc_files: []
|
103
117
|
files:
|
104
118
|
- ".gitignore"
|
119
|
+
- CHANGELOG.md
|
105
120
|
- Gemfile
|
106
121
|
- LICENSE.txt
|
107
122
|
- README.md
|
108
123
|
- Rakefile
|
109
124
|
- ellen-github.gemspec
|
110
125
|
- lib/ellen/github.rb
|
126
|
+
- lib/ellen/github/actions/base.rb
|
127
|
+
- lib/ellen/github/actions/create_issue.rb
|
128
|
+
- lib/ellen/github/actions/remember.rb
|
111
129
|
- lib/ellen/github/version.rb
|
112
130
|
- lib/ellen/handlers/github.rb
|
113
131
|
- spec/ellen/github_spec.rb
|