nesta 0.16.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f57754ef13ef4b4533c03ab454b2114fb35d3e168d20107c1fb39941d6af4b92
4
- data.tar.gz: 9aa4a9b8e0715d77c1ec515a114f63827e8a117e1f3b807755a59d0c0eba0c45
3
+ metadata.gz: 12864a6defdd473b703fe553e3693bf1f697054ac2765fd7f22464f6525e5867
4
+ data.tar.gz: 1a3bfcb203d9862a10ef9691286187ef2c91f3c880bd56bea99f8f34ab0f83a4
5
5
  SHA512:
6
- metadata.gz: effa2dcecf9d3ed0de395102c893d9f1571171b4bc4d63968911f3538c27bd8ef15692df2586239e2986d1b32e4bd4ef23513245c2cd89d0d159df3d9bf79903
7
- data.tar.gz: c0f318224b4f70322af4d30b55e517b1d790b3087129eb0601d434eabf79cc65e3b8ae24262f7300812a0414dd5402d2969d0f11be1f5d0516afe1ad7474d27c
6
+ metadata.gz: ee6c78cb3046d5f93eb2dacb76107e173a51ad18d422e6195691a3fab70eac946704d984b0262febaaa69c688af761805678d67c9eedff60e992f3f56ce9c9c7
7
+ data.tar.gz: c410d3cdb2504abbd3d55b83a2799638a12d7806db20798ef00813d5fe630750f5ea74828d3b457c719fd2db822d284e3270351834a070aaf14400c1db44dfd1
@@ -8,7 +8,7 @@ jobs:
8
8
  strategy:
9
9
  fail-fast: false
10
10
  matrix:
11
- ruby: ["3.0", "3.1", "3.2", "3.3"]
11
+ ruby: ["3.1", "3.2", "3.3", "head"]
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
14
  - uses: actions/checkout@v4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.18.0 (19 November 2024)
4
+
5
+ * Update Sinatra to 4.1, to fix a vulnerability.
6
+
7
+ Note that this is the same security alert that I believed I was fixing when I
8
+ released Nesta 0.17.0. In actual fact, at that point the latest version of
9
+ Sinatra (4.0.0) didn't yet include a fix.
10
+
11
+ (Graham Ashton)
12
+
13
+ ## 0.17.0 (6 November 2024)
14
+
15
+ * Update Sinatra to verion 4.0, to fix a vulnerability. This has also
16
+ required a jump to Rack 3. (Graham Ashton)
17
+
18
+ * Update Sass parser to sass-embedded 1.80, which (due to changes in CSS 4)
19
+ deprecates the global colour functions and the @import statement. Any Sass
20
+ code that uses these features will need updating before Dart Sass 3.0 is
21
+ released. The Sass maintainers are saying we've got about two years.
22
+
23
+ In the meantime Sass will print deprecation warnings, some of which give
24
+ hints on how you might update your code.
25
+
26
+ See the Nesta commit history for an example of the kind of changes that are
27
+ required, and these pages for more details:
28
+
29
+ - https://sass-lang.com/documentation/breaking-changes/color-functions/
30
+ - https://sass-lang.com/documentation/breaking-changes/import/
31
+
32
+ This update has also forced us to drop support for Ruby 3.0, which is no
33
+ longer supported by the sass-embedded gem.
34
+
35
+ (Graham Ashton)
36
+
3
37
  ## 0.16.0 (11 April 2024)
4
38
 
5
39
  * Update Google Analytics JS code to GA4. (Matthew Bass)
data/Gemfile CHANGED
@@ -2,5 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in nesta.gemspec
4
4
  gemspec
5
-
6
- # gem (RUBY_VERSION =~ /^1/) ? 'debugger' : 'byebug'
data/Gemfile.lock CHANGED
@@ -1,25 +1,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nesta (0.16.0)
4
+ nesta (0.18.0)
5
5
  RedCloth (~> 4.2)
6
6
  haml (>= 3.1, < 6.0)
7
7
  haml-contrib (>= 1.0)
8
- rack (~> 2)
8
+ rack (~> 3)
9
9
  rake
10
10
  rdiscount (~> 2.1)
