nesta 0.12.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +21 -0
  3. data/.gitignore +1 -0
  4. data/.gitmodules +0 -6
  5. data/CHANGES +99 -0
  6. data/Gemfile.lock +43 -39
  7. data/LICENSE +1 -1
  8. data/README.md +9 -14
  9. data/RELEASING.md +9 -7
  10. data/Rakefile +2 -2
  11. data/bin/nesta +5 -2
  12. data/config/deploy.rb.sample +1 -1
  13. data/lib/nesta/app.rb +1 -2
  14. data/lib/nesta/commands/build.rb +38 -0
  15. data/lib/nesta/commands/demo/content.rb +8 -10
  16. data/lib/nesta/commands/edit.rb +2 -6
  17. data/lib/nesta/commands/new.rb +11 -12
  18. data/lib/nesta/commands/plugin/create.rb +7 -9
  19. data/lib/nesta/commands/template.rb +20 -0
  20. data/lib/nesta/commands/theme/create.rb +8 -8
  21. data/lib/nesta/commands/theme/enable.rb +3 -5
  22. data/lib/nesta/commands/theme/install.rb +6 -10
  23. data/lib/nesta/commands.rb +9 -0
  24. data/lib/nesta/config.rb +49 -75
  25. data/lib/nesta/config_file.rb +29 -0
  26. data/lib/nesta/helpers.rb +0 -5
  27. data/lib/nesta/models.rb +33 -34
  28. data/lib/nesta/navigation.rb +0 -5
  29. data/lib/nesta/overrides.rb +32 -43
  30. data/lib/nesta/plugin.rb +0 -16
  31. data/lib/nesta/static/assets.rb +50 -0
  32. data/lib/nesta/static/html_file.rb +26 -0
  33. data/lib/nesta/static/site.rb +104 -0
  34. data/lib/nesta/system_command.rb +15 -0
  35. data/lib/nesta/version.rb +1 -1
  36. data/lib/nesta.rb +7 -4
  37. data/nesta.gemspec +5 -5
  38. data/templates/config/config.yml +28 -2
  39. data/templates/themes/README.md +1 -1
  40. data/templates/themes/views/master.sass +1 -1
  41. data/test/integration/atom_feed_test.rb +1 -1
  42. data/test/integration/commands/build_test.rb +53 -0
  43. data/test/integration/commands/demo/content_test.rb +8 -6
  44. data/test/integration/commands/edit_test.rb +4 -4
  45. data/test/integration/commands/new_test.rb +22 -51
  46. data/test/integration/commands/plugin/create_test.rb +7 -4
  47. data/test/integration/commands/theme/create_test.rb +8 -2
  48. data/test/integration/commands/theme/enable_test.rb +7 -1
  49. data/test/integration/commands/theme/install_test.rb +13 -9
  50. data/test/integration/overrides_test.rb +1 -1
  51. data/test/integration/sitemap_test.rb +1 -1
  52. data/test/support/temporary_files.rb +1 -1
  53. data/test/support/test_configuration.rb +2 -4
  54. data/test/unit/config_test.rb +25 -94
  55. data/test/unit/static/assets_test.rb +56 -0
  56. data/test/unit/static/html_file_test.rb +41 -0
  57. data/test/unit/static/site_test.rb +104 -0
  58. data/test/unit/system_command_test.rb +20 -0
  59. data/views/atom.haml +2 -2
  60. data/views/comments.haml +2 -2
  61. data/views/footer.haml +1 -1
  62. data/views/header.haml +2 -3
  63. data/views/layout.haml +2 -2
  64. data/views/master.sass +1 -1
  65. data/views/mixins.sass +2 -2
  66. data/views/normalize.scss +0 -1
  67. data/views/sitemap.haml +1 -1
  68. metadata +44 -31
  69. data/.hound.yml +0 -2
  70. data/.rspec +0 -1
  71. data/.travis.yml +0 -11
  72. data/lib/nesta/commands/command.rb +0 -57
  73. data/test/support/silence_commands_during_tests.rb +0 -5
  74. data/test/unit/commands_test.rb +0 -23
