Skip to content

Commit

Permalink
fix up installer
Browse files Browse the repository at this point in the history
  • Loading branch information
stevedowney committed Jun 2, 2013
1 parent 0913baa commit 7423323
Show file tree
Hide file tree
Showing 11 changed files with 321 additions and 10 deletions.
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ GEM
eventmachine (1.0.3)
ffi (1.8.1)
formatador (0.2.4)
generator_spec (0.8.7)
activerecord (>= 3.0, < 4.0)
railties (>= 3.0, < 4.0)
guard (1.8.0)
formatador (>= 0.2.4)
listen (>= 1.0.0)
Expand Down Expand Up @@ -205,6 +208,7 @@ DEPENDENCIES
capybara-webkit
coveralls
database_cleaner
generator_spec
guard-rspec
guard-spork
jquery-rails
Expand Down
26 changes: 18 additions & 8 deletions lib/generators/user_announcements/install_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,36 @@ class InstallGenerator < Rails::Generators::Base
extend ActiveRecord::Generators::Migration
source_root File.join(File.dirname(__FILE__), "templates")

desc 'Copy user_announcements files'
class_option :bootstrap, aliases: '-b', type: :boolean, default: true, desc: 'Configure to use Bootstrap'
class_option :bootstrap_dtp, aliases: '-d', type: :boolean, default: true, desc: 'Include asset files for bootstrap datetimepicker'
desc %(Copy user_announcements files.
* assumes Bootstrap by default
* if you are not using Bootstrap or have your own copy of the Bootstrap datetimepicker assets, see:
* --no_bootstrap
* --no_bootstrap_dtp
)

class_option :no_bootstrap, aliases: '-n', type: :boolean, desc: 'Do not configure for Bootstrap; do not copy Bootstrap datetimepicker assets'
class_option :no_bootstrap_dtp, aliases: '-d', type: :boolean, desc: 'Do not copy Bootstrap datetimepicker assets'
class_option :readme, aliases: '-r', type: :boolean, desc: 'Display README and exit'

def readme_only
if options.readme?
readme_to_console
exit
end
puts "behavior: #{behavior}"
# if options.readme?
# readme_to_console
# exit
# end
end

def copy_bootstrap_datetime_picker_assets
if options.bootstrap_dtp?
return if options.readme?
unless options.no_bootstrap? || options.no_bootstrap_dtp?
copy_file 'app/assets/javascripts/user_announcements/bootstrap-datetimepicker.min.js'
copy_file 'app/assets/stylesheets/user_announcements/bootstrap-datetimepicker.min.css'
end
end

def install_base_files
return if options.readme?
copy_file 'app/assets/stylesheets/user_announcements/user_announcements.css.scss'
template 'config/initializers/user_announcements.rb'
migration_template "migration.rb", "db/migrate/create_user_announcement_tables.rb"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

UserAnnouncements.config do |config|

using_bootstrap = <%= options.bootstrap? %>
using_bootstrap = <%= !options.no_bootstrap? %>
if using_bootstrap
config.bootstrap = true
config.bootstrap_datetime_picker = true
config.bootstrap_datetime_picker = <%= !options.no_bootstrap_dtp? %>
config.styles = [['Yellow', ''], ['Red', 'alert-error'], ['Green', 'alert-success'], ['Blue', 'alert-info']]
else
config.bootstrap = false
Expand Down

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
table.ua-table {

td.status {
width: 1%;
text-align: center;
}

th.active {
width: 1%;
}

td.active {
text-align: center;
}

td.datetime {
width: 6em;
white-space: nowrap;
}

th.roles {
width: 1%;
}

td {
vertical-align: top;
}

&.non-bootstrap {
border-collapse:collapse;

th, td {
border: 1px solid black;
padding: 0.5em;
}
}
}

.announcement {

&.non-bootstrap {
background-color: #fcf8e3;
color: #c09853;
border-bottom: solid 1px black;
width: 100%;
padding: 10px;
text-align: center;

a {
font-size: 12px;
margin-left: 5px;
color: #6E5910;
}

&.yellow {
background-color: #fcf8e3;
color: #c09853;
}

&.red {
background-color: #f2dede;
/* border-color: #eed3d7;*/
color: #b94a48;
}

&.green {
background-color: #dff0d8;
/* border-color: #d6e9c6;*/
color: #468847;
}

&.blue {
background-color: #d9edf7;
/* border-color: #bce8f1;*/
color: #3a87ad;
}

}

}

form.announcement-detail {

p {
margin-top: 1em;
margin-bottom: 1em;
}

label {
margin-bottom: 0.4em;
}

.ua-datetimepicker {
input {
width: 8em;
}
}

p.datetime-select select {
width: 8em;
}

}
30 changes: 30 additions & 0 deletions spec/lib/generators/tmp/config/initializers/user_announcements.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# note: all options accept lambdas