11
11
  sass-embedded (~> 1.58)
12
- sinatra (~> 3.1)
12
+ sinatra (~> 4.0)
13
13
  tilt (~> 2.1)
14
14
 
15
15
  GEM
16
16
  remote: https://rubygems.org/
17
17
  specs:
18
- RedCloth (4.3.3)
19
- addressable (2.8.1)
20
- public_suffix (>= 2.0.2, < 6.0)
18
+ RedCloth (4.3.4)
19
+ addressable (2.8.7)
20
+ public_suffix (>= 2.0.2, < 7.0)
21
21
  ansi (1.5.0)
22
- builder (3.2.4)
22
+ base64 (0.2.0)
23
+ bigdecimal (3.1.8)
24
+ builder (3.3.0)
23
25
  byebug (11.1.3)
24
26
  capybara (2.18.0)
25
27
  addressable
@@ -28,8 +30,10 @@ GEM
28
30
  rack (>= 1.0.0)
29
31
  rack-test (>= 0.5.4)
30
32
  xpath (>= 2.0, < 4.0)
31
- ffi (1.15.5)
32
- google-protobuf (3.22.2)
33
+ ffi (1.17.0)
34
+ google-protobuf (4.28.3)
35
+ bigdecimal
36
+ rake (>= 13)
33
37
  haml (5.2.2)
34
38
  temple (>= 0.8.0)
35
39
  tilt
@@ -40,10 +44,11 @@ GEM
40
44
  rb-fsevent (>= 0.9.3)
41
45
  rb-inotify (>= 0.9)
42
46
  rb-kqueue (>= 0.2)
43
- mini_mime (1.1.2)
44
- mini_portile2 (2.8.5)
45
- minitest (5.18.0)
46
- minitest-reporters (1.6.0)
47
+ logger (1.6.1)
48
+ mini_mime (1.1.5)
49
+ mini_portile2 (2.8.7)
50
+ minitest (5.25.1)
51
+ minitest-reporters (1.7.1)
47
52
  ansi
48
53
  builder
49
54
  minitest (>= 5.0)
@@ -53,38 +58,44 @@ GEM
53
58
  rb-fsevent (>= 0.9)
54
59
  rb-inotify (>= 0.8)
55
60
  unicorn (>= 4.5)
56
- mustermann (3.0.0)
61
+ mustermann (3.0.3)
57
62
  ruby2_keywords (~> 0.0.1)
58
- nokogiri (1.16.2)
63
+ nokogiri (1.16.7)
59
64
  mini_portile2 (~> 2.8.2)
60
65
  racc (~> 1.4)
61
- public_suffix (5.0.1)
62
- racc (1.7.3)
63
- rack (2.2.8.1)
64
- rack-protection (3.1.0)
65
- rack (~> 2.2, >= 2.2.4)
66
- rack-test (2.0.2)
66
+ public_suffix (6.0.1)
67
+ racc (1.8.1)
68
+ rack (3.1.8)
69
+ rack-protection (4.1.0)
70
+ base64 (>= 0.1.0)
71
+ logger (>= 1.6.0)
72
+ rack (>= 3.0.0, < 4)
73
+ rack-session (2.0.0)
74
+ rack (>= 3.0.0)
75
+ rack-test (2.1.0)
67
76
  rack (>= 1.3)
68
77
  raindrops (0.20.1)
69
- rake (13.0.6)
78
+ rake (13.2.1)
70
79
  rb-fsevent (0.11.2)
71
- rb-inotify (0.10.1)
80
+ rb-inotify (0.11.1)
72
81
  ffi (~> 1.0)
73
82
  rb-kqueue (0.2.8)
74
83
  ffi (>= 0.5.0)
75
- rdiscount (2.2.7)
84
+ rdiscount (2.2.7.3)
76
85
  ruby-progressbar (1.13.0)
77
86
  ruby2_keywords (0.0.5)
78
- sass-embedded (1.58.3)
79
- google-protobuf (~> 3.21)
80
- rake (>= 10.0.0)
81
- sinatra (3.1.0)
87
+ sass-embedded (1.80.6)
88
+ google-protobuf (~> 4.28)
89
+ rake (>= 13)
90
+ sinatra (4.1.0)
91
+ logger (>= 1.6.0)
82
92
  mustermann (~> 3.0)
