boring_generators 0.3.0 → 0.8.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/.github/FUNDING.yml +12 -0
- data/.github/workflows/ci.yml +23 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +150 -0
- data/README.md +47 -7
- data/Rakefile +1 -0
- data/boring_generators.gemspec +2 -0
- data/exe/boring +5 -0
- data/lib/boring_generators.rb +1 -0
- data/lib/boring_generators/cli.rb +26 -0
- data/lib/boring_generators/version.rb +1 -1
- data/lib/generators/boring/bootstrap/install/install_generator.rb +2 -2
- data/lib/generators/boring/ci/circleci/install/install_generator.rb +31 -0
- data/lib/generators/boring/ci/circleci/install/templates/config.psql.yml.tt +48 -0
- data/lib/generators/boring/ci/circleci/install/templates/config.sql.yml.tt +48 -0
- data/lib/generators/boring/ci/circleci/install/templates/database.yml.ci.tt +14 -0
- data/lib/generators/boring/ci/github_action/install/install_generator.rb +45 -0
- data/lib/generators/boring/ci/github_action/install/templates/ci.yml.tt +49 -0
- data/lib/generators/boring/ci/travisci/install/install_generator.rb +23 -0
- data/lib/generators/boring/ci/travisci/install/templates/.travis.yml.tt +35 -0
- data/lib/generators/boring/devise/install/install_generator.rb +75 -0
- data/lib/generators/boring/favicon/build/build_generator.rb +120 -0
- data/lib/generators/boring/favicon/build/templates/favicon.html.erb.tt +19 -0
- data/lib/generators/boring/graphql/install/install_generator.rb +51 -0
- data/lib/generators/boring/graphql/install/templates/base_resolver.rb +2 -0
- data/lib/generators/boring/graphql/install/templates/hello_world_resolver.rb +11 -0
- data/lib/generators/boring/oauth/base_generator.rb +63 -0
- data/lib/generators/boring/oauth/facebook/install/install_generator.rb +42 -0
- data/lib/generators/boring/oauth/facebook/install/templates/README +20 -0
- data/lib/generators/boring/oauth/facebook/install/templates/omniauth.rb +3 -0
- data/lib/generators/boring/oauth/facebook/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/oauth/github/install/install_generator.rb +42 -0
- data/lib/generators/boring/oauth/github/install/templates/README +20 -0
- data/lib/generators/boring/oauth/github/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/oauth/google/install/install_generator.rb +36 -0
- data/lib/generators/boring/oauth/google/install/templates/README +20 -0
- data/lib/generators/boring/oauth/google/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/oauth/twitter/install/install_generator.rb +36 -0
- data/lib/generators/boring/oauth/twitter/install/templates/README +20 -0
- data/lib/generators/boring/oauth/twitter/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/pundit/install/install_generator.rb +85 -0
- data/lib/generators/boring/rubocop/install/install_generator.rb +37 -0
- data/lib/generators/boring/rubocop/install/templates/.rubocop.yml.tt +262 -0
- data/lib/generators/boring/simple_form/install/install_generator.rb +44 -0
- data/lib/generators/boring/tailwind/install/install_generator.rb +13 -12
- data/lib/generators/boring/tailwind/install/templates/README +13 -0
- data/lib/generators/boring/twilio/install/install_generator.rb +30 -0
- data/lib/generators/boring/twilio/install/templates/README +11 -0
- data/lib/generators/boring/twilio/install/templates/twilio.rb +4 -0
- metadata +2525 -5
- data/.travis.yml +0 -6
@@ -0,0 +1,48 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
ruby: circleci/ruby@1.1.1
|
5
|
+
<%- unless @skip_node -%>
|
6
|
+
node: circleci/node@2
|
7
|
+
<%- end -%>
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
parallelism: 1
|
12
|
+
docker:
|
13
|
+
- image: cimg/ruby:<%= @ruby_version %>-node
|
14
|
+
- image: circleci/postgres:11.2
|
15
|
+
environment:
|
16
|
+
POSTGRES_USER: postgres
|
17
|
+
POSTGRES_DB: <%= "#{@repository_name}_test" %>
|
18
|
+
environment:
|
19
|
+
BUNDLE_JOBS: "3"
|
20
|
+
BUNDLE_RETRY: "3"
|
21
|
+
PGHOST: 127.0.0.1
|
22
|
+
PGUSER: postgres
|
23
|
+
RAILS_ENV: test
|
24
|
+
steps:
|
25
|
+
- checkout
|
26
|
+
- ruby/install-deps
|
27
|
+
<%- unless @skip_node -%>
|
28
|
+
# Store bundle cache
|
29
|
+
- node/install-packages:
|
30
|
+
pkg-manager: yarn
|
31
|
+
cache-key: "yarn.lock"
|
32
|
+
<%- end -%>
|
33
|
+
- run: cp config/database.yml.ci config/database.yml
|
34
|
+
- run:
|
35
|
+
name: Wait for DB
|
36
|
+
command: dockerize -wait tcp://localhost:5432 -timeout 1m
|
37
|
+
- run:
|
38
|
+
name: Database setup
|
39
|
+
command: bundle exec rails db:schema:load --trace
|
40
|
+
- run:
|
41
|
+
name: Run test
|
42
|
+
command: bundle exec rails test
|
43
|
+
|
44
|
+
workflows:
|
45
|
+
version: 2
|
46
|
+
test:
|
47
|
+
jobs:
|
48
|
+
- test
|
@@ -0,0 +1,48 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
ruby: circleci/ruby@1.1.1
|
5
|
+
node: circleci/node@2
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
parallelism: 1
|
10
|
+
docker:
|
11
|
+
- image: cimg/ruby:<%= @ruby_version %>-node
|
12
|
+
environment:
|
13
|
+
MYSQL_DATABASE: <%= @test_database_name %>
|
14
|
+
environment:
|
15
|
+
BUNDLE_JOBS: "3"
|
16
|
+
BUNDLE_RETRY: "3"
|
17
|
+
RAILS_ENV: test
|
18
|
+
steps:
|
19
|
+
- checkout
|
20
|
+
- run:
|
21
|
+
name: Waiting for MySQL to be ready
|
22
|
+
command: |
|
23
|
+
for i in `seq 1 10`;
|
24
|
+
do
|
25
|
+
nc -z 127.0.0.1 3306 && echo Success && exit 0
|
26
|
+
echo -n .
|
27
|
+
sleep 1
|
28
|
+
done
|
29
|
+
echo Failed waiting for MySQL && exit 1
|
30
|
+
- ruby/install-deps
|
31
|
+
<%- unless @skip_node -%>
|
32
|
+
# Store bundle cache
|
33
|
+
- node/install-packages:
|
34
|
+
pkg-manager: yarn
|
35
|
+
cache-key: "yarn.lock"
|
36
|
+
<%- end -%>
|
37
|
+
- run:
|
38
|
+
name: Database setup
|
39
|
+
command: bundle exec rails db:schema:load --trace
|
40
|
+
- run:
|
41
|
+
name: Run test
|
42
|
+
command: bundle exec rails test
|
43
|
+
|
44
|
+
workflows:
|
45
|
+
version: 2
|
46
|
+
test:
|
47
|
+
jobs:
|
48
|
+
- test
|
@@ -0,0 +1,14 @@
|
|
1
|
+
default: &default
|
2
|
+
adapter: postgresql
|
3
|
+
host: 127.0.0.1
|
4
|
+
encoding: unicode
|
5
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>
|
6
|
+
|
7
|
+
development:
|
8
|
+
<<: *default
|
9
|
+
database: <%= "#{@repository_name}_development" %>
|
10
|
+
|
11
|
+
test:
|
12
|
+
<<: *default
|
13
|
+
user: postgres
|
14
|
+
database: <%= "#{@repository_name}_test" %>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Ci
|
5
|
+
module GithubAction
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
desc "Adds Github Action to the application"
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
9
|
+
|
10
|
+
RUBY_VERSION_FILE = ".ruby-version"
|
11
|
+
|
12
|
+
DEFAULT_RUBY_VERSION = ".ruby-version"
|
13
|
+
DEFAULT_NODE_VERSION = "10.13.0"
|
14
|
+
DEFAULT_REPOSITORY_NAME = "boring_generators"
|
15
|
+
|
16
|
+
class_option :ruby_version, type: :string, aliases: "-v",
|
17
|
+
desc: "Tell us the ruby version which you use for the application. Default to Ruby #{DEFAULT_RUBY_VERSION}, which will cause the action to use the version specified in the #{RUBY_VERSION_FILE} file."
|
18
|
+
class_option :node_version, type: :string, aliases: "-v",
|
19
|
+
desc: "Tell us the node version which you use for the application. Default to Node #{DEFAULT_NODE_VERSION}"
|
20
|
+
class_option :repository_name, type: :string, aliases: "-rn",
|
21
|
+
desc: "Tell us the repository name to be used as database name on GitHub Actions. Defaults to #{DEFAULT_REPOSITORY_NAME}"
|
22
|
+
|
23
|
+
def add_github_actions_configuration
|
24
|
+
@ruby_version = options[:ruby_version] ? options[:ruby_version] : DEFAULT_RUBY_VERSION
|
25
|
+
@node_version = options[:node_version] ? options[:node_version] : DEFAULT_NODE_VERSION
|
26
|
+
@repository_name = options[:repository_name] ? options[:repository_name] : DEFAULT_REPOSITORY_NAME
|
27
|
+
|
28
|
+
template("ci.yml", ".github/workflows/ci.yml")
|
29
|
+
|
30
|
+
if @ruby_version == DEFAULT_RUBY_VERSION && !ruby_version_file_exists?
|
31
|
+
say <<~WARNING, :red
|
32
|
+
WARNING: The action was configured to use the ruby version specified in the .ruby-version
|
33
|
+
file, but no such file was present. Either create an appropriate .ruby-version file, or
|
34
|
+
update .github/workflows/ci.yml to use an explicit ruby version.
|
35
|
+
WARNING
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def ruby_version_file_exists?
|
40
|
+
Pathname.new(destination_root).join(RUBY_VERSION_FILE).exist?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [push]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
name: Tests
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
services:
|
8
|
+
postgres:
|
9
|
+
image: postgres:11
|
10
|
+
env:
|
11
|
+
POSTGRES_USER: <%= @repository_name %>
|
12
|
+
POSTGRES_DB: <%= "#{@repository_name}_test" %>
|
13
|
+
POSTGRES_PASSWORD: ""
|
14
|
+
ports: ["5432:5432"]
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- name: Checkout code
|
18
|
+
uses: actions/checkout@v2
|
19
|
+
- name: <%= "Set up Ruby #{@ruby_version}" %>
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: <%= @ruby_version %>
|
23
|
+
bundler-cache: true
|
24
|
+
- name: Setup Node
|
25
|
+
uses: actions/setup-node@v1
|
26
|
+
with:
|
27
|
+
node-version: <%= @node_version %>
|
28
|
+
- name: Find yarn cache location
|
29
|
+
id: yarn-cache
|
30
|
+
run: echo "::set-output name=dir::$(yarn cache dir)"
|
31
|
+
- name: JS package cache
|
32
|
+
uses: actions/cache@v1
|
33
|
+
with:
|
34
|
+
path: ${{ steps.yarn-cache.outputs.dir }}
|
35
|
+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
36
|
+
restore-keys: |
|
37
|
+
${{ runner.os }}-yarn-
|
38
|
+
- name: Install packages
|
39
|
+
run: |
|
40
|
+
yarn install --pure-lockfile
|
41
|
+
- name: Setup test database
|
42
|
+
env:
|
43
|
+
RAILS_ENV: test
|
44
|
+
PGHOST: localhost
|
45
|
+
PGUSER: <%= @repository_name %>
|
46
|
+
run: |
|
47
|
+
bin/rails db:setup
|
48
|
+
- name: Run tests
|
49
|
+
run: bundle exec rails test # TODO: Update the test runner command as per your requirement.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Ci
|
5
|
+
module Travisci
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
desc "Adds Github Action to the application"
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
9
|
+
|
10
|
+
DEFAULT_RUBY_VERSION = "2.7.1"
|
11
|
+
|
12
|
+
class_option :ruby_version, type: :string, aliases: "-v",
|
13
|
+
desc: "Tell us the ruby version which you use for the application. Default to Ruby #{DEFAULT_RUBY_VERSION}"
|
14
|
+
|
15
|
+
def add_github_actions_configuration
|
16
|
+
@ruby_version = options[:ruby_version] ? options[:ruby_version] : DEFAULT_RUBY_VERSION
|
17
|
+
|
18
|
+
template(".travis.yml", ".travis.yml")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
rvm:
|
4
|
+
- <%= @ruby_version %>
|
5
|
+
|
6
|
+
services:
|
7
|
+
- postgresql
|
8
|
+
|
9
|
+
cache:
|
10
|
+
bundler: true
|
11
|
+
directories:
|
12
|
+
- node_modules
|
13
|
+
yarn: true
|
14
|
+
|
15
|
+
env:
|
16
|
+
global:
|
17
|
+
- RAILS_ENV=test
|
18
|
+
- NODE_ENV=test
|
19
|
+
|
20
|
+
before_install:
|
21
|
+
- nvm install --lts
|
22
|
+
|
23
|
+
install:
|
24
|
+
- node -v
|
25
|
+
- yarn
|
26
|
+
- bundle
|
27
|
+
|
28
|
+
before_script:
|
29
|
+
- bundle install --jobs=3 --retry=3
|
30
|
+
- bundle exec rails db:create
|
31
|
+
- bundle exec rails db:schema:load
|
32
|
+
|
33
|
+
script:
|
34
|
+
- bundle exec rails db:schema:load
|
35
|
+
- bundle exec rails test
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Devise
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc "Adds devise to the application"
|
7
|
+
|
8
|
+
DEFAULT_DEVISE_MODEL_NAME = "User"
|
9
|
+
|
10
|
+
class_option :model_name, type: :string, aliases: "-m",
|
11
|
+
desc: "Tell us the user model name which will be used for authentication. Defaults to #{DEFAULT_DEVISE_MODEL_NAME}"
|
12
|
+
class_option :skip_devise_view, type: :boolean, aliases: "-sv",
|
13
|
+
desc: "Skip generating devise views"
|
14
|
+
class_option :skip_devise_model, type: :boolean, aliases: "-sm",
|
15
|
+
desc: "Skip generating devise model"
|
16
|
+
|
17
|
+
def add_devise_gem
|
18
|
+
say "Adding devise gem", :green
|
19
|
+
devise_gem = <<~RUBY
|
20
|
+
\n
|
21
|
+
# for authentication
|
22
|
+
gem 'devise', '~> 4.7'
|
23
|
+
RUBY
|
24
|
+
append_to_file "Gemfile", devise_gem
|
25
|
+
Bundler.with_unbundled_env do
|
26
|
+
run "bundle install"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def generating_devise_defaults
|
31
|
+
say "Generating devise defaults", :green
|
32
|
+
Bundler.with_unbundled_env do
|
33
|
+
run "DISABLE_SPRING=1 bundle exec rails generate devise:install"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_devise_action_mailer_development_config
|
38
|
+
say "Adding devise Action Mailer development configuration", :green
|
39
|
+
insert_into_file "config/environments/development.rb", <<~RUBY, after: /Rails.application.configure do/
|
40
|
+
\n
|
41
|
+
\tconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
|
42
|
+
RUBY
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_devise_user_model
|
46
|
+
return if options[:skip_devise_model]
|
47
|
+
|
48
|
+
say "Adding devise user model", :green
|
49
|
+
model_name = options[:model_name] || DEFAULT_DEVISE_MODEL_NAME
|
50
|
+
|
51
|
+
Bundler.with_unbundled_env do
|
52
|
+
run "DISABLE_SPRING=1 bundle exec rails generate devise #{model_name}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def add_devise_authentication_filter_to_application_controller
|
57
|
+
insert_into_file "app/controllers/application_controller.rb", <<~RUBY, after: /class ApplicationController < ActionController::Base/
|
58
|
+
\n
|
59
|
+
\tbefore_action :authenticate_user!
|
60
|
+
RUBY
|
61
|
+
end
|
62
|
+
|
63
|
+
def add_devise_views
|
64
|
+
return if options[:skip_devise_view]
|
65
|
+
|
66
|
+
say "Adding devise views", :green
|
67
|
+
model_name = options[:model_name] || DEFAULT_DEVISE_MODEL_NAME
|
68
|
+
|
69
|
+
Bundler.with_unbundled_env do
|
70
|
+
run "DISABLE_SPRING=1 bundle exec rails generate devise:views #{model_name.pluralize}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Favicon
|
5
|
+
class BuildGenerator < Rails::Generators::Base
|
6
|
+
desc "Build favicons for all platforms"
|
7
|
+
source_root File.expand_path("templates", __dir__)
|
8
|
+
|
9
|
+
ICO_SIZES = %w(16 32)
|
10
|
+
APPLE_SIZES = %w(57 60 72 76 114 120 129 144 152)
|
11
|
+
APPLE_PRECOMPOSED_SIZES = %w(120 129 152)
|
12
|
+
SMALL_BREAK = 50
|
13
|
+
LARGE_BREAK = 150
|
14
|
+
MS_TILE_SIZES = %w(144)
|
15
|
+
FAVICON_DIR = "favicons"
|
16
|
+
FILE_FAVICO_DIR = "app/assets/images/#{FAVICON_DIR}"
|
17
|
+
DEFAULT_PRIMARY_COLOR = "#082472"
|
18
|
+
DEFAULT_FAVICON_LETTER = "B" # B for boring_generators :)
|
19
|
+
DEFAULT_IMAGE_PATH = "#{FILE_FAVICO_DIR}/template.png"
|
20
|
+
|
21
|
+
class_option :primary_color, type: :string, aliases: "-color",
|
22
|
+
desc: "Tell us the primary color to build favicon. Default to primary: #{DEFAULT_PRIMARY_COLOR}"
|
23
|
+
class_option :favico_letter, type: :string, aliases: "-letter",
|
24
|
+
desc: "Tell us the favicon letter to build favicon. Default to primary: #{DEFAULT_FAVICON_LETTER}"
|
25
|
+
class_option :font_file_path, type: :string, aliases: "-fp",
|
26
|
+
desc: "Tell us the font to be used generate favicon."
|
27
|
+
class_option :application_name, type: :string, aliases: "-app_name",
|
28
|
+
desc: "Tell us the application name to be used in favicon partial."
|
29
|
+
|
30
|
+
def build_favicon
|
31
|
+
@application_name = options[:application_name]
|
32
|
+
@primary_color = options[:primary_color]
|
33
|
+
|
34
|
+
unless /Version/m =~ (`convert -version`)
|
35
|
+
say <<~WARNING, :red
|
36
|
+
ERROR: You do not have ImageMagick installed.
|
37
|
+
WARNING
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_favicon_directory
|
42
|
+
unless File.exists?(FILE_FAVICO_DIR)
|
43
|
+
Dir.mkdir FILE_FAVICO_DIR
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def build_favicon_for_existing_template_image
|
48
|
+
return unless File.exist?(DEFAULT_IMAGE_PATH)
|
49
|
+
|
50
|
+
say "Converting template image to favicons..."
|
51
|
+
template_name = "#{FILE_FAVICO_DIR}/template.png"
|
52
|
+
template_small_name = "#{FILE_FAVICO_DIR}/template-small.png"
|
53
|
+
template_large_name = "#{FILE_FAVICO_DIR}/template-large.png"
|
54
|
+
template_small_name = template_name unless File.file?(template_small_name)
|
55
|
+
template_large_name = template_name unless File.file?(template_large_name)
|
56
|
+
ICO_SIZES.each do |size|
|
57
|
+
ico_template = template_name
|
58
|
+
ico_template = template_small_name if size.to_i <= SMALL_BREAK
|
59
|
+
ico_template = template_small_name if size.to_i >= LARGE_BREAK
|
60
|
+
(`convert #{ico_template} -resize #{size}x#{size} #{FILE_FAVICO_DIR}/favicon-#{size}x#{size}.ico`)
|
61
|
+
end
|
62
|
+
APPLE_SIZES.each do |size|
|
63
|
+
ico_template = template_name
|
64
|
+
ico_template = template_small_name if size.to_i <= SMALL_BREAK
|
65
|
+
ico_template = template_small_name if size.to_i >= LARGE_BREAK
|
66
|
+
(`convert #{ico_template} -resize #{size}x#{size} #{FILE_FAVICO_DIR}/apple-touch-icon-#{size}x#{size}.png`)
|
67
|
+
end
|
68
|
+
APPLE_PRECOMPOSED_SIZES.each do |size|
|
69
|
+
ico_template = template_name
|
70
|
+
ico_template = template_small_name if size.to_i <= SMALL_BREAK
|
71
|
+
ico_template = template_small_name if size.to_i >= LARGE_BREAK
|
72
|
+
(`convert #{ico_template} -resize #{size}x#{size} #{FILE_FAVICO_DIR}/apple-touch-icon-#{size}x#{size}-precomposed.png`)
|
73
|
+
end
|
74
|
+
MS_TILE_SIZES.each do |size|
|
75
|
+
ico_template = template_name
|
76
|
+
ico_template = template_small_name if size.to_i <= SMALL_BREAK
|
77
|
+
ico_template = template_small_name if size.to_i >= LARGE_BREAK
|
78
|
+
(`convert #{ico_template} -resize #{size}x#{size} #{FILE_FAVICO_DIR}/mstile-#{size}x#{size}.png`)
|
79
|
+
end
|
80
|
+
ico_template = template_name
|
81
|
+
ico_template = template_small_name if 152 <= SMALL_BREAK
|
82
|
+
ico_template = template_small_name if 152 >= LARGE_BREAK
|
83
|
+
(`convert #{ico_template} -resize 152x152 #{FILE_FAVICO_DIR}/apple-touch-icon.png`)
|
84
|
+
(`convert #{ico_template} -resize 152x152 #{FILE_FAVICO_DIR}/apple-touch-icon-precomposed.png`)
|
85
|
+
end
|
86
|
+
|
87
|
+
def generate_new_favicon_using_favico_letter
|
88
|
+
return if File.exist?(DEFAULT_IMAGE_PATH)
|
89
|
+
say "Creating favicons from application...", :green
|
90
|
+
|
91
|
+
favico_letter = options[:favico_letter] || @application_name.try(:first) || DEFAULT_FAVICON_LETTER
|
92
|
+
font_file_path = options[:font_file_path]
|
93
|
+
favicon_color = options[:primary_color] || DEFAULT_PRIMARY_COLOR
|
94
|
+
|
95
|
+
ICO_SIZES.each do |size|
|
96
|
+
(`convert -background "#{favicon_color}" -fill white -size #{size}x#{size} -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/favicon-#{size}x#{size}.ico`)
|
97
|
+
end
|
98
|
+
APPLE_SIZES.each do |size|
|
99
|
+
(`convert -background "#{favicon_color}" -fill white -size #{size}x#{size} -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/apple-touch-icon-#{size}x#{size}.png`)
|
100
|
+
end
|
101
|
+
APPLE_PRECOMPOSED_SIZES.each do |size|
|
102
|
+
(`convert -background "#{favicon_color}" -fill white -size #{size}x#{size} -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/apple-touch-icon-#{size}x#{size}-precomposed.png`)
|
103
|
+
end
|
104
|
+
MS_TILE_SIZES.each do |size|
|
105
|
+
(`convert -background "#{favicon_color}" -fill white -size #{size}x#{size} -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/mstile-#{size}x#{size}.png`)
|
106
|
+
end
|
107
|
+
(`convert -background "#{favicon_color}" -fill white -size 152x152 -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/apple-touch-icon.png`)
|
108
|
+
(`convert -background "#{favicon_color}" -fill white -size 152x152 -gravity center #{font_file_path ? "-font #{font_file_path}" : ""} label:#{favico_letter} #{FILE_FAVICO_DIR}/apple-touch-icon-precomposed.png`)
|
109
|
+
end
|
110
|
+
|
111
|
+
def add_favicon_partial
|
112
|
+
say "Copying favicon layout partial", :green
|
113
|
+
template("favicon.html.erb", "app/views/layouts/shared/_favicon.html.erb")
|
114
|
+
insert_into_file "app/views/layouts/application.html.erb", <<~RUBY, after: /head.*\n/
|
115
|
+
\t\t<%= render 'layouts/shared/favicon' %>
|
116
|
+
RUBY
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|