@@ -3,11 +3,17 @@ require 'test_helper'
3
3
  describe Nesta::Config do
4
4
  include TestConfiguration
5
5
 
6
- after do
7
- ENV.keys.each { |variable| ENV.delete(variable) if variable =~ /NESTA_/ }
6
+ it 'cannot be instantiated directly' do
7
+ assert_raises(NoMethodError) { Nesta::Config.new }
8
8
  end
9
9
 
10
- it 'returns default value for "Read more"' do
10
+ it 'exposes settings at the class level' do
11
+ Nesta::Config::SETTINGS.each do |setting|
12
+ assert Nesta::Config.respond_to?(setting), "should respond to '#{setting}'"
13
+ end
14
+ end
15
+
16
+ it 'defines default value for "Read more"' do
11
17
  assert_equal 'Continue reading', Nesta::Config.read_more
12
18
  end
13
19
 
@@ -15,100 +21,34 @@ describe Nesta::Config do
15
21
  assert_nil Nesta::Config.author
16
22
  end
17
23
 
18
- describe 'when settings defined in ENV' do
19
- before do
20
- @title = 'Title from ENV'
21
- ENV['NESTA_TITLE'] = @title
22
- end
23
-
24
- it 'falls back to config.yml' do
25
- stub_config('subtitle' => 'Subtitle in YAML file') do
26
- assert_equal 'Subtitle in YAML file', Nesta::Config.subtitle
27
- end
28
- end
29
-
30
- it 'overrides config.yml' do
31
- stub_config('title' => 'Title in YAML file') do
32
- assert_equal @title, Nesta::Config.title
33
- end
34
- end
35
-
36
- it 'knows how to cope with boolean values' do
37
- Nesta::Config.settings << 'a_boolean'
38
- begin
39
- ENV['NESTA_A_BOOLEAN'] = 'true'
40
- assert_equal true, Nesta::Config.a_boolean, 'should be true'
41
- ENV['NESTA_A_BOOLEAN'] = 'false'
42
- assert_equal false, Nesta::Config.a_boolean, 'should be false'
43
- ensure
44
- Nesta::Config.settings.pop
45
- ENV.delete('NESTA_A_BOOLEAN')
46
- end
47
- end
48
-
49
- it 'should return configured value for "Read more"' do
50
- ENV['NESTA_READ_MORE'] = 'Read on'
51
- begin
52
- assert_equal 'Read on', Nesta::Config.read_more
53
- ensure
54
- ENV.delete('NESTA_READ_MORE')
55
- end
24
+ it 'reads configuration from YAML' do
25
+ title = 'Site Title'
26
+ stub_config('subtitle' => title) do
27
+ assert_equal title, Nesta::Config.subtitle
56
28
  end
29
+ end
57
30
 
58
- it 'sets author hash from ENV' do
59
- name = 'Name from ENV'
60
- uri = 'URI from ENV'
61
- ENV['NESTA_AUTHOR__NAME'] = name
62
- ENV['NESTA_AUTHOR__URI'] = uri
31
+ it 'sets author hash from YAML' do
32
+ name = 'Name from YAML'
33
+ uri = 'URI from YAML'
34
+ stub_config('author' => { 'name' => name, 'uri' => uri }) do
63
35
  assert_equal name, Nesta::Config.author['name']
64
36
  assert_equal uri, Nesta::Config.author['uri']
65
37
  assert Nesta::Config.author['email'].nil?, 'should be nil'
66
38
  end
67
39
  end
68
40
 