83
- rack (~> 2.2, >= 2.2.4)
84
- rack-protection (= 3.1.0)
93
+ rack (>= 3.0.0, < 4)
94
+ rack-protection (= 4.1.0)
95
+ rack-session (>= 2.0.0, < 3)
85
96
  tilt (~> 2.0)
86
- temple (0.10.0)
87
- tilt (2.1.0)
97
+ temple (0.10.3)
98
+ tilt (2.4.0)
88
99
  unicorn (6.1.0)
89
100
  kgio (~> 2.6)
90
101
  raindrops (~> 0.7)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Lightweight file-based CMS and Static Site Generator
1
+ # File Based CMS and Static Site Generator
2
2
 
3
3
  Nesta is a lightweight CMS for building content sites and blogs, written in
4
4
  [Sinatra].
@@ -54,27 +54,23 @@ your site:
54
54
  ## Support
55
55
 
56
56
  There's plenty of information on <http://nestacms.com>. If you need some
57
- help with anything feel free to file an issue, or contact me on Mastodon
58
- ([@gma@hachyderm.io]) or Twitter ([@grahamashton]).
59
-
60
- If you like Nesta you can keep up with developments by following [@nestacms]
61
- on Twitter, and on [the blog].
57
+ help with anything feel free to [file an issue], or contact me on Mastodon
58
+ ([@gma@hachyderm.io]).
62
59
 
60
+ [file an issue]: https://github.com/gma/nesta/issues/new
63
61
  [@gma@hachyderm.io]: https://hachyderm.io/@gma
64
- [@grahamashton]: https://twitter.com/grahamashton
65
- [@nestacms]: https://twitter.com/nestacms
66
62
  [the blog]: https://nestacms.com/blog
67
63
 
