hem 1.0.1.beta6 → 1.1.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +32 -45
- data/Hemfile +4 -2
- data/README.md +4 -0
- data/bin/hem +5 -6
- data/hem.gemspec +15 -15
- data/lib/hem.rb +47 -45
- data/lib/hem/asset_applicators/files.rb +1 -1
- data/lib/hem/cli.rb +36 -29
- data/lib/hem/error_handlers/debug.rb +1 -1
- data/lib/hem/error_handlers/friendly.rb +3 -3
- data/lib/hem/errors.rb +23 -12
- data/lib/hem/help_formatter.rb +12 -3
- data/lib/hem/helper/argument_parser.rb +30 -0
- data/lib/hem/helper/command.rb +2 -1
- data/lib/hem/helper/file_locator.rb +34 -7
- data/lib/hem/helper/shell.rb +0 -1
- data/lib/hem/helper/vm_command.rb +2 -2
- data/lib/hem/lib/host_check/vagrant.rb +2 -3
- data/lib/hem/lib/s3/sync.rb +2 -2
- data/lib/hem/lib/seed/project.rb +10 -13
- data/lib/hem/lib/seed/replacer.rb +9 -31
- data/lib/hem/lib/seed/template.rb +21 -0
- data/lib/hem/lib/vm/inspector.rb +1 -1
- data/lib/hem/patches/deepstruct.rb +4 -0
- data/lib/hem/patches/rake.rb +42 -11
- data/lib/hem/plugins.rb +129 -0
- data/lib/hem/setup.rb +6 -0
- data/lib/hem/tasks.rb +15 -0
- data/lib/hem/tasks/deps.rb +13 -14
- data/lib/hem/tasks/exec.rb +4 -2
- data/lib/hem/tasks/magento.rb +13 -275
- data/lib/hem/tasks/mysql.rb +16 -0
- data/lib/hem/tasks/ops.rb +2 -1
- data/lib/hem/tasks/plugin.rb +16 -0
- data/lib/hem/tasks/redis.rb +26 -0
- data/lib/hem/tasks/seed.rb +4 -2
- data/lib/hem/tasks/self.rb +7 -6
- data/lib/hem/tasks/tools.rb +1 -1
- data/lib/hem/tasks/vm.rb +8 -16
- data/lib/hem/util.rb +6 -16
- data/lib/hem/version.rb +12 -1
- data/lib/hobo/tasks/magento.rb +2 -1
- data/spec/hem/cli_spec.rb +1 -0
- data/spec/hem/helpers/argument_parser_spec.rb +57 -0
- data/spec/hem/lib/seed/project_spec.rb +1 -0
- data/spec/hem/lib/seed/replacer_spec.rb +12 -13
- data/spec/hem/lib/seed/seed_spec.rb +1 -0
- metadata +50 -42
- data/lib/hem/lib/github/api.rb +0 -48
- data/lib/hem/lib/github/client.rb +0 -52
- data/lib/hem/tasks/pr.rb +0 -45
data/lib/hem/lib/github/api.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Hem
|
2
|
-
module Lib
|
3
|
-
module Github
|
4
|
-
class Api
|
5
|
-
|
6
|
-
@connected = false
|
7
|
-
|
8
|
-
def initialize(opts = {})
|
9
|
-
@opts = {
|
10
|
-
:config_class => Hem::Config::File,
|
11
|
-
:user_config => Hem.user_config,
|
12
|
-
:ui => Hem.ui,
|
13
|
-
:client => Hem::Lib::Github::Client.new
|
14
|
-
}.merge! opts
|
15
|
-
end
|
16
|
-
|
17
|
-
def connect
|
18
|
-
config = @opts[:user_config]
|
19
|
-
config[:github] ||= {}
|
20
|
-
|
21
|
-
if config[:github][:token].nil?
|
22
|
-
@opts[:ui].info 'You do not have a stored Github token. Authenticate now to create one.'
|
23
|
-
username = @opts[:ui].ask 'Github username'
|
24
|
-
password = @opts[:ui].ask 'Github password', echo: false
|
25
|
-
|
26
|
-
config[:github][:token] = @opts[:client].get_token_for_credentials(username, password)
|
27
|
-
|
28
|
-
@opts[:config_class].save(Hem.user_config_file, config)
|
29
|
-
else
|
30
|
-
@opts[:client].authenticate_with_token(config[:github][:token])
|
31
|
-
# client = Octokit::Client.new(:access_token => config.github.token)
|
32
|
-
end
|
33
|
-
|
34
|
-
@connected = true
|
35
|
-
end
|
36
|
-
|
37
|
-
def create_pull_request(repo, source_branch, target_branch, title, body)
|
38
|
-
unless @connected
|
39
|
-
connect
|
40
|
-
end
|
41
|
-
|
42
|
-
@opts[:client].create_pull_request(repo, source_branch, target_branch, title, body)
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module Hem
|
2
|
-
module Lib
|
3
|
-
module Github
|
4
|
-
class Client
|
5
|
-
|
6
|
-
@client = nil
|
7
|
-
|
8
|
-
def initialize(opts = {})
|
9
|
-
require 'octokit'
|
10
|
-
@opts = {
|
11
|
-
:client_class => Octokit::Client
|
12
|
-
}.merge! opts
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_token_for_credentials(username, password)
|
16
|
-
begin
|
17
|
-
@client = @opts[:client_class].new(:login => username, :password => password)
|
18
|
-
token_response = @client.create_authorization(:scopes => ['repo'], :note => 'Hem')
|
19
|
-
return token_response.token.to_s
|
20
|
-
rescue Octokit::UnprocessableEntity => e
|
21
|
-
case e.errors[0][:code]
|
22
|
-
when 'already_exists'
|
23
|
-
raise Hem::GithubAuthenticationError.new 'You already created a token for Hem, please delete this from your Github account before continuing.'
|
24
|
-
else
|
25
|
-
raise Hem::Error.new e.message
|
26
|
-
end
|
27
|
-
rescue Exception => e
|
28
|
-
raise Hem::Error.new e.message
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def authenticate_with_token(token)
|
33
|
-
begin
|
34
|
-
@client = @opts[:client_class].new(:access_token => token)
|
35
|
-
rescue Exception => e
|
36
|
-
raise Hem::Error.new e.message
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def create_pull_request(repo, source_branch, target_branch, title, body)
|
41
|
-
if @client.nil?
|
42
|
-
raise Hem::Error.new 'Client is not created'
|
43
|
-
end
|
44
|
-
|
45
|
-
response = @client.create_pull_request(repo, source_branch, target_branch, title, body)
|
46
|
-
response[:html_url].to_s
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/lib/hem/tasks/pr.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
desc 'Perform pull request operations'
|
2
|
-
namespace :pr do
|
3
|
-
desc 'Create a new pull request'
|
4
|
-
task :create do
|
5
|
-
source_branch = Hem.ui.ask 'Source branch', default: (Hem::Helper.shell 'git rev-parse --abbrev-ref HEAD', :capture => true)
|
6
|
-
target_branch = Hem.ui.ask 'Target branch', default: 'develop'
|
7
|
-
|
8
|
-
pr_content = <<-prbody
|
9
|
-
# The line below this comment is the title of your pull request. Keep it short and on a single line.
|
10
|
-
PR_TITLE
|
11
|
-
|
12
|
-
# All text below this comment will appear as the body of the pull request.
|
13
|
-
# If your project has a DoD.md in the project root, it will be automatically included.
|
14
|
-
# Any line starting with a hash (comment) will be ignored
|
15
|
-
|
16
|
-
PR_DOD
|
17
|
-
prbody
|
18
|
-
|
19
|
-
pr_content['PR_TITLE'] = Hem::Helper.shell 'git log -1 --pretty=%B', :capture => true
|
20
|
-
|
21
|
-
dod_path = Hem::Helper.locate('DoD.md')
|
22
|
-
|
23
|
-
if dod_path && !dod_path.empty?
|
24
|
-
dod_file = File.open dod_path[0]
|
25
|
-
pr_content['PR_DOD'] = dod_file.read
|
26
|
-
dod_file.close
|
27
|
-
else
|
28
|
-
pr_content['PR_DOD'] = '# No DoD.md file found, add one to your project root.'
|
29
|
-
end
|
30
|
-
|
31
|
-
pr_body = Hem.ui.editor(pr_content).lines.reject{ |line| line[0] == '#' }.join
|
32
|
-
|
33
|
-
pr_title = pr_body.lines.to_a[0]
|
34
|
-
|
35
|
-
pr_body = pr_body.lines.to_a[1..-1].join
|
36
|
-
|
37
|
-
git_parts = Hem::Helper.parse_github_url(Hem.project_config.git_url)
|
38
|
-
repo = "#{git_parts[:owner]}/#{git_parts[:repo]}"
|
39
|
-
|
40
|
-
api = Hem::Lib::Github::Api.new
|
41
|
-
pr_url = api.create_pull_request(repo, target_branch, source_branch, pr_title, pr_body)
|
42
|
-
|
43
|
-
Hem::ui.success "Pull request created: #{pr_url}"
|
44
|
-
end
|
45
|
-
end
|