class Wcc::ModelGenerator

Constants

VALID_MODELS

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/generators/wcc/model_generator.rb, line 15
def initialize(*)
  super

  return if VALID_MODELS.include?(singular)

  raise ArgumentError, "Model must be one of #{VALID_MODELS.to_sentence}"
end

Public Instance Methods

create_model_migrations() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 73
def create_model_migrations
  copy_file "#{singular}/migrations/generated_add_#{plural}.ts",
    "db/migrate/#{timestamp}01_generated_add_#{plural}.ts"

  Dir.glob("#{__dir__}/templates/#{singular}/migrations/*.rb").each do |f|
    copy_file f, "db/migrate/#{timestamp}_#{File.basename(f)}"
  end
end
drop_model_overrides_in_app_models() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 82
def drop_model_overrides_in_app_models
  directory "#{singular}/models", 'app/models'
end
ensure_initializer_exists() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 67
def ensure_initializer_exists
  return if inside('config/initializers') { File.exist?('wcc_contentful.rb') }

  copy_file 'wcc_contentful.rb', 'config/initializers/wcc_contentful.rb'
end
ensure_migration_tools_installed() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 23
def ensure_migration_tools_installed
  in_root do
    run 'npm init -y' unless File.exist?('package.json')
    package = JSON.parse(File.read('package.json'))
    deps = package['dependencies']

    unless deps.try(:[], '@watermarkchurch/contentful-migration').present?
      run 'npm install --save @watermarkchurch/contentful-migration ts-node ' \
        'typescript contentful-export'
    end
  end
end
ensure_wrapper_script_in_bin_dir() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 36
    def ensure_wrapper_script_in_bin_dir
      unless inside('bin') { File.exist?('contentful') }
        copy_file 'contentful_shell_wrapper', 'bin/contentful'
      end

      if inside('bin') { File.exist?('release') }
        release = inside('bin') { File.read('release') }
        unless release.include?('contentful migrate')
          insert_into_file('bin/release', after: 'bundle exec rake db:migrate') do
            <<~HEREDOC
              DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
              $DIR/contentful migrate -y
            HEREDOC
          end
        end
      else
        copy_file 'release', 'bin/release'
      end

      if in_root { File.exist?('Procfile') }
        procfile = in_root { File.read('Procfile') }
        unless procfile.include?('release:')
          insert_into_file('Procfile') do
            'release: bin/release'
          end
        end
      else
        copy_file 'Procfile'
      end
    end

Private Instance Methods

plural() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 92
def plural
  model.downcase.pluralize
end
singular() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 88
def singular
  model.downcase.singularize
end
timestamp() click to toggle source
# File lib/generators/wcc/model_generator.rb, line 96
def timestamp
  Time.now.strftime('%Y%m%d%H%M')
end