abak-flow 0.3.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,125 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- module Abak::Flow
3
- module ::Faraday
4
- class Response::RaiseOctokitError < Response::Middleware
5
- def error_message_with_trace(response)
6
- message = (response[:body].errors || []).map {|error| "=> #{error.code}: #{error.message}" }.join("\n")
7
-
8
- [error_message_without_trace(response), message].reject { |m| m.empty? }.join("\n\nДополнительные сообщения:\n")
9
- end
10
- alias_method :error_message_without_trace, :error_message
11
- alias_method :error_message, :error_message_with_trace
12
- end
13
- end
14
-
15
-
16
- class ::Hub::Runner
17
- def execute
18
- if args.noop?
19
- puts commands
20
- elsif not args.skip?
21
- if args.chained?
22
- execute_command_chain
23
- else
24
- %x{#{args.to_exec.join(' ')}}
25
- end
26
- end
27
- end
28
- end
29
-
30
- module ::Hub::Commands
31
- def pull_request(args)
32
- args.shift
33
- options = { }
34
- force = explicit_owner = false
35
- base_project = local_repo.main_project
36
- head_project = local_repo.current_project
37
-
38
- from_github_ref = lambda do |ref, context_project|
39
- if ref.index(':')
40
- owner, ref = ref.split(':', 2)
41
- project = github_project(context_project.name, owner)
42
- end
43
- [project || context_project, ref]
44
- end
45
-
46
- while arg = args.shift
47
- case arg
48
- when '-f'
49
- force = true
50
- when '-b'
51
- base_project, options[:base] = from_github_ref.call(args.shift, base_project)
52
- when '-h'
53
- head = args.shift
54
- explicit_owner = !!head.index(':')
55
- head_project, options[:head] = from_github_ref.call(head, head_project)
56
- when '-i'
57
- options[:issue] = args.shift
58
- when '-d'
59
- options[:body] = args.shift
60
- else
61
- if url = resolve_github_url(arg) and url.project_path =~ /^issues\/(\d+)/
62
- options[:issue] = $1
63
- base_project = url.project
64
- elsif !options[:title] then options[:title] = arg
65
- else
66
- abort "invalid argument: #{arg}"
67
- end
68
- end
69
- end
70
-
71
- options[:project] = base_project
72
- options[:base] ||= master_branch.short_name
73
-
74
- if tracked_branch = options[:head].nil? && current_branch.upstream
75
- if base_project == head_project and tracked_branch.short_name == options[:base]
76
- $stderr.puts "Aborted: head branch is the same as base (#{options[:base].inspect})"
77
- warn "(use `-h <branch>` to specify an explicit pull request head)"
78
- abort
79
- end
80
- end
81
- options[:head] ||= (tracked_branch || current_branch).short_name
82
-
83
- # when no tracking, assume remote branch is published under active user's fork
84
- user = github_user(true, head_project.host)
85
- if head_project.owner != user and !tracked_branch and !explicit_owner
86
- head_project = head_project.owned_by(user)
87
- end
88
-
89
- remote_branch = "#{head_project.remote}/#{options[:head]}"
90
- options[:head] = "#{head_project.owner}:#{options[:head]}"
91
-
92
- if !force and tracked_branch and local_commits = git_command("rev-list --cherry #{remote_branch}...")
93
- $stderr.puts "Aborted: #{local_commits.split("\n").size} commits are not yet pushed to #{remote_branch}"
94
- warn "(use `-f` to force submit a pull request anyway)"
95
- abort
96
- end
97
-
98
- if args.noop?
99
- puts "Would reqest a pull to #{base_project.owner}:#{options[:base]} from #{options[:head]}"
100
- exit
101
- end
102
-
103
- unless options[:title] or options[:issue]
104
- base_branch = "#{base_project.remote}/#{options[:base]}"
105
- changes = git_command "log --no-color --pretty=medium --cherry %s...%s" %
106
- [base_branch, remote_branch]
107
-
108
- options[:title], options[:body] = pullrequest_editmsg(changes) { |msg|
109
- msg.puts "# Requesting a pull to #{base_project.owner}:#{options[:base]} from #{options[:head]}"
110
- msg.puts "#"
111
- msg.puts "# Write a message for this pull request. The first block"
112
- msg.puts "# of text is the title and the rest is description."
113
- }
114
- end
115
-
116
- pull = create_pullrequest(options)
117
-
118
- args.executable = 'echo'
119
- args.replace [pull['html_url']]
120
- rescue HTTPExceptions
121
- display_http_exception("creating pull request", $!.response)
122
- exit 1
123
- end
124
- end
125
- end
@@ -1,13 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- module Abak::Flow
3
- class GithubClient
4
- def self.connect(config)
5
- return @github_connect unless @github_connect.nil?
6
-
7
- github_options = {:login => config.api_user, :oauth_token => config.api_token}
8
- github_options[:proxy] = config.proxy if config.proxy?
9
-
10
- @github_connect = Octokit::Client.new(github_options)
11
- end
12
- end
13
- end