Module: OmniFocus::Github
- Defined in:
- lib/omnifocus/github.rb
Constant Summary collapse
- VERSION =
"1.7.0"- PREFIX =
"GH"
Instance Method Summary collapse
- #gh_client(account, auth, endpoints) ⇒ Object
- #omnifocus_git_param(name, default = nil, prefix = "omnifocus-github") ⇒ Object
- #populate_github_tasks ⇒ Object
- #process(account, client) ⇒ Object
Instance Method Details
#gh_client(account, auth, endpoints) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/omnifocus/github.rb', line 42 def gh_client account, auth, endpoints if account != "github" if endpoints[:api] && endpoints[:web] Octokit.configure do |c| c.api_endpoint = endpoints[:api] c.web_endpoint = endpoints[:web] end else raise ArgumentError, "api and web endpoint configs required for github enterprise" end end if auth[:user] && auth[:password] client = Octokit::Client.new(:login => auth[:user], :password => auth[:password]) client.user(auth[:user]) elsif auth[:user] && auth[:oauth] client = Octokit::Client.new :access_token => auth[:oauth] client.user.login else raise ArgumentError, "Missing authentication" end client end |
#omnifocus_git_param(name, default = nil, prefix = "omnifocus-github") ⇒ Object
37 38 39 40 |
# File 'lib/omnifocus/github.rb', line 37 def omnifocus_git_param name, default = nil, prefix = "omnifocus-github" param = `git config --global #{prefix}.#{name}`.chomp param.empty? ? default : param end |
#populate_github_tasks ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/omnifocus/github.rb', line 9 def populate_github_tasks processed = false omnifocus_git_param(:accounts, "github").split(/\s+/).each do |account| endpoints = {} endpoints[:api] = omnifocus_git_param(:api, nil, account) endpoints[:web] = omnifocus_git_param(:web, nil, account) # User + password is required auth = { :user => omnifocus_git_param(:user, nil, account), :password => omnifocus_git_param(:password, nil, account), :oauth => omnifocus_git_param("oauth-token", nil, account), } unless auth[:user] && (auth[:password] || auth[:oauth]) warn "Missing authentication parameters for account #{account}." next end processed = true account_label = account == "github" ? nil : account process(account_label, gh_client(account, auth, endpoints)) end raise "No accounts authenticated. Bailing." unless processed end |
#process(account, client) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/omnifocus/github.rb', line 68 def process account, client client.list_issues.each do |issue| pr = issue["pull_request"] && !issue["pull_request"]["diff_url"].nil? number = issue.number project = issue.repository.full_name.split("/").last ticket_id = "#{PREFIX}-#{project}##{number}" title = "#{ticket_id}: #{pr ? "[PR] " : ""}#{issue["title"]}" # HACK url = "https://github.com/#{issue.repository.full_name}/issues/#{number}" note = "#{url}\n\n#{issue["body"]}" if existing[ticket_id] then bug_db[project][ticket_id] = true next end bug_db[project][ticket_id] = [title, note] end end |