68
64
  ![Tests](https://github.com/gma/nesta/actions/workflows/tests.yml/badge.svg)
69
65
 
70
66
  ## Contributing
71
67
 
72
- If you want to add a new feature, please [create an issue] to discuss it before
73
- you start coding. I might suggest that we implement it as a [plugin] (to keep
74
- Nesta itself lean and simple), or be able to chip in with ideas on how to
75
- approach it.
68
+ If you want to add a new feature, consider [creating an issue] so we can
69
+ have a chat before you start coding. I might be able to chip in with ideas on
70
+ how to approach it, or suggest that we implement it as a [plugin] (to keep Nesta
71
+ itself lean and simple).
76
72
 
77
- [create an issue]: https://github.com/gma/nesta/issues/new
73
+ [creating an issue]: https://github.com/gma/nesta/issues/new
78
74
  [plugin]: https://nestacms.com/docs/plugins
79
75
 
80
76
  -- Graham
@@ -35,11 +35,11 @@ module Nesta
35
35
  indent_levels << indent_level
36
36
  end
37
37
 
38
- ''.tap do |code|
39
- lines.each_with_index do |line, i|
40
- code << ' ' * (indent_levels[i] + 2) + line
41
- end
38
+ code = []
39
+ lines.each_with_index do |line, i|
40
+ code << ' ' * (indent_levels[i] + 2) + line
42
41
  end
42
+ code.join("\n")
43
43
  end
44
44
 
45
45
  def make_directories
@@ -10,7 +10,7 @@ module Nesta
10
10
 
11
11
  configured = false
12
12
  File.open(self.class.path, 'r+') do |file|
13
- output = ''
13
+ output = []
14
14
  file.each_line do |line|
15
15
  if configured
16
16
  output << line
@@ -21,7 +21,7 @@ module Nesta
21
21
  end
22
22
  output << "#{replacement}\n" unless configured
23
23
  file.pos = 0
24
- file.print(output)
24
+ file.print(output.join("\n"))
25
25
  file.truncate(file.pos)
26
26
  end
27
27
  end
data/lib/nesta/helpers.rb CHANGED
@@ -90,7 +90,7 @@ module Nesta
90
90
  # path_to(page.abspath, uri: true)
91
91
  #
92
92
  def path_to(page_path, options = {})
93
- host = ''
93
+ host = []
94
94
  if options[:uri]
95
95
  host << "http#{'s' if request.ssl?}://"
96
96
  if (request.env.include?("HTTP_X_FORWARDED_HOST") or
@@ -100,7 +100,7 @@ module Nesta
100
100
  host << request.host
101
101
  end
102
102
  end
103
- uri_parts = [host]
103
+ uri_parts = [host.join('')]
104
104
  uri_parts << request.script_name.to_s if request.script_name
105
105
  uri_parts << page_path
106
106
  File.join(uri_parts)
@@ -16,7 +16,7 @@ module Nesta
16
16
  end
17
17
 
18
18
  def self.for_path(path)
19
- path.sub!(Regexp.new('^/'), '')
19
+ path = path.sub(Regexp.new('^/'), '')
20
20
  if path.empty?
21
21
  full_menu
22
22
  else
@@ -61,8 +61,8 @@ module Nesta
61
61
 
62
62
  def set_app_root
63
63
  root = ::File.expand_path('.')
64
- ['Gemfile', ].each do |expected|
65
- if ! File.exist?(File.join(root, 'config', 'config.yml'))
64
+ ['Gemfile', File.join('config', 'config.yml')].each do |expected|
65
+ if ! File.exist?(File.join(root, expected))
66
66
  message = "is this a Nesta site? (expected './#{expected}')"
67
67
  raise RuntimeError, message
68
68
  end
data/lib/nesta/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nesta
2
- VERSION = '0.16.0'
2
+ VERSION = '0.18.0'
3
3
  end
data/nesta.gemspec CHANGED
@@ -31,12 +31,12 @@ EOF
31
31
 
32
32
  s.add_dependency('haml', '>= 3.1', '< 6.0')
33
33
  s.add_dependency('haml-contrib', '>= 1.0')
34
- s.add_dependency('rack', '~> 2')
34
+ s.add_dependency('rack', '~> 3')
35
35
  s.add_dependency('rake')
36
36
  s.add_dependency('rdiscount', '~> 2.1')
37
37
  s.add_dependency('RedCloth', '~> 4.2')
38
38
  s.add_dependency('sass-embedded', '~> 1.58')
39
- s.add_dependency('sinatra', '~> 3.1')
39
+ s.add_dependency('sinatra', '~> 4.0')
40
40
  s.add_dependency('tilt', '~> 2.1')
41
41
 
42
42
  # Useful in development
data/templates/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'nesta'
4
4
  <% if @options['vlad'] %>gem 'vlad', '2.1.0'
@@ -7,5 +7,3 @@ gem 'vlad-git', '2.2.0'<% end %>
7
7
  group :development do
8
8
  gem 'mr-sparkle'
9
9
  end
10
-
11
- # gem 'debugger'
@@ -86,7 +86,7 @@ describe 'Default theme' do
86
86
  with_temp_content_directory do
87
87
  model = create_page_and_menu
88
88
  visit model.path
89
- assert_has_css "ul.menu li[class='current']:contains('#{model.link_text}')"
89
+ assert_has_css "ul.menu li.current:contains('#{model.link_text}')"
90
90
  end
91
91
  end
92
92
 
@@ -100,7 +100,7 @@ describe 'Default theme' do
100
100
  with_temp_content_directory do
101
101
  model = create_page_and_menu
102
102
  visit "/prefix/#{model.path}"
103
- assert_has_css "ul.menu li[class='current']:contains('#{model.link_text}')"
103
+ assert_has_css "ul.menu li.current:contains('#{model.link_text}')"
104
104
  end
105
105
  end
106
106
  end
@@ -1,3 +1,5 @@
1
+ require 'fileutils'
2
+
1
3
  module TemporaryFiles
2
4
  TEMP_DIR = File.expand_path('tmp', File.join(File.dirname(__FILE__), '..'))
3
5
 
@@ -21,7 +23,8 @@ module TemporaryFiles
21
23
 
22
24
  def in_temporary_project(*args, &block)
23
25
  FileUtils.mkdir_p(File.join(project_root, 'config'))
24
- File.open(File.join(project_root, 'config', 'config.yml'), 'w').close
26
+ FileUtils.touch(File.join(project_root, 'Gemfile'))
27
+ FileUtils.touch(File.join(project_root, 'config', 'config.yml'))
25
28
  Dir.chdir(project_root) { yield project_root }
26
29
  ensure
27
30
  remove_temp_directory
data/views/master.sass CHANGED
@@ -1,5 +1,7 @@
1
- @import "mixins.sass"
2
- @import "normalize"
1
+ @use "sass:color"
2
+
3
+ @use "mixins" as *
4
+ @use "normalize"
3
5
 
4
6
  body
5
7
  font: $size1 "Roboto Slab", serif
@@ -74,7 +76,7 @@ blockquote
74
76
  border-left: 5px solid $tint
75
77
 
76
78
  font-style: italic
77
- color: adjust-color($base-color, $red: 55, $green: 55, $blue: 55)
79
+ color: color.adjust($base-color, $red: 55, $green: 55, $blue: 55)
78
80
 
79
81
  pre
80
82
  display: block
data/views/mixins.sass CHANGED
@@ -12,14 +12,16 @@ $vertical-margin: 1.5em
12
12
 
13
13
  // Colour settings
14
14
 
15
+ @use "sass:color"
16
+
15
17
  $base-color: #313126
16
18
  $tint: #EEEEC6
17
19
  $border-color: #D7C28B
18
20
  $link-color: #4786fd
19
- $visited-link-color: darken($link-color, 5%)
20
- $hover-link-color: darken($link-color, 15%)
21
- $active-link-color: darken($link-color, 20%)
22
- $nav-link-color: desaturate(lighten($link-color, 10%), 25%)
21
+ $visited-link-color: color.adjust($link-color, $lightness: -5%)
22
+ $hover-link-color: color.adjust($link-color, $lightness: -15%)
23
+ $active-link-color: color.adjust($link-color, $lightness: -20%)
24
+ $nav-link-color: color.scale(color.adjust($link-color, $lightness: 10%), $saturation: -25%)
23
25
  $meta-color: #87877D
24
26
 
25
27
  @function empx($em, $base: 16px)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nesta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Graham Ashton
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-04-11 00:00:00.000000000 Z
10
+ date: 2024-11-19 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: haml
@@ -50,14 +49,14 @@ dependencies:
50
49
  requirements:
51
50
  - - "~>"
52
51
  - !ruby/object:Gem::Version
53
- version: '2'
52
+ version: '3'
54
53
  type: :runtime
55
54
  prerelease: false
56
55
  version_requirements: !ruby/object:Gem::Requirement
57
56
  requirements:
58
57
  - - "~>"
59
58
  - !ruby/object:Gem::Version
60
- version: '2'
59
+ version: '3'
61
60
  - !ruby/object:Gem::Dependency
62
61
  name: rake
63
62
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +119,14 @@ dependencies:
120
119
  requirements:
121
120
  - - "~>"
122
121
  - !ruby/object:Gem::Version
123
- version: '3.1'
122
+ version: '4.0'
124
123
  type: :runtime
125
124
  prerelease: false
126
125
  version_requirements: !ruby/object:Gem::Requirement
127
126
  requirements:
128
127
  - - "~>"
129
128
  - !ruby/object:Gem::Version
130
- version: '3.1'
129
+ version: '4.0'
131
130
  - !ruby/object:Gem::Dependency
132
131
  name: tilt
133
132
  requirement: !ruby/object:Gem::Requirement
@@ -354,7 +353,6 @@ files:
354
353
  homepage: https://nestacms.com
355
354
  licenses: []
356
355
  metadata: {}
357
- post_install_message:
358
356
  rdoc_options: []
359
357
  require_paths:
360
358
  - lib
@@ -369,8 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
369
367
  - !ruby/object:Gem::Version
370
368
  version: '0'
371
369
  requirements: []
372
- rubygems_version: 3.5.3
373
- signing_key:
370
+ rubygems_version: 3.6.0.dev
374
371
  specification_version: 4
375
372
  summary: Ruby CMS, written in Sinatra
376
373
  test_files: []