Phabricator API Wrapper for Ruby.
- [Install Phabricator Arcanist] (http://www.phabricator.com/docs/phabricator/article/Arcanist_User_Guide.html#installing-arcanist).
- Launch
arc install-certificate
and follow instructions. You must have~/.arcrc
after this step. - Clone this repo with
$ git clone [email protected]:Melevir/ruby-phabricator.git
.
In your code require wrapper.rb
and use Phabricator API with make_api_call
method. For example:
commits = ["rPRJc58eef262b497647bdec510c2ca2dcbd15f9d4e5",]
commit_info = make_api_call 'diffusion.getcommits', {"commits" => commits}
commit_message = commit_info['result'].values[0]['commitMessage']
puts commit_message
Shortcuts are sets of commands that covers most usual user cases.
Returns statuses and phabricator urls of given commit.
require 'ruby-phabricator/shortcuts.rb'
project_sid = 'MYPRJ' # Phabricator project slug
changesets = [
'de21b90bfac6cf0cf71593d5b2feca05131b1f88',
'ebc0730753794f6266e94f3329d693adb71ab583'
] # commit's hashes, which statuses you need
arcrc_path = File.expand_path('./.arcrc') # Path to .arcrc file
data = get_commit_status project_sid, changesets, arcrc_path
# string representation of commit's status, e.g. 'accepted' or 'concerned'
commit1_status = data['de21b90bfac6cf0cf71593d5b2feca05131b1f88']['status']
# url to phabricator's page of the commit
commit2_url = data['ebc0730753794f6266e94f3329d693adb71ab583']['url']
Returns list of branches, that contain specified commit. This can't be done with Conduit, so the info is extracted from direct request to Phabricator page. It can be rather slow and requires additional auth data (username and cookie value):
require 'ruby-phabricator/shortcuts.rb'
project_sid = 'MYPRJ' # Phabricator project slug
changesets = [
'de21b90bfac6cf0cf71593d5b2feca05131b1f88',
'ebc0730753794f6266e94f3329d693adb71ab583'
] # commit's hashes, which branches you need
arcrc_path = File.expand_path('./.arcrc') # Path to .arcrc file
login = 'John'
auth_cookie = 'some_long_auth_hash'
branches = get_commits_branches project_sid, changesets, arcrc_path, login, auth_cookie_value
commit1_branches = branches['de21b90bfac6cf0cf71593d5b2feca05131b1f88'] # list of branches names
phabricator.rb
provides command-line interface to make_api_call
method. Sample usage:
$ cd /somewhere/ruby-phabricator/
$ ruby ./phabricator.rb conduit.ping
{"result"=>"dev", "error_code"=>nil, "error_info"=>nil}
$ ruby ./phabricator.rb --data='{"name": "PRJ"}' arcanist.projectinfo
{"result"=>nil, "error_code"=>"ERR-BAD-ARCANIST-PROJECT", "error_info"=>"No such project exists."}
- More shortcut functions
- Wrap as a gem