Class: Alchemy::Upgrader::FivePointZero

Inherits:
Alchemy::Upgrader show all
Includes:
Rails::Generators::Actions, Thor::Actions, Thor::Base
Defined in:
lib/alchemy/upgrader/five_point_zero.rb

Constant Summary

Constants included from Shell

Shell::COLORS

Class Method Summary collapse

Methods inherited from Alchemy::Upgrader

copy_new_config_file

Methods included from Shell

#add_todo, #desc, #display_todos, #log, silence!, silenced?, #todo, #todos, verbose!

Class Method Details

.add_npm_packageObject



58
59
60
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 58

def add_npm_package
  new.run "yarn add @alchemy_cms/admin@~#{Alchemy.version}"
end

.app_rootObject



68
69
70
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 68

def app_root
  @_app_root ||= Rails.root
end

.copy_alchemy_entry_pointObject



62
63
64
65
66
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 62

def copy_alchemy_entry_point
  webpack_config = YAML.load_file(app_root.join("config", "webpacker.yml"))[Rails.env]
  new.copy_file "alchemy_admin.js",
    app_root.join(webpack_config["source_path"], webpack_config["source_entry_path"], "alchemy/admin.js")
end

.install_gutentag_migrationsObject



18
19
20
21
22
23
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 18

def install_gutentag_migrations
  desc "Install Gutentag migrations"
  Rake::Task["gutentag:install:migrations"].invoke
  Alchemy::Upgrader::Tasks::HardenGutentagMigrations.new.patch_migrations
  Rake::Task["db:migrate"].invoke
end

.remove_layout_rootsObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 25

def remove_layout_roots
  desc "Remove layout root pages"
  layout_roots = Alchemy::Page.where(layoutpage: true).where("name LIKE 'Layoutroot for%'")
  if layout_roots.size.positive?
    log "Removing #{layout_roots.size} layout root pages."
    layout_roots.delete_all
    Alchemy::Page.where(layoutpage: true).update_all(parent_id: nil)
    log "Done.", :success
  else
    log "No layout root pages found.", :skip
  end
end

.remove_root_pageObject



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 38

def remove_root_page
  desc "Remove root page"
  root_page = Alchemy::Page.find_by(parent_id: nil, name: "Root")
  if root_page
    Alchemy::Page.where(parent_id: root_page.id).update_all(parent_id: nil)
    root_page.delete
    log "Done.", :success
  else
    log "Root page not found.", :skip
  end
end

.run_webpacker_installerObject



50
51
52
53
54
55
56
# File 'lib/alchemy/upgrader/five_point_zero.rb', line 50

def run_webpacker_installer
  # Webpacker does not create a package.json, but we need one
  unless File.exist? app_root.join("package.json")
    in_root { run "echo '{}' > package.json" }
  end
  new.rake("webpacker:install", abort_on_failure: true)
end