69
- describe 'when settings only defined in config.yml' do
70
- before do
71
- @title = 'Title in YAML file'
72
- end
73
-
74
- it 'reads configuration from YAML' do
75
- stub_config('subtitle' => @title) do
76
- assert_equal @title, Nesta::Config.subtitle
77
- end
78
- end
79
-
80
- it 'sets author hash from YAML' do
81
- name = 'Name from YAML'
82
- uri = 'URI from YAML'
83
- stub_config('author' => { 'name' => name, 'uri' => uri }) do
84
- assert_equal name, Nesta::Config.author['name']
85
- assert_equal uri, Nesta::Config.author['uri']
86
- assert Nesta::Config.author['email'].nil?, 'should be nil'
87
- end
88
- end
89
-
90
- it 'overrides top level settings with environment specific settings' do
91
- config = {
92
- 'content' => 'general/path',
93
- 'test' => { 'content' => 'rack_env_specific/path' }
94
- }
95
- stub_config(config) do
96
- assert_equal 'rack_env_specific/path', Nesta::Config.content
97
- end
41
+ it 'overrides top level settings with environment specific settings' do
42
+ config = {
43
+ 'content' => 'general/path',
44
+ 'test' => { 'content' => 'rack_env_specific/path' }
45
+ }
46
+ stub_config(config) do
47
+ assert_equal 'rack_env_specific/path', Nesta::Config.content
98
48
  end
99
49
  end
100
50
 
101
51
  describe 'Nesta::Config.fetch' do
102
- it 'retrieves settings from environment' do
103
- ENV['NESTA_MY_SETTING'] = 'value in ENV'
104
- begin
105
- assert_equal 'value in ENV', Nesta::Config.fetch('my_setting')
106
- assert_equal 'value in ENV', Nesta::Config.fetch(:my_setting)
107
- ensure
108
- ENV.delete('NESTA_MY_SETTING')
109
- end
110
- end
111
-
112
52
  it 'retrieves settings from YAML' do
113
53
  stub_config('my_setting' => 'value in YAML') do
114
54
  assert_equal 'value in YAML', Nesta::Config.fetch('my_setting')
@@ -125,14 +65,5 @@ describe Nesta::Config do
125
65
  it 'allows default values to be set' do
126
66
  assert_equal 'default', Nesta::Config.fetch('no such setting', 'default')
127
67
  end
128
-
129
- it 'copes with non-truthy boolean values' do
130
- ENV['NESTA_SETTING'] = 'false'
131
- begin
132
- assert_equal false, Nesta::Config.fetch('setting')
133
- ensure
134
- ENV.delete('NESTA_SETTING')
135
- end
136
- end
137
68
  end
138
69
  end
@@ -0,0 +1,56 @@
1
+ require 'test_helper'
2
+
3
+ require_relative '../../../lib/nesta/static/assets'
4
+
5
+ describe 'Assets' do
6
+ include TestConfiguration
7
+
8
+ after do
9
+ remove_temp_directory
10
+ end
11
+
12
+ it 'is happy if attachments directory not present' do
13
+ in_temporary_project do |project_root|
14
+ stub_config('content' => File.join(project_root, 'content')) do
15
+ Nesta::Static::Assets.new('dist').copy_attachments
16
+ end
17
+ end
18
+ end
19
+
20
+ it 'copies attachments into build directory' do
21
+ build_dir = 'dist'
22
+ attachment = 'image.jpeg'
23
+
24
+ in_temporary_project do |project_root|
25
+ stub_config('content' => File.join(project_root, 'content')) do
26
+ FileUtils.mkdir_p(Nesta::Config.attachment_path)
27
+ open(File.join(Nesta::Config.attachment_path, attachment), 'w')
28
+
29
+ Nesta::Static::Assets.new(build_dir).copy_attachments
30
+
31
+ assert_exists_in_project File.join(build_dir, 'attachments', attachment)
32
+ end
33
+ end
34
+ end
35
+
36
+ it 'is happy if public directory not present' do
37
+ in_temporary_project do |project_root|
38
+ Nesta::Static::Assets.new('dist').copy_public_folder
39
+ end
40
+ end
41
+
42
+ it 'copies contents of public directory into build directory' do
43
+ build_dir = 'dist'
44
+ asset_path = File.join('css', 'third-party.css')
45
+
46
+ in_temporary_project do |project_root|
47
+ public_path = File.join(project_root, 'public')
48
+ FileUtils.mkdir_p(File.dirname(File.join(public_path, asset_path)))
49
+ open(File.join(public_path, asset_path), 'w')
50
+
51
+ Nesta::Static::Assets.new(build_dir).copy_public_folder
52
+
53
+ assert_exists_in_project File.join(build_dir, asset_path)
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ require_relative '../../../lib/nesta/static/html_file'
4
+
5
+ describe 'HtmlFile' do
6
+ include ModelFactory
7
+ include TestConfiguration
8
+
9
+ after do
10
+ remove_temp_directory
11
+ end
12
+
13
+ it 'determines HTML filename from build dir and page filename' do
14
+ build_dir = "dist"
15
+
16
+ with_temp_content_directory do
17
+ page = create(:page)
18
+
19
+ html_file = Nesta::Static::HtmlFile.new(build_dir, page)
20
+
21
+ expected = File.join(build_dir, "page-1.html")
22
+ assert_equal expected, html_file.filename
23
+ end
24
+ end
25
+
26
+ it 'creates index.html in directory if page shares path with directory' do
27
+ build_dir = "dist"
28
+
29
+ with_temp_content_directory do
30
+ page = create(:page)
31
+ ext = File.extname(page.filename)
32
+ directory_path = page.filename.sub(/#{ext}$/, '')
33
+ FileUtils.mkdir(directory_path)
34
+
35
+ html_file = Nesta::Static::HtmlFile.new(build_dir, page)
36
+
37
+ expected = File.join(build_dir, "page-1", "index.html")
38
+ assert_equal expected, html_file.filename
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,104 @@
1
+ require 'test_helper'
2
+
3
+ require_relative '../../../lib/nesta/static/site'
4
+
5
+ describe 'Site' do
6
+ include ModelFactory
7
+ include TestConfiguration
8
+
9
+ after do
10
+ remove_temp_directory
11
+ end
12
+
13
+ it 'converts Markdown to HTML' do
14
+ build_dir = 'dist'
15
+ domain = 'localhost'
16
+
17
+ in_temporary_project do
18
+ with_temp_content_directory do
19
+ page = create(:page)
20
+
21
+ Nesta::Static::Site.new(build_dir, domain).render_pages
22
+
23
+ html_file = File.join(build_dir, page.abspath + '.html')
24
+ markup = open(html_file).read
25
+
26
+ assert markup.include?("<title>#{page.title}</title>")
27
+ end
28
+ end
29
+ end
30
+
31
+ it 'renders a 404 not found page' do
32
+ build_dir = 'dist'
33
+ domain = 'localhost'
34
+
35
+ in_temporary_project do
36
+ with_temp_content_directory do
37
+ Nesta::Static::Site.new(build_dir, domain).render_not_found
38
+
39
+ html_file = File.join(build_dir, '404.html')
40
+ markup = open(html_file).read
41
+
42
+ assert markup.include?("<h1>Page not found</h1>")
43
+ end
44
+ end
45
+ end
46
+
47
+ it 'renders Atom feed' do
48
+ build_dir = 'dist'
49
+ domain = 'mysite.com'
50
+
51
+ in_temporary_project do
52
+ with_temp_content_directory do
53
+ article = create(:article)
54
+ Nesta::Static::Site.new(build_dir, domain).render_atom_feed
55
+
56
+ xml_file = File.join(build_dir, 'articles.xml')
57
+ xml = open(xml_file).read
58
+
59
+ assert xml.include?("<link href='https://#{domain + article.abspath}'")
60
+ end
61
+ end
62
+ end
63
+
64
+ it 'includes domain name in sitemap' do
65
+ build_dir = 'dist'
66
+ domain = 'mysite.com'
67
+
68
+ in_temporary_project do
69
+ with_temp_content_directory do
70
+ page = create(:page)
71
+ Nesta::Static::Site.new(build_dir, domain).render_sitemap
72
+
73
+ xml_file = File.join(build_dir, 'sitemap.xml')
74
+ xml = open(xml_file).read
75
+
76
+ assert xml.include?(domain + page.abspath)
77
+ end
78
+ end
79
+ end
80
+
81
+ it "renders the user's list of templated assets" do
82
+ build_dir = 'dist'
83
+ css_path = '/css/styles.css'
84
+ build_config = {}
85
+
86
+ in_temporary_project do
87
+ stub_config('build' => { 'templated_assets' => [css_path] }) do
88
+ views = File.join(project_root, 'views')
89
+ FileUtils.mkdir_p(views)
90
+ open(File.join(views, 'styles.sass'), 'w') do |sass|
91
+ sass.write("p\n font-size: 1em\n")
92
+ end
93
+
94
+ site = Nesta::Static::Site.new(build_dir, 'mysite.com')
95
+ site.render_templated_assets
96
+
97
+ css_file = File.join(build_dir, css_path)
98
+ assert_exists_in_project(css_file)
99
+
100
+ assert_equal open(css_file).read, "p {\n font-size: 1em;\n}"
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require_relative '../../lib/nesta/system_command'
3
+
4
+ describe 'Nesta::SystemCommand' do
5
+ describe '#run' do
6
+ it 'catches errors when running external processes' do
7
+ command = Nesta::SystemCommand.new
8
+ command.run('ls / >/dev/null')
9
+ begin
10
+ stderr, $stderr = $stderr, StringIO.new
11
+ assert_raises(SystemExit) do
12
+ command.run('ls no-such-file 2>/dev/null')
13
+ end
14
+ ensure
15
+ $stderr.close
16
+ $stderr = stderr
17
+ end
18
+ end
19
+ end
20
+ end
data/views/atom.haml CHANGED
@@ -1,7 +1,7 @@
1
1
  !!! XML
2
- %feed(xmlns='http://www.w3.org/2005/Atom')
2
+ %feed(xmlns='https://www.w3.org/2005/Atom')
3
3
  %title(type='text')= @title
4
- %generator(uri='http://nestacms.com') Nesta
4
+ %generator(uri='https://nestacms.com') Nesta
5
5
  %id= atom_id
6
6
  %link(href="#{path_to('/articles.xml', :uri => true)}" rel='self')
7
7
  %link(href="#{path_to('/', :uri => true)}" rel='alternate')
data/views/comments.haml CHANGED
@@ -3,7 +3,7 @@
3
3
  - if Sinatra::Application.environment == :development
4
4
  :javascript
5
5
  var disqus_developer = true;
6
- %script{:type => 'text/javascript', :src => "http://#{short_name}.disqus.com/embed.js", :async => true}
6
+ %script{:type => 'text/javascript', :src => "https://#{short_name}.disqus.com/embed.js", :async => true}
7
7
 
8
8
  %noscript
9
- %a(href="http://#{short_name}.disqus.com/embed.js?url=ref") View comments.
9
+ %a(href="https://#{short_name}.disqus.com/embed.js?url=ref") View comments.
data/views/footer.haml CHANGED
@@ -2,4 +2,4 @@
2
2
  %p
3
3
  Powered by Nesta, a
4
4
  = succeed "." do
5
- %a(href="http://nestacms.com") Ruby CMS
5
+ %a(href="https://nestacms.com") Ruby CMS
data/views/header.haml CHANGED
@@ -1,4 +1,3 @@
1
1
  %header(role="banner")
2
- %hgroup
3
- %h1= @heading
4
- %h2= @subtitle
2
+ %h1= @heading
3
+ %h2= @subtitle
data/views/layout.haml CHANGED
@@ -8,13 +8,13 @@
8
8
  - if @keywords
9
9
  %meta(name="keywords" content=@keywords)
10
10
  %title= @title
11
- %link(href='http://fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css')
11
+ %link(href='//fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css')
12
12
  <!--[if ! lte IE 6]><!-->
13
13
  %link(href="#{path_to('/css/master.css')}" media="screen" rel="stylesheet")
14
14
  - local_stylesheet_link_tag('local')
15
15
  <!--<![endif]-->
16
16
  /[if lte IE 6]
17
- %link(rel="stylesheet" href="http://universal-ie6-css.googlecode.com/files/ie6.1.1.css" media="screen, projection")
17
+ %link(rel="stylesheet" href="//universal-ie6-css.googlecode.com/files/ie6.1.1.css" media="screen, projection")
18
18
  /[if lt IE 9]
19
19
  %script(src="//html5shim.googlecode.com/svn/trunk/html5.js")
20
20
  %script(src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.1.0/respond.min.js")
data/views/master.sass CHANGED
@@ -70,7 +70,7 @@ li
70
70
 
71
71
  blockquote
72
72
  margin: $vertical-margin 0
73
- padding: 0 $vertical-margin / 2
73
+ padding: 0 calc($vertical-margin / 2)
74
74
  border-left: 5px solid $tint
75
75
 
76
76
  font-style: italic
data/views/mixins.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  // Default ratios between font sizes; used to maintain the type hierarchy.
2
- // http://www.markboulton.co.uk/journal/comments/five-simple-steps-to-better-typography-part-4
2
+ // https://www.markboulton.co.uk/journal/comments/five-simple-steps-to-better-typography-part-4
3
3
 
4
4
  $size5: 2.18em
5
5
  $size4: 1.64em
@@ -23,7 +23,7 @@ $nav-link-color: desaturate(lighten($link-color, 10%), 25%)
23
23
  $meta-color: #87877D
24
24
 
25
25
  @function empx($em, $base: 16px)
26
- @return ($em / 1em) * $base
26
+ @return calc($em / 1em) * $base
27
27
 
28
28
  // Layout settings
29
29
 
data/views/normalize.scss CHANGED
@@ -15,7 +15,6 @@ figcaption,
15
15
  figure,
16
16
  footer,
17
17
  header,
18
- hgroup,
19
18
  main,
20
19
  nav,
21
20
  section,
data/views/sitemap.haml CHANGED
@@ -1,5 +1,5 @@
1
1
  !!! XML
2
- %urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
2
+ %urlset(xmlns="https://www.sitemaps.org/schemas/sitemap/0.9")
3
3
  %url
4
4
  %loc= path_to('/', :uri => true)
5
5
  %changefreq daily
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nesta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Graham Ashton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-30 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: haml-contrib
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +50,28 @@ dependencies:
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '2.0'
53
+ version: '2'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '2.0'
60
+ version: '2'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: rdiscount
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +101,19 @@ dependencies:
81
101
  - !ruby/object:Gem::Version
82
102
  version: '4.2'
83
103
  - !ruby/object:Gem::Dependency
84
- name: sassc
104
+ name: sass-embedded
85
105
  requirement: !ruby/object:Gem::Requirement
86
106
  requirements:
87
- - - ">="
107
+ - - "~>"
88
108
  - !ruby/object:Gem::Version
89
- version: '2.2'
109
+ version: '1.58'
90
110
  type: :runtime
91
111
  prerelease: false
92
112
  version_requirements: !ruby/object:Gem::Requirement
93
113
  requirements:
94
- - - ">="
114
+ - - "~>"
95
115
  - !ruby/object:Gem::Version
96
- version: '2.2'
116
+ version: '1.58'
97
117
  - !ruby/object:Gem::Dependency
98
118
  name: sinatra
99
119
  requirement: !ruby/object:Gem::Requirement
@@ -192,20 +212,6 @@ dependencies:
192
212
  - - ">="
193
213
  - !ruby/object:Gem::Version
194
214
  version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: rake
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
215
  description: |
210
216
  Nesta is a lightweight Content Management System, written in Ruby using
211
217
  the Sinatra web framework. Nesta has the simplicity of a static site
@@ -225,11 +231,9 @@ executables:
225
231
  extensions: []
226
232
  extra_rdoc_files: []
227
233
  files:
234
+ - ".github/workflows/tests.yml"
228
235
  - ".gitignore"
229
236
  - ".gitmodules"
230
- - ".hound.yml"
231
- - ".rspec"
232
- - ".travis.yml"
233
237
  - CHANGES
234
238
  - Gemfile
235
239
  - Gemfile.lock
@@ -244,18 +248,20 @@ files:
244
248
  - lib/nesta.rb
245
249
  - lib/nesta/app.rb
246
250
  - lib/nesta/commands.rb
247
- - lib/nesta/commands/command.rb
251
+ - lib/nesta/commands/build.rb
248
252
  - lib/nesta/commands/demo.rb
249
253
  - lib/nesta/commands/demo/content.rb
250
254
  - lib/nesta/commands/edit.rb
251
255
  - lib/nesta/commands/new.rb
252
256
  - lib/nesta/commands/plugin.rb
253
257
  - lib/nesta/commands/plugin/create.rb
258
+ - lib/nesta/commands/template.rb
254
259
  - lib/nesta/commands/theme.rb
255
260
  - lib/nesta/commands/theme/create.rb
256
261
  - lib/nesta/commands/theme/enable.rb
257
262
  - lib/nesta/commands/theme/install.rb
258
263
  - lib/nesta/config.rb
264
+ - lib/nesta/config_file.rb
259
265
  - lib/nesta/env.rb
260
266
  - lib/nesta/helpers.rb
261
267
  - lib/nesta/models.rb
@@ -263,6 +269,10 @@ files:
263
269
  - lib/nesta/overrides.rb
264
270
  - lib/nesta/path.rb
265
271
  - lib/nesta/plugin.rb
272
+ - lib/nesta/static/assets.rb
273
+ - lib/nesta/static/html_file.rb
274
+ - lib/nesta/static/site.rb
275
+ - lib/nesta/system_command.rb
266
276
  - lib/nesta/version.rb
267
277
  - nesta.gemspec
268
278
  - scripts/import-from-mephisto
@@ -292,6 +302,7 @@ files:
292
302
  - test/fixtures/nesta-plugin-test/lib/nesta-plugin-test/version.rb
293
303
  - test/fixtures/nesta-plugin-test/nesta-plugin-test.gemspec
294
304
  - test/integration/atom_feed_test.rb
305
+ - test/integration/commands/build_test.rb
295
306
  - test/integration/commands/demo/content_test.rb
296
307
  - test/integration/commands/edit_test.rb
297
308
  - test/integration/commands/new_test.rb
@@ -305,17 +316,19 @@ files:
305
316
  - test/integration/sitemap_test.rb
306
317
  - test/integration_test_helper.rb
307
318
  - test/support/model_factory.rb
308
- - test/support/silence_commands_during_tests.rb
309
319
  - test/support/temporary_files.rb
310
320
  - test/support/test_configuration.rb
311
321
  - test/test_helper.rb
312
- - test/unit/commands_test.rb
313
322
  - test/unit/config_test.rb
314
323
  - test/unit/file_model_test.rb
315
324
  - test/unit/menu_test.rb
316
325
  - test/unit/page_test.rb
317
326
  - test/unit/path_test.rb
318
327
  - test/unit/plugin_test.rb
328
+ - test/unit/static/assets_test.rb
329
+ - test/unit/static/html_file_test.rb
330
+ - test/unit/static/site_test.rb
331
+ - test/unit/system_command_test.rb
319
332
  - views/analytics.haml
320
333
  - views/atom.haml
321
334
  - views/categories.haml
@@ -335,7 +348,7 @@ files:
335
348
  - views/sidebar.haml
336
349
  - views/sitemap.haml
337
350
  - views/summaries.haml
338
- homepage: http://nestacms.com
351
+ homepage: https://nestacms.com
339
352
  licenses: []
340
353
  metadata: {}
341
354
  post_install_message:
@@ -353,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
366
  - !ruby/object:Gem::Version
354
367
  version: '0'
355
368
  requirements: []
356
- rubygems_version: 3.1.2
369
+ rubygems_version: 3.4.6
357
370
  signing_key:
358
371
  specification_version: 4
359
372
  summary: Ruby CMS, written in Sinatra
data/.hound.yml DELETED
@@ -1,2 +0,0 @@
1
- ruby:
2
- enabled: true