abak-flow 0.3.2 → 1.0.0

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.
@@ -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