UserAnnouncements.config do |config|

using_bootstrap = true

if using_bootstrap
config.bootstrap = true
config.bootstrap_datetime_picker = true
config.styles = [['Yellow', ''], ['Red', 'alert-error'], ['Green', 'alert-success'], ['Blue', 'alert-info']]
else
config.bootstrap = false
config.bootstrap_datetime_picker = true
config.styles = [['Yellow', 'yellow'], ['Red', 'red'], ['Green', 'green'], ['Blue', 'blue']]
end

# Announcement defaults
config.default_active = true
config.default_starts_at = lambda { Time.now.in_time_zone }
config.default_ends_at = lambda { 1.week.from_now.in_time_zone.end_of_day }
config.default_style = ''
# config.default_roles = ['admin']

# Roles
# config.roles = []
# config.roles = ['', 'admin']
# config.roles = [ ['Public', ''], ['Administrator', 'admin'] ]
# config.roles = lambda { MyRoleClass.all.map { |role| [role.name, role.id] } }

end
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class CreateUserAnnouncementTables < ActiveRecord::Migration
def change
create_table :announcements do |t|
t.text :message
t.datetime :starts_at
t.datetime :ends_at
t.boolean :active
t.text :roles
t.text :types
t.text :style
t.timestamps
end

create_table :hidden_announcements, :force => true do |t|
t.integer :user_id
t.integer :announcement_id
t.timestamps
end

add_index :hidden_announcements, :user_id
add_index :hidden_announcements, :announcement_id
end
end
106 changes: 106 additions & 0 deletions spec/lib/generators/user_announcements/install_generator_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
require "generator_spec/test_case"

require UserAnnouncements::Engine.root.join('lib/generators/user_announcements/install_generator')

describe UserAnnouncements::Generators::InstallGenerator do
include GeneratorSpec::TestCase
destination File.expand_path("../../tmp", __FILE__)
before { prepare_destination }
# after { rm_rf(destination_root) }

it "defaults" do
run_generator

destination_root.should have_structure {
directory 'app/assets' do
directory 'javascripts/user_announcements' do
file 'bootstrap-datetimepicker.min.js'
end
directory 'stylesheets/user_announcements' do
file 'bootstrap-datetimepicker.min.css'
file 'user_announcements.css.scss'
end
end

directory "config/initializers" do
file "user_announcements.rb" do
contains "using_bootstrap = true"
contains "config.bootstrap_datetime_picker = true"
end
end

directory 'db/migrate' do
migration 'create_user_announcement_tables.rb' do
contains 'create_table :announcements'
end
end
}
end

it "--no-bootstrap" do
run_generator %w(--no-bootstrap)

destination_root.should have_structure {
directory 'app/assets' do
directory 'javascripts/user_announcements' do
no_file 'bootstrap-datetimepicker.min.js'
end
directory 'stylesheets/user_announcements' do
no_file 'bootstrap-datetimepicker.min.css'
file 'user_announcements.css.scss'
end
end

directory "config/initializers" do
file "user_announcements.rb" do
contains "using_bootstrap = false"
contains "config.bootstrap_datetime_picker = true"
end
end

directory 'db/migrate' do
migration 'create_user_announcement_tables.rb' do
contains 'create_table :announcements'
end
end
}
end

it "--no-bootstrap_dtp" do
run_generator %w(--no-bootstrap-dtp)

destination_root.should have_structure {
directory 'app/assets' do
directory 'javascripts/user_announcements' do
no_file 'bootstrap-datetimepicker.min.js'
end
directory 'stylesheets/user_announcements' do
no_file 'bootstrap-datetimepicker.min.css'
file 'user_announcements.css.scss'
end
end

directory "config/initializers" do
file "user_announcements.rb" do
contains "using_bootstrap = true"
contains "config.bootstrap_datetime_picker = true"
end
end

directory 'db/migrate' do
migration 'create_user_announcement_tables.rb' do
contains 'create_table :announcements'
end
end
}
end

it "--readme" do
run_generator %w(--readme)

assert_no_directory 'app'
assert_no_directory 'config'
assert_no_directory 'db'
end

end
1 change: 1 addition & 0 deletions user_announcements.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Gem::Specification.new do |s|
s.add_development_dependency 'sass-rails', '~> 3.2'
s.add_development_dependency 'bootstrap-sass', '~> 2.3.1.0'
s.add_development_dependency "rspec-rails"
s.add_development_dependency "generator_spec"
s.add_development_dependency "capybara"
s.add_development_dependency "capybara-webkit"

Expand Down

0 comments on commit 7423323

Please sign in to comment.