From c7f2466a292bf7009fcda81c219d901795178d47 Mon Sep 17 00:00:00 2001 From: pikesley Date: Thu, 25 Jan 2018 18:59:49 +0000 Subject: [PATCH 1/9] Transition to Bootstrap 4 --- lib/skellington/version.rb | 2 +- lib/templates/jekyll/post-run | 2 +- lib/templates/sinatra/post-run | 2 +- skellington.gemspec | 16 ++++++++-------- spec/hyphens_spec.rb | 2 +- spec/jekyll/bootstrap_4/bootstrap_4_spec.rb | 17 +++-------------- spec/jekyll/cli_spec.rb | 11 ++++++++++- spec/sinatra/cli_spec.rb | 2 +- 8 files changed, 26 insertions(+), 28 deletions(-) diff --git a/lib/skellington/version.rb b/lib/skellington/version.rb index 96bd605..7cb696e 100644 --- a/lib/skellington/version.rb +++ b/lib/skellington/version.rb @@ -1,3 +1,3 @@ module Skellington - VERSION = '0.8.9' + VERSION = '0.8.10' end diff --git a/lib/templates/jekyll/post-run b/lib/templates/jekyll/post-run index 53bf268..80e800b 100644 --- a/lib/templates/jekyll/post-run +++ b/lib/templates/jekyll/post-run @@ -7,7 +7,7 @@ Your new Jekyll site <%= @gen.camelname %> has been created <% end %> Now do - cd <%= @gen.wormname %> + cd <%= File.join @gen.path, @gen.wormname %> bundle bundle exec jekyll serve diff --git a/lib/templates/sinatra/post-run b/lib/templates/sinatra/post-run index 397b36c..a04888c 100644 --- a/lib/templates/sinatra/post-run +++ b/lib/templates/sinatra/post-run @@ -7,7 +7,7 @@ Your new Sinatra app <%= @gen.camelname %> has been created <% end %> Now do - cd <%= @gen.wormname %> + cd <%= File.join @gen.path, @gen.wormname %> bundle bundle exec rake diff --git a/skellington.gemspec b/skellington.gemspec index a72b11e..c7b0fe9 100644 --- a/skellington.gemspec +++ b/skellington.gemspec @@ -20,15 +20,15 @@ Gem::Specification.new do |spec| spec.add_dependency 'thor', '~> 0.19' spec.add_dependency 'erubis', '~> 2.7' - spec.add_dependency 'git', '~> 1.2' + spec.add_dependency 'git', '~> 1.3' spec.add_dependency 'bootstrap-sass' - spec.add_dependency 'bootstrap', '~> 4.0.0.alpha4' + spec.add_dependency 'bootstrap', '~> 4.0' - spec.add_development_dependency 'coveralls', '~> 0.7' - spec.add_development_dependency 'bundler', '~> 1.7' - spec.add_development_dependency 'rake', '~> 10.0' - spec.add_development_dependency 'rspec', '~> 3.1' - spec.add_development_dependency 'guard-rspec', '~> 4.5' + spec.add_development_dependency 'coveralls', '~> 0.8' + spec.add_development_dependency 'bundler', '~> 1.14' + spec.add_development_dependency 'rake', '~> 12.3' + spec.add_development_dependency 'rspec', '~> 3.7' + spec.add_development_dependency 'guard-rspec', '~> 4.7' spec.add_development_dependency 'curacao', '~> 0.1' - spec.add_development_dependency 'timecop', '~> 0.8' + spec.add_development_dependency 'timecop', '~> 0.9' end diff --git a/spec/hyphens_spec.rb b/spec/hyphens_spec.rb index 33fbcce..b77f0f6 100644 --- a/spec/hyphens_spec.rb +++ b/spec/hyphens_spec.rb @@ -16,7 +16,7 @@ module Skellington Now do - cd hyphenated_name + cd \.\/hyphenated_name bundle bundle exec rake diff --git a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb b/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb index d65f716..adfdb0d 100644 --- a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb +++ b/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb @@ -8,24 +8,13 @@ module Skellington subject.options = { 'framework' => 'jekyll', 'bootstrap' => 4 } subject.generate 'dummy-app' - # expect(Dir).to exist 'dummy_app/javascripts/bootstrap' - # expect('dummy_app/javascripts/bootstrap.min.js').to have_content ( - # """ - # /*! - # * Bootstrap v4.0.0-alpha.5 (https://getbootstrap.com) - # * Copyright 2011-2016 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - # * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - # */ - # """ - # ) - expect(Dir).to exist 'dummy_app/_sass/bootstrap' expect('dummy_app/_sass/bootstrap.scss').to have_content ( """ /*! - * Bootstrap v4.0.0-alpha.5 (https://getbootstrap.com) - * Copyright 2011-2016 The Bootstrap Authors - * Copyright 2011-2016 Twitter, Inc. + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ """ diff --git a/spec/jekyll/cli_spec.rb b/spec/jekyll/cli_spec.rb index 3286453..5fa2dcc 100644 --- a/spec/jekyll/cli_spec.rb +++ b/spec/jekyll/cli_spec.rb @@ -13,7 +13,7 @@ module Skellington Now do - cd dummy_app + cd \.\/dummy_app bundle bundle exec jekyll serve @@ -27,5 +27,14 @@ module Skellington You should also fill in your name in LICENSE.md /).to_stdout end + + context 'non-local path' do + it 'generates correct output' do + subject.options = { 'framework' => 'jekyll' } + expect { subject.generate 'some/path/dummy-app' }.to output(/ + cd some\/path\/dummy_app +/).to_stdout + end + end end end diff --git a/spec/sinatra/cli_spec.rb b/spec/sinatra/cli_spec.rb index 35799bd..34b7a75 100644 --- a/spec/sinatra/cli_spec.rb +++ b/spec/sinatra/cli_spec.rb @@ -16,7 +16,7 @@ module Skellington Now do - cd dummy_app + cd \.\/dummy_app bundle bundle exec rake From e5c0790111d30fb287151ef1e857f298fad66ca0 Mon Sep 17 00:00:00 2001 From: Sam Pikesley Date: Mon, 5 Feb 2018 19:06:59 +0000 Subject: [PATCH 2/9] Tests all passing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There’s still some residual bootstrap 3, though --- config/config.yaml | 5 +- lib/skellington.rb | 2 +- lib/skellington/generator.rb | 16 ++-- lib/templates/common/includes/header | 16 +--- lib/templates/common/includes/libs | 14 ++++ lib/templates/common/includes/nav | 35 +++------ lib/templates/common/sass/colours | 13 +++- lib/templates/common/sass/footer | 16 +--- lib/templates/common/sass/styles | 3 +- lib/templates/jekyll/_data/libs.yml | 13 +++- spec/jekyll/bootstrap/css_spec.rb | 37 +++++----- spec/jekyll/bootstrap_4/bootstrap_4_spec.rb | 13 +++- spec/jekyll/data/libs_spec.rb | 13 +++- spec/jekyll/layout/layout_spec.rb | 74 +++++++++---------- spec/sinatra/bootstrap/css_spec.rb | 18 ++++- .../bootstrap_4/public_bootstrap_4_spec.rb | 19 ++++- spec/sinatra/layout/layout_spec.rb | 35 +++------ 17 files changed, 175 insertions(+), 167 deletions(-) create mode 100644 lib/templates/common/includes/libs diff --git a/config/config.yaml b/config/config.yaml index 3afa5ed..9aa05ca 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -103,7 +103,6 @@ sinatra: jekyll: gems: github-pages: - # bootstrap: '4.0.0.alpha4' rake: files: @@ -118,6 +117,8 @@ jekyll: common: includes/nav _includes/footer.html: common: includes/footer + _includes/libs.html: + common: includes/libs _includes/ie-cruft.html: common: includes/ie-cruft css/styles.scss: @@ -126,8 +127,6 @@ jekyll: common: sass/variables _sass/colours.scss: common: sass/colours - _sass/nav.scss: - common: sass/nav _sass/palettes/default.scss: common: sass/palettes/default _sass/fonts.scss: diff --git a/lib/skellington.rb b/lib/skellington.rb index c5b246d..06ab604 100644 --- a/lib/skellington.rb +++ b/lib/skellington.rb @@ -3,7 +3,7 @@ require 'fileutils' require 'erubis' require 'git' -require 'bootstrap-sass' +require 'bootstrap' require 'skellington/version' require 'skellington/generator' diff --git a/lib/skellington/generator.rb b/lib/skellington/generator.rb index 2f70d8d..4c5305a 100644 --- a/lib/skellington/generator.rb +++ b/lib/skellington/generator.rb @@ -47,17 +47,15 @@ def generate def strap_boots if @framework == 'jekyll' - if @bootstrap == '4' - Object.send(:remove_const, :Bootstrap) - require 'bootstrap' - end + # Object.send(:remove_const, :Bootstrap) + require 'bootstrap' + end - root = "#{self.path}/#{self.wormname}" + root = "#{self.path}/#{self.wormname}" - FileUtils.mkdir_p "#{root}/_sass" - FileUtils.cp_r "#{Bootstrap.assets_path}/stylesheets/bootstrap", "#{root}/_sass" - FileUtils.cp "#{Bootstrap.assets_path}/stylesheets/_bootstrap.scss", "#{root}/_sass/bootstrap.scss" - end + FileUtils.mkdir_p "#{root}/_sass" + FileUtils.cp_r "#{Bootstrap.assets_path}/stylesheets/bootstrap", "#{root}/_sass" + FileUtils.cp "#{Bootstrap.assets_path}/stylesheets/_bootstrap.scss", "#{root}/_sass/bootstrap.scss" end def wormname diff --git a/lib/templates/common/includes/header b/lib/templates/common/includes/header index ac2f964..564d30e 100644 --- a/lib/templates/common/includes/header +++ b/lib/templates/common/includes/header @@ -12,21 +12,7 @@ <% when 'jekyll' %> {% include ie-cruft.html %} - {% for lib in site.data.libs.js %} - - - {% endfor %} - - {% for lib in site.data.libs.css %} - - - {% endfor %} - - {% for font in site.data.libs.fonts %} - - - {% endfor %} -<% end %> + {% include libs.html %}<% end %> <% prefix = '{{ site.baseurl }}' if @gen.framework == 'jekyll' %> diff --git a/lib/templates/common/includes/libs b/lib/templates/common/includes/libs new file mode 100644 index 0000000..a007dcb --- /dev/null +++ b/lib/templates/common/includes/libs @@ -0,0 +1,14 @@ +{% for lib in site.data.libs.js %} + + +{% endfor %} + +{% for lib in site.data.libs.css %} + + +{% endfor %} + +{% for font in site.data.libs.fonts %} + + +{% endfor %} diff --git a/lib/templates/common/includes/nav b/lib/templates/common/includes/nav index c938462..46ccfa4 100644 --- a/lib/templates/common/includes/nav +++ b/lib/templates/common/includes/nav @@ -1,27 +1,14 @@ <% if @gen.framework == 'jekyll' %> <% prefix = '{{ site.baseurl }}' %> <% end %> - + diff --git a/lib/templates/common/sass/colours b/lib/templates/common/sass/colours index 0e6f454..4e2db33 100644 --- a/lib/templates/common/sass/colours +++ b/lib/templates/common/sass/colours @@ -1,6 +1,6 @@ @import 'palettes/default'; -$brand-primary: $rgba-primary-0; +//$brand-primary: $rgba-primary-0; //$brand-complement: $rgba-complement-0; //$brand-secondary-1: $rgba-secondary-1-0; //$brand-secondary-2: $rgba-secondary-2-0; @@ -8,3 +8,14 @@ $brand-primary: $rgba-primary-0; $grey: rgb(127, 127, 127); $light-grey: lighten($grey, 25%); $dark-grey: darken($grey, 25%); + +$theme-colors: ( + primary: $rgba-primary-0, + secondary: $rgba-secondary-1-0, + // success: $green, + // info: $cyan, + // warning: $yellow, + // danger: $red, + // light: $gray-100, + // dark: $gray-800 +) diff --git a/lib/templates/common/sass/footer b/lib/templates/common/sass/footer index 66b178b..10cfb43 100644 --- a/lib/templates/common/sass/footer +++ b/lib/templates/common/sass/footer @@ -7,17 +7,6 @@ body { margin-bottom: $footer-height; } -<% if @gen.bootstrap == '4' %> -.footer { - position: absolute; - bottom: 0; - width: 100%; - height: $footer-height; - line-height: $footer-height; - text-align: center; - background: $brand-primary; -} -<% else %> .footer { position: absolute; bottom: 0; @@ -26,7 +15,7 @@ body { text-align: center; margin-top: $padding-large-vertical; - background: $brand-primary; + background: map-get($theme-colors, primary); color: white; height: $footer-height; @@ -35,9 +24,8 @@ body { ul { @extend .list-inline; } - + a { color: white; } } -<% end %> diff --git a/lib/templates/common/sass/styles b/lib/templates/common/sass/styles index 7ab96ce..2f6cd31 100644 --- a/lib/templates/common/sass/styles +++ b/lib/templates/common/sass/styles @@ -7,10 +7,9 @@ @import 'bootstrap'; @import 'footer'; -@import 'nav'; //@import 'github-corner'; h1 { - color: $brand-primary; + color: map-get($theme-colors, primary); font-family: $font-primary; } diff --git a/lib/templates/jekyll/_data/libs.yml b/lib/templates/jekyll/_data/libs.yml index ba0351b..1635c1e 100644 --- a/lib/templates/jekyll/_data/libs.yml +++ b/lib/templates/jekyll/_data/libs.yml @@ -1,15 +1,20 @@ js: - name: jquery - url: //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js + url: //code.jquery.com/jquery-3.2.1.slim.min.js + hash: sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN + - name: popper + url: //cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js + hash: sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q - name: bootstrap - url: //maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js + url: //maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js + hash: sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl + - name: fontawesome + url: //use.fontawesome.com/releases/v5.0.4/js/all.js css: - name: foo bar: //bar.com/baz.css fonts: - - name: fontawesome - url: //maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css - name: ubuntu url: //fonts.googleapis.com/css?family=Ubuntu+Mono diff --git a/spec/jekyll/bootstrap/css_spec.rb b/spec/jekyll/bootstrap/css_spec.rb index 7b04536..a59a5da 100644 --- a/spec/jekyll/bootstrap/css_spec.rb +++ b/spec/jekyll/bootstrap/css_spec.rb @@ -11,8 +11,9 @@ module Skellington expect('dummy_app/_sass/bootstrap.scss').to have_content ( """ /*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ """ @@ -35,7 +36,7 @@ module Skellington """ @import 'palettes/default'; - $brand-primary: $rgba-primary-0; + //$brand-primary: $rgba-primary-0; //$brand-complement: $rgba-complement-0; //$brand-secondary-1: $rgba-secondary-1-0; //$brand-secondary-2: $rgba-secondary-2-0; @@ -43,6 +44,17 @@ module Skellington $grey: rgb(127, 127, 127); $light-grey: lighten($grey, 25%); $dark-grey: darken($grey, 25%); + + $theme-colors: ( + primary: $rgba-primary-0, + secondary: $rgba-secondary-1-0, + // success: $green, + // info: $cyan, + // warning: $yellow, + // danger: $red, + // light: $gray-100, + // dark: $gray-800 + ) """ ) @@ -65,7 +77,7 @@ module Skellington text-align: center; margin-top: $padding-large-vertical; - background: $brand-primary; + background: map-get($theme-colors, primary); color: white; height: $footer-height; @@ -81,20 +93,6 @@ module Skellington } """ ) - - expect('dummy_app/_sass/nav.scss').to have_content ( - """ - .navbar-default { - .navbar-nav { - li { - a { - color: $brand-primary; - } - } - } - } - """ - ) end it 'sets up sass' do @@ -112,11 +110,10 @@ module Skellington @import 'bootstrap'; @import 'footer'; - @import 'nav'; //@import 'github-corner'; h1 { - color: $brand-primary; + color: map-get($theme-colors, primary); font-family: $font-primary; } """ diff --git a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb b/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb index adfdb0d..4163ce9 100644 --- a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb +++ b/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb @@ -23,7 +23,7 @@ module Skellington """ @import 'palettes/default'; - $brand-primary: $rgba-primary-0; + //$brand-primary: $rgba-primary-0; //$brand-complement: $rgba-complement-0; //$brand-secondary-1: $rgba-secondary-1-0; //$brand-secondary-2: $rgba-secondary-2-0; @@ -31,6 +31,17 @@ module Skellington $grey: rgb(127, 127, 127); $light-grey: lighten($grey, 25%); $dark-grey: darken($grey, 25%); + + $theme-colors: ( + primary: $rgba-primary-0, + secondary: $rgba-secondary-1-0, + // success: $green, + // info: $cyan, + // warning: $yellow, + // danger: $red, + // light: $gray-100, + // dark: $gray-800 + ) """ ) expect('dummy_app/_sass/fonts.scss').to have_content ( diff --git a/spec/jekyll/data/libs_spec.rb b/spec/jekyll/data/libs_spec.rb index 80da057..decf6c0 100644 --- a/spec/jekyll/data/libs_spec.rb +++ b/spec/jekyll/data/libs_spec.rb @@ -13,17 +13,22 @@ module Skellington """ js: - name: jquery - url: //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js + url: //code.jquery.com/jquery-3.2.1.slim.min.js + hash: sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN + - name: popper + url: //cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js + hash: sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q - name: bootstrap - url: //maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js + url: //maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js + hash: sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl + - name: fontawesome + url: //use.fontawesome.com/releases/v5.0.4/js/all.js css: - name: foo bar: //bar.com/baz.css fonts: - - name: fontawesome - url: //maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css - name: ubuntu url: //fonts.googleapis.com/css?family=Ubuntu+Mono """ diff --git a/spec/jekyll/layout/layout_spec.rb b/spec/jekyll/layout/layout_spec.rb index ea21067..60234ed 100644 --- a/spec/jekyll/layout/layout_spec.rb +++ b/spec/jekyll/layout/layout_spec.rb @@ -18,20 +18,7 @@ module Skellington {% include ie-cruft.html %} - {% for lib in site.data.libs.js %} - - - {% endfor %} - - {% for lib in site.data.libs.css %} - - - {% endfor %} - - {% for font in site.data.libs.fonts %} - - - {% endfor %} + {% include libs.html %} @@ -66,30 +53,41 @@ module Skellington expect('dummy_app/_includes/nav.html').to have_content ( """ - + + """ + ) + end + + it 'creates a JS libs section' do + subject.options = { 'framework' => 'jekyll' } + subject.generate 'dummy-app' + + expect('dummy_app/_includes/libs.html').to have_content ( + """ + {% for lib in site.data.libs.js %} + + + {% endfor %} + + {% for lib in site.data.libs.css %} + + + {% endfor %} + + {% for font in site.data.libs.fonts %} + + + {% endfor %} """ ) end diff --git a/spec/sinatra/bootstrap/css_spec.rb b/spec/sinatra/bootstrap/css_spec.rb index 0c3a82b..65d8fdb 100644 --- a/spec/sinatra/bootstrap/css_spec.rb +++ b/spec/sinatra/bootstrap/css_spec.rb @@ -12,7 +12,7 @@ module Skellington """ @import 'palettes/default'; - $brand-primary: $rgba-primary-0; + //$brand-primary: $rgba-primary-0; //$brand-complement: $rgba-complement-0; //$brand-secondary-1: $rgba-secondary-1-0; //$brand-secondary-2: $rgba-secondary-2-0; @@ -20,6 +20,17 @@ module Skellington $grey: rgb(127, 127, 127); $light-grey: lighten($grey, 25%); $dark-grey: darken($grey, 25%); + + $theme-colors: ( + primary: $rgba-primary-0, + secondary: $rgba-secondary-1-0, + // success: $green, + // info: $cyan, + // warning: $yellow, + // danger: $red, + // light: $gray-100, + // dark: $gray-800 + ) """ ) expect('dummy_app/public/sass/_fonts.scss').to have_content ( @@ -47,7 +58,7 @@ module Skellington text-align: center; margin-top: $padding-large-vertical; - background: $brand-primary; + background: map-get($theme-colors, primary); color: white; height: $footer-height; @@ -139,11 +150,10 @@ module Skellington @import 'bootstrap'; @import 'footer'; - @import 'nav'; //@import 'github-corner'; h1 { - color: $brand-primary; + color: map-get($theme-colors, primary); font-family: $font-primary; } """ diff --git a/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb b/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb index a152037..f473fcd 100644 --- a/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb +++ b/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb @@ -23,10 +23,23 @@ module Skellington position: absolute; bottom: 0; width: 100%; - height: $footer-height; - line-height: $footer-height; + text-align: center; - background: $brand-primary; + + margin-top: $padding-large-vertical; + background: map-get($theme-colors, primary); + color: white; + height: $footer-height; + + padding: $padding-large-vertical $padding-large-horizontal; + + ul { + @extend .list-inline; + } + + a { + color: white; + } } """ ) diff --git a/spec/sinatra/layout/layout_spec.rb b/spec/sinatra/layout/layout_spec.rb index c804c6b..26ac266 100644 --- a/spec/sinatra/layout/layout_spec.rb +++ b/spec/sinatra/layout/layout_spec.rb @@ -69,30 +69,17 @@ module Skellington expect('dummy_app/views/includes/nav.erb').to have_content ( """ - + """ ) end From 66af12b211f95595c2273f0539470503e20171e8 Mon Sep 17 00:00:00 2001 From: Sam Pikesley Date: Mon, 5 Feb 2018 20:09:26 +0000 Subject: [PATCH 3/9] Saving game --- .ruby-version | 1 + .../sinatra/views/includes/js-libs.erb | 25 ++++++--- skellington.gemspec | 1 - spec/jekyll/bootstrap_4/bootstrap_4_spec.rb | 54 ------------------- spec/sinatra/layout/includes_spec.rb | 25 ++++++--- 5 files changed, 39 insertions(+), 67 deletions(-) create mode 100644 .ruby-version delete mode 100644 spec/jekyll/bootstrap_4/bootstrap_4_spec.rb diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..437459c --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.5.0 diff --git a/lib/templates/sinatra/views/includes/js-libs.erb b/lib/templates/sinatra/views/includes/js-libs.erb index 1da5df0..beb1897 100644 --- a/lib/templates/sinatra/views/includes/js-libs.erb +++ b/lib/templates/sinatra/views/includes/js-libs.erb @@ -1,8 +1,21 @@ <%% -libs = { - jquery: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', - bootstrap: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js' -}.each_pair do |name, url| %> - - + { + jquery: { + url: '//code.jquery.com/jquery-3.2.1.slim.min.js', + hash: 'sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN' + }, + bootstrap: { + url: '//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js', + hash: 'sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q' + }, + popper: { + url: '//cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js', + hash: 'sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl' + }, + fontawesome: { + url: '//use.fontawesome.com/releases/v5.0.4/js/all.js' + } +}.each do |lib| %> + + <%% end %> diff --git a/skellington.gemspec b/skellington.gemspec index c7b0fe9..0151774 100644 --- a/skellington.gemspec +++ b/skellington.gemspec @@ -21,7 +21,6 @@ Gem::Specification.new do |spec| spec.add_dependency 'thor', '~> 0.19' spec.add_dependency 'erubis', '~> 2.7' spec.add_dependency 'git', '~> 1.3' - spec.add_dependency 'bootstrap-sass' spec.add_dependency 'bootstrap', '~> 4.0' spec.add_development_dependency 'coveralls', '~> 0.8' diff --git a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb b/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb deleted file mode 100644 index 4163ce9..0000000 --- a/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb +++ /dev/null @@ -1,54 +0,0 @@ -module Skellington - describe CLI, troublesome: true do - let :subject do - described_class.new - end - - it 'installs bootstrap 4' do - subject.options = { 'framework' => 'jekyll', 'bootstrap' => 4 } - subject.generate 'dummy-app' - - expect(Dir).to exist 'dummy_app/_sass/bootstrap' - expect('dummy_app/_sass/bootstrap.scss').to have_content ( - """ - /*! - * Bootstrap v4.0.0 (https://getbootstrap.com) - * Copyright 2011-2018 The Bootstrap Authors - * Copyright 2011-2018 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - """ - ) - expect('dummy_app/_sass/colours.scss').to have_content ( - """ - @import 'palettes/default'; - - //$brand-primary: $rgba-primary-0; - //$brand-complement: $rgba-complement-0; - //$brand-secondary-1: $rgba-secondary-1-0; - //$brand-secondary-2: $rgba-secondary-2-0; - - $grey: rgb(127, 127, 127); - $light-grey: lighten($grey, 25%); - $dark-grey: darken($grey, 25%); - - $theme-colors: ( - primary: $rgba-primary-0, - secondary: $rgba-secondary-1-0, - // success: $green, - // info: $cyan, - // warning: $yellow, - // danger: $red, - // light: $gray-100, - // dark: $gray-800 - ) - """ - ) - expect('dummy_app/_sass/fonts.scss').to have_content ( - """ - $font-primary: 'Ubuntu Mono'; - """ - ) - end - end -end diff --git a/spec/sinatra/layout/includes_spec.rb b/spec/sinatra/layout/includes_spec.rb index 50400e2..6dd9d7c 100644 --- a/spec/sinatra/layout/includes_spec.rb +++ b/spec/sinatra/layout/includes_spec.rb @@ -10,12 +10,25 @@ module Skellington expect('dummy_app/views/includes/js-libs.erb').to have_content ( """ <% - libs = { - jquery: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', - bootstrap: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js' - }.each_pair do |name, url| %> - - + { + jquery: { + url: '//code.jquery.com/jquery-3.2.1.slim.min.js', + hash: 'sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN' + }, + bootstrap: { + url: '//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js', + hash: 'sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q' + }, + popper: { + url: '//cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js', + hash: 'sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl' + }, + fontawesome: { + url: '//use.fontawesome.com/releases/v5.0.4/js/all.js' + } + }.each do |lib| %> + + <% end %> """ ) From 30dc456520faedabaee52c63870beb7289fa8948 Mon Sep 17 00:00:00 2001 From: Sam Pikesley Date: Mon, 5 Feb 2018 20:37:29 +0000 Subject: [PATCH 4/9] Again, saving game --- Rakefile | 34 +------------ config/config.yaml | 2 +- lib/skellington/generator.rb | 5 -- lib/templates/common/Gemfile | 6 --- lib/templates/sinatra/config.rb | 2 +- .../bootstrap_4/config_rb_bootstrap_4_spec.rb | 20 -------- .../bootstrap_4/gemfile_bootstrap_4_spec.rb | 39 --------------- .../bootstrap_4/public_bootstrap_4_spec.rb | 48 ------------------- spec/sinatra/root_files/config_rb_spec.rb | 2 +- spec/sinatra/root_files/gemfile_spec.rb | 2 +- 10 files changed, 6 insertions(+), 154 deletions(-) delete mode 100644 spec/sinatra/bootstrap_4/config_rb_bootstrap_4_spec.rb delete mode 100644 spec/sinatra/bootstrap_4/gemfile_bootstrap_4_spec.rb delete mode 100644 spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb diff --git a/Rakefile b/Rakefile index bd8fa43..4d5373b 100644 --- a/Rakefile +++ b/Rakefile @@ -3,36 +3,6 @@ require 'rspec/core/rake_task' require 'coveralls/rake/task' Coveralls::RakeTask.new +RSpec::Core::RakeTask.new -namespace :specs do - desc 'run the trustworthy specs' - task :safe do - RSpec::Core::RakeTask.new(:spec) do |t| - t.rspec_opts = "--tag ~troublesome" - end - Rake::Task['spec'].execute - end - - desc 'run the shonky specs' - task :shaky do - RSpec::Core::RakeTask.new(:spec) do |t| - t.rspec_opts = "--tag troublesome" - end - Rake::Task['spec'].execute - end - - desc 'run all the specs' - task :all do - RSpec::Core::RakeTask.new(:spec) do |t| - t.rspec_opts = "--tag troublesome" - end - - RSpec::Core::RakeTask.new(:spec) do |t| - t.rspec_opts = "--tag ~troublesome" - end - - Rake::Task['spec'].execute - end -end - -task :default => ['specs:all', 'coveralls:push'] +task :default => [:spec, 'coveralls:push'] diff --git a/config/config.yaml b/config/config.yaml index 9aa05ca..cfa35ab 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -15,7 +15,7 @@ sinatra: rack-tracker: rake: compass: - bootstrap-sass: + bootstrap: erubis: puma: test: diff --git a/lib/skellington/generator.rb b/lib/skellington/generator.rb index 4c5305a..7b356d5 100644 --- a/lib/skellington/generator.rb +++ b/lib/skellington/generator.rb @@ -46,11 +46,6 @@ def generate end def strap_boots - if @framework == 'jekyll' - # Object.send(:remove_const, :Bootstrap) - require 'bootstrap' - end - root = "#{self.path}/#{self.wormname}" FileUtils.mkdir_p "#{root}/_sass" diff --git a/lib/templates/common/Gemfile b/lib/templates/common/Gemfile index 4499ec3..2036499 100644 --- a/lib/templates/common/Gemfile +++ b/lib/templates/common/Gemfile @@ -1,9 +1,3 @@ -<% if @gen.framework == 'sinatra' %> - <% if @gen.bootstrap == '4' %> - <% @gen.gems['production'].delete 'bootstrap-sass' %> - <% @gen.gems['production']['bootstrap'] = '4.0.0.alpha5' %> - <% end %> -<% end %> source 'https://rubygems.org' ruby '<%= RUBY_VERSION %>' diff --git a/lib/templates/sinatra/config.rb b/lib/templates/sinatra/config.rb index 2f1643d..45a5c41 100644 --- a/lib/templates/sinatra/config.rb +++ b/lib/templates/sinatra/config.rb @@ -1,4 +1,4 @@ -require 'bootstrap<%= '-sass' if @gen.bootstrap == '3' %>' +require 'bootstrap' css_dir = 'public/css' sass_dir = 'public/sass' diff --git a/spec/sinatra/bootstrap_4/config_rb_bootstrap_4_spec.rb b/spec/sinatra/bootstrap_4/config_rb_bootstrap_4_spec.rb deleted file mode 100644 index a61fcfc..0000000 --- a/spec/sinatra/bootstrap_4/config_rb_bootstrap_4_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -module Skellington - describe CLI do - let :subject do - described_class.new - end - - it 'generates a config.rb file' do - subject.options = { 'bootstrap' => '4' } - subject.generate 'dummy-app' - expect('dummy_app/config.rb').to have_content ( - """ - require 'bootstrap' - - css_dir = 'public/css' - sass_dir = 'public/sass' - """ - ) - end - end -end diff --git a/spec/sinatra/bootstrap_4/gemfile_bootstrap_4_spec.rb b/spec/sinatra/bootstrap_4/gemfile_bootstrap_4_spec.rb deleted file mode 100644 index 5ba574d..0000000 --- a/spec/sinatra/bootstrap_4/gemfile_bootstrap_4_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -module Skellington - describe CLI do - let :subject do - described_class.new - end - - it 'generates a Gemfile' do - subject.options = { 'bootstrap' => '4' } - subject.generate 'dummy-app' - expect('dummy_app/Gemfile').to have_content ( - """ - source 'https://rubygems.org' - - /ruby '[0-9]*\\.[0-9]*\\.[0-9]*'/ - - gem 'sinatra', '~> 1.4' - gem 'rack-conneg' - gem 'rack-tracker' - gem 'rake' - gem 'compass' - gem 'erubis' - gem 'puma' - gem 'bootstrap', '~> 4.0.0.alpha5' - - group :test do - gem 'rspec' - gem 'guard' - gem 'guard-rspec' - gem 'guard-jasmine' - gem 'coveralls' - gem 'jasmine' - gem 'pry' - gem 'actionpack' - end - """ - ) - end - end -end diff --git a/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb b/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb deleted file mode 100644 index f473fcd..0000000 --- a/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -module Skellington - describe CLI do - let :subject do - described_class.new - end - - it 'generates placeholders for static files' do - subject.options = { 'bootstrap' => '4' } - subject.generate 'dummy-app' - - expect('dummy_app/public/sass/_footer.scss').to have_content ( - """ - html { - position: relative; - min-height: 100%; - } - - body { - margin-bottom: $footer-height; - } - - .footer { - position: absolute; - bottom: 0; - width: 100%; - - text-align: center; - - margin-top: $padding-large-vertical; - background: map-get($theme-colors, primary); - color: white; - height: $footer-height; - - padding: $padding-large-vertical $padding-large-horizontal; - - ul { - @extend .list-inline; - } - - a { - color: white; - } - } - """ - ) - end - end -end diff --git a/spec/sinatra/root_files/config_rb_spec.rb b/spec/sinatra/root_files/config_rb_spec.rb index 552d145..f6e95d7 100644 --- a/spec/sinatra/root_files/config_rb_spec.rb +++ b/spec/sinatra/root_files/config_rb_spec.rb @@ -8,7 +8,7 @@ module Skellington subject.generate 'dummy-app' expect('dummy_app/config.rb').to have_content ( """ - require 'bootstrap-sass' + require 'bootstrap' css_dir = 'public/css' sass_dir = 'public/sass' diff --git a/spec/sinatra/root_files/gemfile_spec.rb b/spec/sinatra/root_files/gemfile_spec.rb index 1bf8328..a7102ec 100644 --- a/spec/sinatra/root_files/gemfile_spec.rb +++ b/spec/sinatra/root_files/gemfile_spec.rb @@ -17,7 +17,7 @@ module Skellington gem 'rack-tracker' gem 'rake' gem 'compass' - gem 'bootstrap-sass' + gem 'bootstrap' gem 'erubis' gem 'puma' From 41de4bc28cc671cdaca4fb96ab60c5c2c8e3d7b6 Mon Sep 17 00:00:00 2001 From: Sam Pikesley Date: Mon, 5 Feb 2018 22:20:47 +0000 Subject: [PATCH 5/9] Delicate surgery impending --- config/config.yaml | 15 ++++++++++- lib/skellington/version.rb | 2 +- lib/templates/common/includes/footer | 2 +- lib/templates/common/includes/libs | 2 +- lib/templates/common/sass/footer | 3 --- lib/templates/jekyll/_data/libs.yml | 16 ++++------- lib/templates/sinatra/Rakefile | 6 ++--- lib/templates/sinatra/config.rb | 4 --- .../sinatra/views/includes/js-libs.erb | 27 ++++++------------- spec/jekyll/bootstrap/css_spec.rb | 3 --- spec/jekyll/layout/layout_spec.rb | 4 +-- spec/sinatra/bootstrap/css_spec.rb | 5 +--- spec/sinatra/layout/includes_spec.rb | 21 ++++++++------- spec/sinatra/layout/layout_spec.rb | 2 +- spec/sinatra/root_files/config_rb_spec.rb | 19 ------------- spec/sinatra/root_files/rakefile_spec.rb | 4 +-- 16 files changed, 51 insertions(+), 84 deletions(-) delete mode 100644 lib/templates/sinatra/config.rb delete mode 100644 spec/sinatra/root_files/config_rb_spec.rb diff --git a/config/config.yaml b/config/config.yaml index cfa35ab..4d137b8 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -41,7 +41,6 @@ sinatra: Procfile: .rspec: config.ru: - config.rb: config/config.yml: # the template has this name lib/app.rb: @@ -138,3 +137,17 @@ jekyll: js/app.js: outpath: app/wormname common: js/app.js + +bootstrap: + js: + - name: jquery + url: //code.jquery.com/jquery-3.2.1.slim.min.js + hash: sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN + - name: popper + url: //cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js + hash: sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q + - name: bootstrap + url: //maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js + hash: sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl + - name: fontawesome + url: //use.fontawesome.com/releases/v5.0.4/js/all.js diff --git a/lib/skellington/version.rb b/lib/skellington/version.rb index 7cb696e..0b12ca0 100644 --- a/lib/skellington/version.rb +++ b/lib/skellington/version.rb @@ -1,3 +1,3 @@ module Skellington - VERSION = '0.8.10' + VERSION = '0.9.0' end diff --git a/lib/templates/common/includes/footer b/lib/templates/common/includes/footer index 58bfc0c..6217a95 100644 --- a/lib/templates/common/includes/footer +++ b/lib/templates/common/includes/footer @@ -1,4 +1,4 @@ -