Class: SiteSettingsTask

Inherits:
Object
  • Object
show all
Defined in:
app/services/site_settings_task.rb

Class Method Summary collapse

Class Method Details

.directoriesObject



65
66
67
68
69
70
71
72
73
# File 'app/services/site_settings_task.rb', line 65

def self.directories
  directories = [Dir.pwd]
  SiteSettingsTask.directories_to_check.each do |d|
    if Dir.exist? SiteSettingsTask.directory_path(d)
      directories << SiteSettingsTask.directory_path(d)
    end
  end
  directories
end

.directories_to_checkObject



61
62
63
# File 'app/services/site_settings_task.rb', line 61

def self.directories_to_check
  %w[all-the-themes all-the-custom-themes all-the-plugins all-the-custom-plugins]
end

.directory_path(directory_name) ⇒ Object



52
53
54
55
56
57
58
59
# File 'app/services/site_settings_task.rb', line 52

def self.directory_path(directory_name)
  all_the_parent_dir = ENV["ALL_THE_PARENT_DIR"]
  if all_the_parent_dir
    File.expand_path(File.join(all_the_parent_dir, directory_name))
  else
    File.expand_path(File.join(Dir.pwd, "..", directory_name))
  end
end

.export_to_hash(include_defaults: false, include_hidden: false) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'app/services/site_settings_task.rb', line 4

def self.export_to_hash(include_defaults: false, include_hidden: false)
  site_settings = SiteSetting.all_settings(include_hidden: include_hidden)
  h = {}
  site_settings.each do |site_setting|
    next if site_setting[:default] == site_setting[:value] if !include_defaults
    h.store(site_setting[:setting].to_s, site_setting[:value])
  end
  h
end

.import(yml) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/services/site_settings_task.rb', line 14

def self.import(yml)
  h = SiteSettingsTask.export_to_hash(include_defaults: true, include_hidden: true)
  counts = { updated: 0, not_found: 0, errors: 0 }
  log = []

  site_settings = YAML.safe_load(yml)
  site_settings.each do |site_setting|
    key = site_setting[0]
    val = site_setting[1]
    if h.has_key?(key)
      if val != h[key] #only update if different
        begin
          result = SiteSetting.set_and_log(key, val)
          log << "Changed #{key} FROM: #{result.previous_value} TO: #{result.new_value}"
          counts[:updated] += 1
        rescue => e
          log << "ERROR: #{e.message}"
          counts[:errors] += 1
        end
      end
    else
      log << "NOT FOUND: existing site setting not found for #{key}"
      counts[:not_found] += 1
    end
  end
  [log, counts]
end

.namesObject



42
43
44
45
46
# File 'app/services/site_settings_task.rb', line 42

def self.names
  SiteSetting
    .all_settings(include_hidden: true)
    .map { |site_setting| site_setting[:setting].to_s }
end

.rg_installed?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'app/services/site_settings_task.rb', line 48

def self.rg_installed?
  !`which rg`.strip.empty?
end

.rg_search_count(term, directory) ⇒ Object



75
76
77
# File 'app/services/site_settings_task.rb', line 75

def self.rg_search_count(term, directory)
  `rg -l --no-ignore "#{term}" "#{directory}" -g '!config' -g '!db/migrate' | wc -l`.strip.to_i
end