phabricator 0.0.4 → 0.0.7
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.
- data/Gemfile.lock +1 -3
- data/README.md +35 -1
- data/lib/phabricator.rb +8 -4
- data/lib/phabricator/conduit_client.rb +31 -18
- data/lib/phabricator/config.rb +9 -0
- data/lib/phabricator/maniphest.rb +1 -1
- data/lib/phabricator/maniphest/task.rb +7 -4
- data/lib/phabricator/project.rb +4 -2
- data/lib/phabricator/user.rb +39 -0
- data/lib/phabricator/version.rb +1 -1
- metadata +4 -2
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
phabricator (0.0.
|
|
4
|
+
phabricator (0.0.5)
|
|
5
5
|
rest-client
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -23,7 +23,6 @@ GEM
|
|
|
23
23
|
powerbar (1.0.11)
|
|
24
24
|
ansi (~> 1.4.0)
|
|
25
25
|
hashie (>= 1.1.0)
|
|
26
|
-
rake (10.2.2)
|
|
27
26
|
rest-client (1.6.7)
|
|
28
27
|
mime-types (>= 1.16)
|
|
29
28
|
|
|
@@ -36,4 +35,3 @@ DEPENDENCIES
|
|
|
36
35
|
minitest-reporters
|
|
37
36
|
mocha
|
|
38
37
|
phabricator!
|
|
39
|
-
rake
|
data/README.md
CHANGED
|
@@ -16,4 +16,38 @@ Or install it yourself as:
|
|
|
16
16
|
|
|
17
17
|
## Usage
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### Configuration
|
|
20
|
+
|
|
21
|
+
You can configure Phabricator to use a specific host, user, and cert. Otherwise,
|
|
22
|
+
it will fall back to whatever is in your `~/.arcrc` file.
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
Phabricator.configure do |c|
|
|
26
|
+
c.host = 'secure.phabricator.com'
|
|
27
|
+
c.user = 'amber'
|
|
28
|
+
c.cert = '<CERT>'
|
|
29
|
+
end
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Projects
|
|
33
|
+
|
|
34
|
+
```ruby
|
|
35
|
+
# Find the project given a project name.
|
|
36
|
+
Phabricator::Project.find_by_name('Project')
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Tasks
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
# Create a Maniphest task.
|
|
43
|
+
Phabricator::Maniphest::Task.create('title')
|
|
44
|
+
|
|
45
|
+
# Create a Maniphest task with more detail.
|
|
46
|
+
Phabricator::Maniphest::Task.create('title', 'description', ['Project'], 'normal')
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Contributing
|
|
50
|
+
|
|
51
|
+
Patches welcome! (:
|
|
52
|
+
|
|
53
|
+
For a list of Conduit methods available, see http://secure.phabricator.com/conduit.
|
data/lib/phabricator.rb
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
require 'phabricator/config'
|
|
2
|
+
require 'phabricator/version'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
module Phabricator
|
|
5
|
+
extend Phabricator::Config
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
require 'phabricator/conduit_client'
|
|
9
|
+
require 'phabricator/maniphest'
|
|
@@ -7,13 +7,16 @@ module Phabricator
|
|
|
7
7
|
include Singleton
|
|
8
8
|
|
|
9
9
|
def initialize
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
@host = Phabricator.host
|
|
11
|
+
@credentials = {
|
|
12
|
+
user: Phabricator.user,
|
|
13
|
+
cert: Phabricator.cert
|
|
14
|
+
}
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
# The config is incomplete; try to get the credentials off the ~/.arcrc
|
|
17
|
+
# file instead.
|
|
18
|
+
if @host.nil? || @credentials.values.any? {|v| v.nil?}
|
|
19
|
+
get_credentials_from_file
|
|
17
20
|
end
|
|
18
21
|
|
|
19
22
|
connect
|
|
@@ -25,10 +28,10 @@ module Phabricator
|
|
|
25
28
|
data = {
|
|
26
29
|
client: 'phabricator-ruby',
|
|
27
30
|
clientVersion: Phabricator::VERSION,
|
|
28
|
-
user: credentials[
|
|
29
|
-
host: host,
|
|
31
|
+
user: @credentials[:user],
|
|
32
|
+
host: @host,
|
|
30
33
|
authToken: token,
|
|
31
|
-
authSignature: Digest::SHA1.hexdigest("#{token}#{credentials[
|
|
34
|
+
authSignature: Digest::SHA1.hexdigest("#{token}#{@credentials[:cert]}")
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
response = JSON.parse(post('conduit.connect', data, __conduit__: true))
|
|
@@ -48,19 +51,29 @@ module Phabricator
|
|
|
48
51
|
|
|
49
52
|
private
|
|
50
53
|
|
|
54
|
+
def get_credentials_from_file
|
|
55
|
+
filename = File.expand_path('~/.arcrc')
|
|
56
|
+
|
|
57
|
+
if File.readable?(filename)
|
|
58
|
+
settings = JSON.parse(File.read(filename))
|
|
59
|
+
user_settings = settings['hosts'].first
|
|
60
|
+
|
|
61
|
+
@host = settings['config']['phabricator.uri']
|
|
62
|
+
@credentials = {
|
|
63
|
+
user: user_settings[1]['user'],
|
|
64
|
+
cert: user_settings[1]['cert']
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
raise 'No credentials passed in, and ~/.arcrc does not exist or is \
|
|
68
|
+
not readable.'
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
51
72
|
def post(method, data, opts={})
|
|
52
|
-
RestClient.post("#{host}
|
|
73
|
+
RestClient.post("#{@host}/api/#{method}", {
|
|
53
74
|
params: data.to_json,
|
|
54
75
|
output: 'json'
|
|
55
76
|
}.merge(opts))
|
|
56
77
|
end
|
|
57
|
-
|
|
58
|
-
def host
|
|
59
|
-
@settings[0]
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def credentials
|
|
63
|
-
@settings[1]
|
|
64
|
-
end
|
|
65
78
|
end
|
|
66
79
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
require 'phabricator/conduit_client'
|
|
2
|
+
require 'phabricator/project'
|
|
3
|
+
require 'phabricator/user'
|
|
3
4
|
|
|
4
5
|
module Phabricator::Maniphest
|
|
5
6
|
class Task
|
|
@@ -27,12 +28,14 @@ module Phabricator::Maniphest
|
|
|
27
28
|
attr_reader :id
|
|
28
29
|
attr_accessor :title, :description, :priority
|
|
29
30
|
|
|
30
|
-
def self.create(title, description=nil, projects=[], priority='normal', other={})
|
|
31
|
+
def self.create(title, description=nil, projects=[], priority='normal', owner=nil, ccs=[], other={})
|
|
31
32
|
response = JSON.parse(client.request(:post, 'maniphest.createtask', {
|
|
32
33
|
title: title,
|
|
33
34
|
description: description,
|
|
34
35
|
priority: Priority.send(priority),
|
|
35
|
-
projectPHIDs: projects.map {|p| Phabricator::Project.find_by_name(p).phid }
|
|
36
|
+
projectPHIDs: projects.map {|p| Phabricator::Project.find_by_name(p).phid },
|
|
37
|
+
ownerPHID: owner ? Phabricator::User.find_by_name(owner).phid : nil,
|
|
38
|
+
ccPHIDs: ccs.map {|c| Phabricator::User.find_by_name(c).phid }
|
|
36
39
|
}.merge(other)))
|
|
37
40
|
|
|
38
41
|
data = response['result']
|
data/lib/phabricator/project.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require 'phabricator/conduit_client'
|
|
2
2
|
|
|
3
3
|
module Phabricator
|
|
4
4
|
class Project
|
|
@@ -17,7 +17,9 @@ module Phabricator
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.find_by_name(name)
|
|
20
|
-
|
|
20
|
+
# Re-populate if we couldn't find it in the cache (this applies to
|
|
21
|
+
# if the cache is empty as well).
|
|
22
|
+
populate_all unless @@cached_projects[name]
|
|
21
23
|
|
|
22
24
|
@@cached_projects[name]
|
|
23
25
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'phabricator/conduit_client'
|
|
2
|
+
|
|
3
|
+
module Phabricator
|
|
4
|
+
class User
|
|
5
|
+
@@cached_users = {}
|
|
6
|
+
|
|
7
|
+
attr_reader :phid
|
|
8
|
+
attr_accessor :name
|
|
9
|
+
|
|
10
|
+
def self.populate_all
|
|
11
|
+
response = JSON.parse(client.request(:post, 'user.query'))
|
|
12
|
+
|
|
13
|
+
response['result'].each do |data|
|
|
14
|
+
user = User.new(data)
|
|
15
|
+
@@cached_users[user.name] = user
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.find_by_name(name)
|
|
21
|
+
# Re-populate if we couldn't find it in the cache (this applies to
|
|
22
|
+
# if the cache is empty as well).
|
|
23
|
+
populate_all unless @@cached_users[name]
|
|
24
|
+
|
|
25
|
+
@@cached_users[name]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def initialize(attributes)
|
|
29
|
+
@phid = attributes['phid']
|
|
30
|
+
@name = attributes['userName']
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def self.client
|
|
36
|
+
@client ||= Phabricator::ConduitClient.instance
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/phabricator/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phabricator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2014-
|
|
12
|
+
date: 2014-04-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rest-client
|
|
@@ -104,9 +104,11 @@ files:
|
|
|
104
104
|
- README.md
|
|
105
105
|
- lib/phabricator.rb
|
|
106
106
|
- lib/phabricator/conduit_client.rb
|
|
107
|
+
- lib/phabricator/config.rb
|
|
107
108
|
- lib/phabricator/maniphest.rb
|
|
108
109
|
- lib/phabricator/maniphest/task.rb
|
|
109
110
|
- lib/phabricator/project.rb
|
|
111
|
+
- lib/phabricator/user.rb
|
|
110
112
|
- lib/phabricator/version.rb
|
|
111
113
|
- phabricator.gemspec
|
|
112
114
|
- test/_lib.rb
|