sparkler 0.0.1 → 0.2.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.
- data/bin/sparkler +1 -0
- data/lib/sparkler/actions.rb +13 -0
- data/lib/sparkler/app_builder.rb +102 -0
- data/lib/sparkler/generators/app_generator.rb +81 -1
- data/lib/sparkler/version.rb +1 -1
- data/templates/Gemfile_additions +28 -0
- data/templates/Procfile +2 -0
- data/templates/_flashes.html.haml +3 -0
- data/templates/application.css.sass +18 -0
- data/templates/application_layout.html.haml +23 -0
- data/templates/cucumber_javascript.rb +5 -0
- data/templates/database.yml.erb +10 -0
- data/templates/env +2 -0
- data/templates/gitignore_additions +4 -0
- data/templates/home.html.haml +5 -0
- data/templates/time_formats.rb +6 -0
- metadata +17 -5
data/bin/sparkler
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require File.expand_path(File.join('..', 'lib', 'sparkler', 'generators', 'app_generator'), File.dirname(__FILE__))
|
4
|
+
require File.expand_path(File.join('..', 'lib', 'sparkler', 'actions'), File.dirname(__FILE__))
|
4
5
|
require File.expand_path(File.join('..', 'lib', 'sparkler', 'app_builder'), File.dirname(__FILE__))
|
5
6
|
|
6
7
|
templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Sparkler
|
2
|
+
module Actions
|
3
|
+
def replace_in_file(relative_path, find, replace)
|
4
|
+
path = File.join(destination_root, relative_path)
|
5
|
+
contents = IO.read(path)
|
6
|
+
unless contents.gsub!(find, replace)
|
7
|
+
raise "#{find.inspect} not found in #{relative_path}"
|
8
|
+
end
|
9
|
+
File.open(path, "w") { |file| file.write(contents) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
data/lib/sparkler/app_builder.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Sparkler
|
2
2
|
class AppBuilder < Rails::AppBuilder
|
3
|
+
include Sparkler::Actions
|
3
4
|
|
4
5
|
def remove_public_index
|
5
6
|
remove_file 'public/index.html'
|
@@ -12,5 +13,106 @@ module Sparkler
|
|
12
13
|
def setup_staging_environment
|
13
14
|
run 'cp config/environments/production.rb config/environments/staging.rb'
|
14
15
|
end
|
16
|
+
|
17
|
+
def create_partials_directory
|
18
|
+
empty_directory 'app/views/application'
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_shared_flashes
|
22
|
+
copy_file '_flashes.html.haml', 'app/views/application/_flashes.html.haml'
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_application_layout
|
26
|
+
remove_file 'app/views/layouts/application.html.erb'
|
27
|
+
template 'application_layout.html.haml', 'app/views/layouts/application.html.haml', force: true
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_custom_gems
|
31
|
+
additions_path = find_in_source_paths 'Gemfile_additions'
|
32
|
+
new_gems = File.open(additions_path).read
|
33
|
+
inject_into_file 'Gemfile', "\n#{new_gems}", after: /gem 'jquery-rails'/
|
34
|
+
|
35
|
+
asset_gems = <<-END.gsub(/^ {6}/, '')
|
36
|
+
gem 'compass-rails', '~> 1.0.3'
|
37
|
+
gem 'zurb-foundation', '~> 3.0.9'
|
38
|
+
END
|
39
|
+
|
40
|
+
inject_into_file 'Gemfile', "\n#{asset_gems}", after: /gem 'uglifier'.*$/
|
41
|
+
end
|
42
|
+
|
43
|
+
def use_postgres_config_template
|
44
|
+
template 'database.yml.erb', 'config/database.yml', force: true
|
45
|
+
end
|
46
|
+
|
47
|
+
def setup_local_postgres
|
48
|
+
run 'initdb pg'
|
49
|
+
end
|
50
|
+
|
51
|
+
def ignore_local_postgres
|
52
|
+
append_file '.git/info/exclude', '/pg/'
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_database
|
56
|
+
pid = fork { exec 'postgres', '-D', 'pg' }
|
57
|
+
bundle_command 'exec rake db:create'
|
58
|
+
Process.kill "INT", pid
|
59
|
+
end
|
60
|
+
|
61
|
+
def setup_gitignore
|
62
|
+
gitignore_file = find_in_source_paths('gitignore_additions')
|
63
|
+
gitignore = File.open(gitignore_file).read
|
64
|
+
append_file '.gitignore', gitignore
|
65
|
+
end
|
66
|
+
|
67
|
+
def init_git
|
68
|
+
run 'git init'
|
69
|
+
end
|
70
|
+
|
71
|
+
def copy_miscellaneous_files
|
72
|
+
copy_file 'time_formats.rb', 'config/initializers/time_formats.rb'
|
73
|
+
copy_file 'Procfile'
|
74
|
+
end
|
75
|
+
|
76
|
+
def setup_high_voltage
|
77
|
+
empty_directory 'app/views/pages'
|
78
|
+
copy_file 'home.html.haml', 'app/views/pages/home.html.haml'
|
79
|
+
route "root to: 'high_voltage/pages#show', id: 'home'"
|
80
|
+
end
|
81
|
+
|
82
|
+
def setup_foundation
|
83
|
+
generate 'foundation:install'
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_foundation_to_application
|
87
|
+
remove_file 'app/assets/stylesheets/application.css'
|
88
|
+
copy_file 'application.css.sass', 'app/assets/stylesheets/application.css.sass'
|
89
|
+
end
|
90
|
+
|
91
|
+
def add_env_from_template
|
92
|
+
copy_file 'env', '.env'
|
93
|
+
end
|
94
|
+
|
95
|
+
def remove_routes_comment_lines
|
96
|
+
replace_in_file 'config/routes.rb', /Application\.routes\.draw do.*end/m, "Application.routes.draw do\nend"
|
97
|
+
end
|
98
|
+
|
99
|
+
def generate_cucumber
|
100
|
+
generate 'cucumber:install', '--rspec', '--capybara'
|
101
|
+
copy_file 'cucumber_javascript.rb', 'features/support/javascript.rb'
|
102
|
+
end
|
103
|
+
|
104
|
+
def configure_rspec
|
105
|
+
generators_config = <<-RUBY.gsub(/^ {6}/, '')
|
106
|
+
config.generators do |generate|
|
107
|
+
generate.test_framework :rspec
|
108
|
+
generate.helper false
|
109
|
+
generate.stylesheets false
|
110
|
+
generate.javascript_engine false
|
111
|
+
generate.view_specs false
|
112
|
+
end
|
113
|
+
RUBY
|
114
|
+
inject_into_class 'config/application.rb', 'Application', generators_config
|
115
|
+
generate 'rspec:install'
|
116
|
+
end
|
15
117
|
end
|
16
118
|
end
|
@@ -3,6 +3,9 @@ require 'rails/generators/rails/app/app_generator'
|
|
3
3
|
|
4
4
|
module Sparkler
|
5
5
|
class AppGenerator < Rails::Generators::AppGenerator
|
6
|
+
class_option :skip_test_unit, type: :boolean, aliases: '-T', default: true, desc: 'Skip Test::Unit files'
|
7
|
+
class_option :database, type: :string, aliases: '-d', default: 'postgresql', desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
|
8
|
+
class_option :local_database, type: :boolean, aliases: '--local-database', default: false, desc: "Create a pg folder in the application"
|
6
9
|
|
7
10
|
def finish_template
|
8
11
|
invoke :sparkler_customization
|
@@ -10,7 +13,18 @@ module Sparkler
|
|
10
13
|
end
|
11
14
|
|
12
15
|
def sparkler_customization
|
16
|
+
invoke :customize_gemfile
|
17
|
+
invoke :setup_database
|
13
18
|
invoke :remove_useless_files
|
19
|
+
invoke :remove_routes_comment_lines
|
20
|
+
invoke :setup_staging_environment
|
21
|
+
invoke :create_views_and_layouts
|
22
|
+
invoke :copy_miscellaneous_files
|
23
|
+
invoke :setup_foundation
|
24
|
+
invoke :setup_env
|
25
|
+
invoke :setup_cucumber
|
26
|
+
invoke :setup_rspec
|
27
|
+
invoke :setup_git
|
14
28
|
end
|
15
29
|
|
16
30
|
def remove_useless_files
|
@@ -18,10 +32,76 @@ module Sparkler
|
|
18
32
|
build :remove_rails_logo_image
|
19
33
|
end
|
20
34
|
|
35
|
+
def setup_database
|
36
|
+
if 'postgresql' == options[:database]
|
37
|
+
build :use_postgres_config_template
|
38
|
+
build :setup_local_postgres if options[:local_database]
|
39
|
+
end
|
40
|
+
build :create_database
|
41
|
+
end
|
42
|
+
|
21
43
|
def setup_staging_environment
|
22
44
|
say 'Setting up the staging environment'
|
23
45
|
build :setup_staging_environment
|
24
|
-
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_views_and_layouts
|
49
|
+
say 'Creating layouts and partials'
|
50
|
+
build :create_partials_directory
|
51
|
+
build :create_shared_flashes
|
52
|
+
build :create_application_layout
|
53
|
+
|
54
|
+
say 'Setting up High Voltage and a home page'
|
55
|
+
build :setup_high_voltage
|
56
|
+
end
|
57
|
+
|
58
|
+
def setup_foundation
|
59
|
+
say 'Generating Foundation'
|
60
|
+
build :setup_foundation
|
61
|
+
build :add_foundation_to_application
|
62
|
+
end
|
63
|
+
|
64
|
+
def customize_gemfile
|
65
|
+
say 'Setting up gems and bundling'
|
66
|
+
build :add_custom_gems
|
67
|
+
bundle_command 'install --binstubs --path vendor'
|
68
|
+
bundle_command 'package'
|
69
|
+
end
|
70
|
+
|
71
|
+
def setup_git
|
72
|
+
say 'Initalizing git repo'
|
73
|
+
build :setup_gitignore
|
74
|
+
build :init_git
|
75
|
+
build :ignore_local_postgres if options[:local_database]
|
76
|
+
end
|
77
|
+
|
78
|
+
def copy_miscellaneous_files
|
79
|
+
say 'Copying miscellaneous support files'
|
80
|
+
build :copy_miscellaneous_files
|
81
|
+
end
|
82
|
+
|
83
|
+
def setup_env
|
84
|
+
say 'Adding an .env file'
|
85
|
+
build :add_env_from_template
|
86
|
+
end
|
87
|
+
|
88
|
+
def setup_cucumber
|
89
|
+
say 'Installing and configuring Cucumber'
|
90
|
+
build :generate_cucumber
|
91
|
+
say "Don't forget to install chromedriver if you haven't already."
|
92
|
+
end
|
93
|
+
|
94
|
+
def setup_rspec
|
95
|
+
say 'Configuring Rspec'
|
96
|
+
build :configure_rspec
|
97
|
+
end
|
98
|
+
|
99
|
+
def remove_routes_comment_lines
|
100
|
+
build :remove_routes_comment_lines
|
101
|
+
end
|
102
|
+
|
103
|
+
def outro
|
104
|
+
say 'Congratulations! Your app is ready to go!'
|
25
105
|
end
|
26
106
|
|
27
107
|
def run_bundle
|
data/lib/sparkler/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
gem 'thin'
|
2
|
+
gem 'haml-rails'
|
3
|
+
gem 'high_voltage'
|
4
|
+
gem 'rdiscount'
|
5
|
+
gem 'airbrake'
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem 'heroku'
|
9
|
+
gem 'foreman'
|
10
|
+
end
|
11
|
+
|
12
|
+
group :development, :test do
|
13
|
+
gem 'rspec-rails', '~> 2.9.0'
|
14
|
+
gem 'dotenv'
|
15
|
+
end
|
16
|
+
|
17
|
+
group :test do
|
18
|
+
gem 'cucumber-rails', '1.3.0', :require => false
|
19
|
+
gem 'factory_girl_rails'
|
20
|
+
gem 'database_cleaner'
|
21
|
+
gem 'timecop'
|
22
|
+
gem 'shoulda-matchers'
|
23
|
+
gem 'launchy'
|
24
|
+
end
|
25
|
+
|
26
|
+
group :staging, :production do
|
27
|
+
gem 'newrelic_rpm'
|
28
|
+
end
|
data/templates/Procfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
@import foundation_and_overrides
|
2
|
+
|
3
|
+
body
|
4
|
+
background-color: darken(#fff, 5)
|
5
|
+
margin-top: 1em
|
6
|
+
|
7
|
+
header, #main, footer
|
8
|
+
background-color: #fff
|
9
|
+
|
10
|
+
header
|
11
|
+
@include border-radius(5px 5px 0 0)
|
12
|
+
|
13
|
+
footer
|
14
|
+
@include border-radius(0 0 5px 5px)
|
15
|
+
p
|
16
|
+
font-size: 80%
|
17
|
+
color: #aaa
|
18
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{charset: "utf-8"}
|
5
|
+
%meta{name: "viewport", content: "width=device-width, initial-scale=1.0"}
|
6
|
+
= content_for(:head)
|
7
|
+
%title= content_for?(:title) ? yield(:title) : "Untitled"
|
8
|
+
= stylesheet_link_tag "application"
|
9
|
+
= csrf_meta_tags
|
10
|
+
%body
|
11
|
+
#wrapper.container
|
12
|
+
%header.row
|
13
|
+
.columns.twelve
|
14
|
+
%h1 Header
|
15
|
+
#main.row
|
16
|
+
.columns.twelve
|
17
|
+
= render 'application/flashes'
|
18
|
+
= yield
|
19
|
+
%footer.row
|
20
|
+
.columns.twelve
|
21
|
+
%p © #{Date.today.year} Gaslight Software LLC. All Rights Reserved.
|
22
|
+
= javascript_include_tag "application"
|
23
|
+
= content_for(:javascript)
|
data/templates/env
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sparkler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-09-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70301467704640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.8
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70301467704640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70301451199300 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '1.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70301451199300
|
36
36
|
description: ''
|
37
37
|
email:
|
38
38
|
- chrism@gaslightsoftware.com
|
@@ -48,10 +48,22 @@ files:
|
|
48
48
|
- Rakefile
|
49
49
|
- bin/sparkler
|
50
50
|
- lib/sparkler.rb
|
51
|
+
- lib/sparkler/actions.rb
|
51
52
|
- lib/sparkler/app_builder.rb
|
52
53
|
- lib/sparkler/generators/app_generator.rb
|
53
54
|
- lib/sparkler/version.rb
|
54
55
|
- sparkler.gemspec
|
56
|
+
- templates/Gemfile_additions
|
57
|
+
- templates/Procfile
|
58
|
+
- templates/_flashes.html.haml
|
59
|
+
- templates/application.css.sass
|
60
|
+
- templates/application_layout.html.haml
|
61
|
+
- templates/cucumber_javascript.rb
|
62
|
+
- templates/database.yml.erb
|
63
|
+
- templates/env
|
64
|
+
- templates/gitignore_additions
|
65
|
+
- templates/home.html.haml
|
66
|
+
- templates/time_formats.rb
|
55
67
|
- test/lib/sparkler/version_test.rb
|
56
68
|
- test/test_helper.rb
|
57
69
|
homepage: https://github.com/gaslight/sparkler
|