Skip to content

coagulant/ruby-phabricator

Repository files navigation

ruby-phabricator

Build Status Coverage Status

Phabricator API Wrapper for Ruby.

Installation

  1. [Install Phabricator Arcanist] (http://www.phabricator.com/docs/phabricator/article/Arcanist_User_Guide.html#installing-arcanist).
  2. Launch arc install-certificate and follow instructions. You must have ~/.arcrc after this step.
  3. Clone this repo with $ git clone [email protected]:Melevir/ruby-phabricator.git.

Usage

Direct API request

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

Using shortcuts

Shortcuts are sets of commands that covers most usual user cases.

get_commit_status

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']

get_commits_branches

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

Console usage

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."}

For contributors

Todo

  • More shortcut functions
  • Wrap as a gem

About

Phabricator API Wrapper for Ruby

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages