nesta 0.12.0 → 0.14.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.
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