hem-tasks-magento2 2.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa408e4d64fc2ce0c78144c4bc85b4de304a0877
4
+ data.tar.gz: 45f71e8f79720594a365507cbcfe9547d8f96ea0
5
+ SHA512:
6
+ metadata.gz: 43600bd7b73558123f662262342df6c54ea3a2ef7c968d91c49046f75aae0c8ae247ad86c0937df6a1e5cf735999d2f61bd6eb8854de72f95be743b5d3583dec
7
+ data.tar.gz: 2499ed94e66d8327f8b384a0f3693682e9a18bee8a536654df448256f42db250702f3e56cabc96d3ab80c1d3402ad7644bc366c57bc021ed157992da51806b40
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rubocop.yml ADDED
@@ -0,0 +1,5 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.2
3
+
4
+ Metrics/LineLength:
5
+ Max: 120
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in hem-tasks-magento2.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Hem::Tasks::Magento2
2
+
3
+ Contains tasks for [Hem](https://github.com/inviqa/hem) to provide functionality
4
+ for Magento 2.* projects
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Hemfile:
9
+
10
+ ```ruby
11
+ plugins do
12
+ gem 'hem-tasks-magento2'
13
+ end
14
+ ```
15
+
16
+ ## Usage
17
+
18
+ Run the following to see usage:
19
+
20
+ ```bash
21
+ hem magento2
22
+ ```
23
+
24
+ ## Development
25
+
26
+ After checking out the repo, run `bundle install` to install dependencies.
27
+
28
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
29
+
30
+ ## Contributing
31
+
32
+ Bug reports and pull requests are welcome on GitHub at https://github.com/inviqa/hem-tasks-magento2. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
33
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler/gem_tasks'
2
+ task default: :spec
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'hem/tasks/magento2/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'hem-tasks-magento2'
9
+ spec.version = Hem::Tasks::Magento2::VERSION
10
+ spec.authors = ['Norbert Nagy', 'Kieren Evans']
11
+ spec.email = ['nnagy@inviqa.com', 'kevans+hem_tasks@inviqa.com']
12
+
13
+ spec.summary = 'Magento 2 tasks for Hem'
14
+ spec.description = 'Magento 2 tasks for Hem'
15
+ spec.homepage = ''
16
+ spec.licenses = ['MIT']
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|\.rubocop\.yml|Rakefile)/}) }
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.11'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rubocop', '~> 0.43.0'
24
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Cache related functionality'
5
+ namespace :cache do
6
+ desc 'Clean cache'
7
+ task :clean do
8
+ Hem.ui.title 'Cleaning cache'
9
+ run_command 'bin/magento cache:clean', realtime: true, indent: 2
10
+ Hem.ui.success('Cache cleaned')
11
+ end
12
+
13
+ desc 'Flush cache'
14
+ task :flush do
15
+ Hem.ui.title 'Cleaning cache'
16
+ run_command 'bin/magento cache:flush', realtime: true, indent: 2
17
+ Hem.ui.success('Cache flushed')
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Setup cache, session, varnish settings and magento mode variables'
5
+ task :configure do
6
+ Hem.ui.title('Updating Magento2 configuration')
7
+ configuration_file = File.join(Hem.project_config.vm.project_mount_path, 'configure-magento-config.php')
8
+ run_command "php #{configuration_file}", realtime: true, indent: 2
9
+
10
+ [File.join(Hem.project_path, 'var', 'cache'), File.join(Hem.project_path, 'var', 'page_cache')].each do |dir|
11
+ FileUtils.rm_rf("#{dir}/.", secure: true)
12
+ end
13
+
14
+ Hem.ui.success('Magento2 configuration update finished')
15
+ end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Development related functionality'
5
+ namespace :development do
6
+ desc 'Quickly create the asset symlinks for development mode'
7
+ task :asset_symlinks do
8
+ Hem.ui.title 'Creating asset symlinks to pub/static/'
9
+ run_command 'sudo php tools/magento2/create_development_symlinks.php', realtime: true, indent: 2
10
+ Hem.ui.success('Asset symlinks finished')
11
+ end
12
+
13
+ desc 'Compile the less files'
14
+ task :compile_less do
15
+ Hem.ui.title 'Compiling Less files for the en_GB frontend'
16
+ run_command 'bin/magento setup:static-content:deploy --no-javascript '\
17
+ '--no-images --no-html --no-misc --no-fonts --no-css '\
18
+ '--language en_GB --area frontend '\
19
+ '--theme Magento/luma --theme Magento/blank',
20
+ realtime: true,
21
+ indent: 2
22
+ Hem.ui.success('Compile finished')
23
+
24
+ Hem.ui.title 'Compiling Less files for the en_GB and en_US backend'
25
+ run_command 'bin/magento setup:static-content:deploy --no-javascript '\
26
+ '--no-images --no-html --no-misc --no-fonts --no-css '\
27
+ '--language en_GB --language en_US --area adminhtml',
28
+ realtime: true,
29
+ indent: 2
30
+ Hem.ui.success('Compile finished')
31
+ end
32
+
33
+ desc 'Compile the Dependency Injection container'
34
+ task :compile_di do
35
+ Hem.ui.title 'Compiling the Dependency Injection container'
36
+ run_command 'bin/magento setup:di:compile', realtime: true, indent: 2
37
+ Hem.ui.success('Compile finished')
38
+ end
39
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Index related functionality'
5
+ namespace :index do
6
+ desc 'Reindex indexers'
7
+ task :refresh do
8
+ Hem.ui.title 'Reindex indexers'
9
+ run_command 'bin/magento indexer:reindex', realtime: true, indent: 2
10
+ Hem.ui.success('Reindexing complete')
11
+ end
12
+ end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Magento2 installation related tasks'
5
+ namespace :install do
6
+ desc 'Create the vendor and bin directories'
7
+ task :create_vendor_dir do
8
+ Hem.ui.title 'Creating vendor directory'
9
+ FileUtils.mkdir_p(File.join(Hem.project_path, 'bin'))
10
+ FileUtils.mkdir_p(File.join(Hem.project_path, 'vendor'))
11
+ Hem.ui.success('Vendor directory created')
12
+ end
13
+
14
+ desc "Move the composer file to the project's root folder"
15
+ task :move_composer_json_file do
16
+ unless File.exist? File.join(Hem.project_path, 'composer.json')
17
+ Hem.ui.title 'Setup composer file'
18
+ target_file = File.join(Hem.project_path, 'composer.json')
19
+ FileUtils.cp Hem.project_config.composer_file, target_file
20
+ Hem.ui.success('Composer file copied to the correct place')
21
+ end
22
+ end
23
+
24
+ desc 'Installs Magento based on the install shell script'
25
+ task :install_magento do
26
+ magento_config = File.join(Hem.project_path, 'app', 'etc', 'env.php')
27
+ magento_installer = File.join(Hem.project_config.vm.project_mount_path, 'install-magento2.sh')
28
+
29
+ unless File.exist? magento_config
30
+ Rake::Task['magento2:install:set_permissions'].invoke
31
+
32
+ Hem.ui.title 'Installing Magento2'
33
+ run_command "sh #{magento_installer}", realtime: true, indent: 2
34
+ Hem.ui.success('Magento2 install finished')
35
+
36
+ Rake::Task['magento2:configure'].invoke
37
+ Rake::Task['magento2:sample_data:add'].invoke(from_install: true)
38
+ Rake::Task['magento2:setup_script:run'].invoke
39
+ Rake::Task['magento2:index:refresh'].invoke
40
+ Rake::Task['magento2:cache:clean'].invoke
41
+ Rake::Task['magento2:development:asset_symlinks'].invoke
42
+ Rake::Task['magento2:development:compile_less'].invoke
43
+ end
44
+
45
+ Rake::Task['magento2:install:set_permissions'].execute
46
+ Rake::Task['magento2:install:optimise_autoloader'].invoke
47
+ end
48
+
49
+ desc 'Optimise the composer autoloader for a speed boost'
50
+ task :optimise_autoloader do
51
+ Hem.ui.title 'Optimising composer autoloader'
52
+ run_command 'bin/composer.phar dump-autoload --optimize', realtime: true, indent: 2
53
+ Hem.ui.success('Composer optimisation finished')
54
+ end
55
+
56
+ desc 'Sets up magento permissions'
57
+ task :set_permissions do
58
+ Hem.ui.title 'Setup permissions'
59
+
60
+ magento_binfile = File.join(Hem.project_config.vm.project_mount_path, 'bin', 'magento')
61
+ magento_var_directory = File.join(Hem.project_config.vm.project_mount_path, 'var')
62
+ magento_media_directory = File.join(Hem.project_config.vm.project_mount_path, 'pub', 'media')
63
+ magento_static_directory = File.join(Hem.project_config.vm.project_mount_path, 'pub', 'static')
64
+
65
+ Hem.ui.title "Setup permissions - #{magento_binfile}"
66
+ run_command "sudo chmod +x #{magento_binfile}", realtime: true, indent: 2
67
+
68
+ [magento_var_directory].each do |dir|
69
+ Hem.ui.title "Setup permissions - #{dir}"
70
+ run_command "sudo setfacl -R -m 'u:apache:rwX' -m 'u:vagrant:rwX' '#{dir}'", realtime: true, indent: 2
71
+ run_command "sudo setfacl -dR -m 'u:apache:rwX' -m 'u:vagrant:rwX' '#{dir}'", realtime: true, indent: 2
72
+ end
73
+
74
+ [magento_media_directory, magento_static_directory].each do |dir|
75
+ Hem.ui.title "Setup permissions - #{dir}"
76
+ run_command "if [ -e '#{dir}' ]; then sudo find '#{dir}' -type d -exec chmod a+rwx {} + ; fi",
77
+ realtime: true,
78
+ indent: 2
79
+ run_command "if [ -e '#{dir}' ]; then sudo find '#{dir}' -type f -exec chmod a+rw {} + ; fi",
80
+ realtime: true,
81
+ indent: 2
82
+ end
83
+
84
+ Hem.ui.success('Permissions setup finished')
85
+ end
86
+ end
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Sample data related functionality'
5
+ namespace :sample_data do
6
+ def execute_if_defined(task_name)
7
+ Rake::Task[task_name].execute if Rake::Task.task_defined?(task_name)
8
+ end
9
+
10
+ desc 'Adds Sample data to Magento 2'
11
+ argument :from_install, optional: true, default: false
12
+ task :add do |_task_name, task_args|
13
+ sample_data_answer = 'no'
14
+ sample_data_answers = %w(yes no)
15
+ if Hem.project_config[:sample_data].nil? || !sample_data_answers.include?(Hem.project_config[:sample_data])
16
+ sample_data_answer = Hem.ui.ask_choice('Sample data', sample_data_answers, default: 'yes')
17
+ Hem.project_config[:sample_data] = sample_data_answer
18
+ Hem::Config::File.save(Hem.project_config_file, Hem.project_config)
19
+ end
20
+
21
+ # Return early if we aren't meant to install sample data
22
+ next unless sample_data_answer == 'yes'
23
+
24
+ Hem.ui.title 'Installing sample data'
25
+
26
+ args = ['php -d memory_limit=-1 bin/magento sampledata:deploy', realtime: true, indent: 2]
27
+ complete = false
28
+
29
+ unless maybe(Hem.project_config.tasks.deps.composer.disable_host_run)
30
+ check = Hem::Lib::HostCheck.check(filter: /php_present/)
31
+
32
+ if check[:php_present] == :ok
33
+ begin
34
+ shell(*args)
35
+
36
+ execute_if_defined('vm:rsync_mount_sync')
37
+
38
+ complete = true
39
+ rescue Hem::ExternalCommandError
40
+ Hem.ui.warning 'Installing sample data locally failed!'
41
+ end
42
+ end
43
+ end
44
+
45
+ unless complete
46
+ run(*args)
47
+
48
+ execute_if_defined('deps:sync:composer_files_from_guest')
49
+ execute_if_defined('deps:sync:vendor_directory_from_guest')
50
+ end
51
+
52
+ magento_var_directory = File.join(Hem.project_config.vm.project_mount_path, 'var')
53
+ run_command "sudo rm -rf #{magento_var_directory}/*", realtime: true, indent: 2
54
+
55
+ Rake::Task['magento2:install:set_permissions'].invoke
56
+ Rake::Task['magento2:setup_script:run'].invoke
57
+
58
+ unless task_args[:from_install]
59
+ Rake::Task['magento2:development:asset_symlinks'].invoke
60
+ Rake::Task['magento2:development:compile_less'].invoke
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ desc 'Setup script related functionality'
5
+ namespace :setup_script do
6
+ desc 'Run setup scripts'
7
+ task :run do
8
+ Hem.ui.title 'Running setup scripts'
9
+ run_command 'bin/magento setup:upgrade', realtime: true, indent: 2
10
+ Hem.ui.success('Setup scripts finished')
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ module Hem
2
+ module Tasks
3
+ module Magento2
4
+ VERSION = '2.0.0'.freeze
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # ^ Syntax hint
3
+
4
+ before 'vm:up', 'magento2:install:create_vendor_dir'
5
+ before 'vm:up', 'magento2:install:move_composer_json_file'
6
+ after 'vm:up', 'magento2:initialize-vm'
7
+
8
+ namespace :magento2 do
9
+ require_relative 'magento2/install'
10
+ require_relative 'magento2/configure'
11
+ require_relative 'magento2/sample_data'
12
+ require_relative 'magento2/setup_script'
13
+ require_relative 'magento2/index'
14
+ require_relative 'magento2/cache'
15
+ require_relative 'magento2/development'
16
+
17
+ desc 'Initializes Magento2 specifics on the virtual machine after a fresh build'
18
+ task 'initialize-vm': [
19
+ 'magento2:install:install_magento'
20
+ ]
21
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hem-tasks-magento2
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Norbert Nagy
8
+ - Kieren Evans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-10-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.11'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.11'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rubocop
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.43.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.43.0
56
+ description: Magento 2 tasks for Hem
57
+ email:
58
+ - nnagy@inviqa.com
59
+ - kevans+hem_tasks@inviqa.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".gitignore"
65
+ - ".rubocop.yml"
66
+ - Gemfile
67
+ - README.md
68
+ - Rakefile
69
+ - hem-tasks-magento2.gemspec
70
+ - lib/hem/tasks/magento2.rb
71
+ - lib/hem/tasks/magento2/cache.rb
72
+ - lib/hem/tasks/magento2/configure.rb
73
+ - lib/hem/tasks/magento2/development.rb
74
+ - lib/hem/tasks/magento2/index.rb
75
+ - lib/hem/tasks/magento2/install.rb
76
+ - lib/hem/tasks/magento2/sample_data.rb
77
+ - lib/hem/tasks/magento2/setup_script.rb
78
+ - lib/hem/tasks/magento2/version.rb
79
+ homepage: ''
80
+ licenses:
81
+ - MIT
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.4.8
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Magento 2 tasks for Hem
103
+ test_files: []