statique 0.1.1 → 0.1.2

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: 50d52d44d67fdcebdfaf1408ad1f3734b2764883cce75d8f10c44d9c7caad3c0
4
- data.tar.gz: 60a65af96f09f7ee6ee098cc9ffaed7b9a5e00cf0ce9efbf59952a2f3ea2b5c4
3
+ metadata.gz: d2054cde4943aaa109efca61aaf7324a13c7b79f6799799c989a0a1741c3ca8f
4
+ data.tar.gz: 72d87387e9f0efd5221f243a5ff20e005d472117d251385c91b3e2b1c48875ab
5
5
  SHA512:
6
- metadata.gz: 6c4eb0792b466e0fdbd2816ca0edd5034fb2d259ebac099ddc8cec11f3aa357be011fdc39a8143eafe8f517f249fbcef99642c7eb59f199b25b544837dd2f881
7
- data.tar.gz: 8e7fb2885dcd118ffac0a86ae502060ae1bef7a889adda8b08af5814c86e35c0a54520f979545d25a48df7b4a1b289db4f763b9605b2c018920a0b88c84db070
6
+ metadata.gz: cbbd3939295f1d514c2d88d359d4378b40c035c9f1dba4277520595988a156bdd03d38699d34030850eb99051beae0f3f03740479f0db2a5be284083d056a843
7
+ data.tar.gz: 299de1732a45c052a472ad81584329aae57b429d5c6eade81af2934c10171f8a6347f696b9cb392e818f4b38d1e77380c8995111a6e03ac6c4edf43528ede304
data/Dockerfile CHANGED
@@ -7,7 +7,7 @@ ARG STATIQUE_VERSION
7
7
  # RUN gem install statique --version $STATIQUE_VERSION
8
8
  WORKDIR /pkg
9
9
  COPY pkg/statique-$STATIQUE_VERSION.gem .
10
- RUN apk add --no-cache --update --virtual .build-deps build-base libffi-dev && \
10
+ RUN apk add --no-cache --update --virtual .build-deps build-base && \
11
11
  gem install /pkg/statique-$STATIQUE_VERSION.gem && rm -rf /root/.local/share/gem && rm -rf /usr/local/bundle/cache/*.gem && \
12
12
  apk del .build-deps
13
13
 
data/Gemfile CHANGED
@@ -7,15 +7,17 @@ source "https://rubygems.org"
7
7
  # Specify your gem's dependencies in statique.gemspec
8
8
  gemspec
9
9
 
10
- gem "benchmark-ips"
11
- gem "bundle-audit", "~> 0.1.0"
12
- gem "minitest", "~> 5.0"
13
- gem "minitest-around", "~> 0.5.0"
14
- gem "overcommit"
15
- gem "rake", "~> 13.0"
16
- gem "rbs"
17
- gem "rubocop-minitest", "~> 0.17.0"
18
- gem "rubocop-rake", "~> 0.6.0"
19
- gem "solargraph"
20
- gem "standard", "~> 1.3"
21
- gem "typeprof"
10
+ group :development do
11
+ gem "benchmark-ips"
12
+ gem "bundle-audit", "~> 0.1.0"
13
+ gem "minitest", "~> 5.0"
14
+ gem "minitest-around", "~> 0.5.0"
15
+ gem "overcommit"
16
+ gem "rake", "~> 13.0"
17
+ gem "rbs"
18
+ gem "rubocop-minitest", "~> 0.17.0"
19
+ gem "rubocop-rake", "~> 0.6.0"
20
+ gem "solargraph"
21
+ gem "standard", "~> 1.3"
22
+ gem "typeprof"
23
+ end
data/README.md CHANGED
@@ -10,15 +10,16 @@
10
10
  # Statique
11
11
 
12
12
  ![Ruby](https://github.com/pusewicz/statique/actions/workflows/main.yml/badge.svg)
13
+ [![Gem Version](https://badge.fury.io/rb/statique.svg)](https://badge.fury.io/rb/statique)
13
14
 
14
- Statique is a static site generator written in [Ruby](https://www.ruby-lang.org/) and utilising [Roda](https://roda.jeremyevans.net/) for the Rack middleware. By default, it comes with support for [Slim](http://slim-lang.com/), [Sass](https://sass-lang.com/) and [Markdown](https://daringfireball.net/projects/markdown/).
15
+ Statique is a static site generator written in [Ruby](https://www.ruby-lang.org/) and utilising [Roda](https://roda.jeremyevans.net/) for the Rack middleware. By default, it comes with support for [Slim](http://slim-lang.com/) and [Markdown](https://daringfireball.net/projects/markdown/).
15
16
 
16
17
  ## Installation
17
18
 
18
19
  Install it as a [Whalebrew](https://github.com/whalebrew/whalebrew) package (recommended):
19
20
 
20
21
  $ whalebrew install pusewicz/statique
21
-
22
+
22
23
  Install it as a Docker image:
23
24
 
24
25
  $ docker pull pusewicz/statique
@@ -34,25 +35,25 @@ Install it as a Ruby gem:
34
35
  #### Whalebrew package, Ruby gem
35
36
 
36
37
  $ statique init my-website
37
-
38
+
38
39
  #### Docker
39
40
 
40
41
  $ docker run -it --rm -v "$PWD":/workdir -w /workdir pusewicz/statique init my-website
41
-
42
+
42
43
  ### Start the Statique server
43
44
 
44
45
  First, change into your new Statique website directory:
45
46
 
46
47
  $ cd my-website
47
-
48
+
48
49
  #### Whalebrew package, Ruby gem
49
50
 
50
51
  $ statique server
51
-
52
+
52
53
  #### Docker
53
54
 
54
55
  $ docker run -it --rm -p 3000:3000 -v "$PWD":/workdir -w /workdir pusewicz/statique server
55
-
56
+
56
57
  ### Build your Statique website
57
58
 
58
59
  The final step before deploying your website to your preferred host is to build it. By default, the built website will be available in the `dist/` subdirectory.
@@ -60,11 +61,11 @@ The final step before deploying your website to your preferred host is to build
60
61
  First, change into your new Statique website directory:
61
62
 
62
63
  $ cd my-website
63
-
64
+
64
65
  #### Whalebrew package, Ruby gem
65
66
 
66
67
  $ statique build
67
-
68
+
68
69
  #### Docker
69
70
 
70
71
  $ docker run -it --rm -v "$PWD":/workdir -w /workdir pusewicz/statique build
File without changes
@@ -1,4 +1,4 @@
1
- Statique is a static site generator written in [Ruby](https://www.ruby-lang.org/) and uses [Roda](https://roda.jeremyevans.net/) for the Rack middleware. By default, it comes with support for [Slim](http://slim-lang.com/), [Sass](https://sass-lang.com/) and [Markdown](https://daringfireball.net/projects/markdown/).
1
+ Statique is a static site generator written in [Ruby](https://www.ruby-lang.org/) and uses [Roda](https://roda.jeremyevans.net/) for the Rack middleware. By default, it comes with support for [Slim](http://slim-lang.com/) and [Markdown](https://daringfireball.net/projects/markdown/).
2
2
 
3
3
  ## Installation
4
4
 
data/lib/statique/app.rb CHANGED
@@ -19,21 +19,21 @@ class Statique
19
19
 
20
20
  def_delegators :Statique, :url, :root_url
21
21
 
22
- opts[:root] = Statique.paths.pwd
22
+ opts[:root] = Statique.configuration.paths.pwd
23
23
 
24
24
  plugin :environments
25
25
  plugin :static_routing
26
- plugin :render, views: Statique.paths.content.basename, engine: "slim", allowed_paths: [Statique.paths.content.basename, Statique.paths.layouts.basename]
27
- plugin :partials, views: Statique.paths.layouts.basename
26
+ plugin :render, views: Statique.configuration.paths.content.basename, engine: "slim", allowed_paths: [Statique.configuration.paths.content.basename, Statique.configuration.paths.layouts.basename]
27
+ plugin :partials, views: Statique.configuration.paths.layouts.basename
28
28
 
29
- if Statique.mode.server? && Statique.paths.public.exist?
30
- plugin :public, root: Statique.paths.public.basename
29
+ if Statique.mode.server? && Statique.configuration.paths.public.exist?
30
+ plugin :public, root: Statique.configuration.paths.public.basename
31
31
  end
32
32
 
33
- if Statique.paths.assets.exist?
34
- css_files = Statique.paths.assets.join("css").glob("*.{css,scss}")
35
- js_files = Statique.paths.assets.join("js").glob("*.js")
36
- plugin :assets, css: css_files.map { _1.basename.to_s }, js: js_files.map { _1.basename.to_s }, public: Statique.paths.destination, precompiled: Statique.paths.destination.join("assets/manifest.json"), relative_paths: true
33
+ if Statique.configuration.paths.assets.exist?
34
+ css_files = Statique.configuration.paths.assets.join("css").glob("*.{css,scss}")
35
+ js_files = Statique.configuration.paths.assets.join("js").glob("*.js")
36
+ plugin :assets, css: css_files.map { _1.basename.to_s }, js: js_files.map { _1.basename.to_s }, public: Statique.configuration.paths.destination, precompiled: Statique.configuration.paths.destination.join("assets/manifest.json"), relative_paths: true
37
37
  plugin :assets_preloading
38
38
 
39
39
  Statique.mode.build do
@@ -78,8 +78,8 @@ class Statique
78
78
 
79
79
  if Statique.mode.server?
80
80
  route do |r|
81
- r.public if Statique.paths.public.exist?
82
- r.assets if Statique.paths.assets.exist?
81
+ r.public if Statique.configuration.paths.public.exist?
82
+ r.assets if Statique.configuration.paths.assets.exist?
83
83
  end
84
84
  end
85
85
  end
@@ -15,8 +15,9 @@ class Statique
15
15
  end
16
16
 
17
17
  def run
18
+ require "statique/app"
18
19
  time = Benchmark.realtime do
19
- create_directory(Statique.paths.destination)
20
+ create_directory(Statique.configuration.paths.destination)
20
21
  copy_public_assets
21
22
  build_pages
22
23
  end
@@ -41,7 +42,7 @@ class Statique
41
42
  path = @queue.pop
42
43
  response = mock_request.get(path)
43
44
  if response.successful?
44
- destination = Statique.paths.destination.join(File.extname(path).empty? ? "./#{path}/index.html" : "./#{path}")
45
+ destination = Statique.configuration.paths.destination.join(File.extname(path).empty? ? "./#{path}/index.html" : "./#{path}")
45
46
  Statique.ui.info "Building page", path: path
46
47
  create_directory(destination.dirname)
47
48
  File.write(destination, response.body)
@@ -60,9 +61,9 @@ class Statique
60
61
  end
61
62
 
62
63
  def copy_public_assets
63
- assets = Statique.paths.public.glob("**/*.*")
64
+ assets = Statique.configuration.paths.public.glob("**/*.*")
64
65
  Statique.ui.info "Copying public assets", assets:
65
- FileUtils.cp_r(assets, Statique.paths.destination)
66
+ FileUtils.cp_r(assets, Statique.configuration.paths.destination)
66
67
  end
67
68
 
68
69
  private
@@ -29,6 +29,7 @@ class Statique
29
29
  end
30
30
 
31
31
  def run
32
+ require "statique/app"
32
33
  Statique.ui.info "Starting server", port: @port
33
34
 
34
35
  logger = LoggerWrapper.new
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Statique
4
+ class Configuration
5
+ attr_accessor :root_url
6
+ attr_accessor :paths
7
+
8
+ def initialize
9
+ @root_url = "/"
10
+ @paths = OpenStruct.new(
11
+ pwd: Pathname.pwd,
12
+ public: Pathname.pwd.join("public"),
13
+ content: Pathname.pwd.join("content"),
14
+ layouts: Pathname.pwd.join("layouts"),
15
+ assets: Pathname.pwd.join("assets"),
16
+ destination: Pathname.pwd.join("dist")
17
+ )
18
+ end
19
+ end
20
+ end
@@ -56,7 +56,7 @@ class Statique
56
56
  def watch_for_changes
57
57
  require "filewatcher"
58
58
 
59
- @filewatcher = Filewatcher.new([Statique.paths.content, Statique.paths.layouts])
59
+ @filewatcher = Filewatcher.new([Statique.configuration.paths.content, Statique.configuration.paths.layouts])
60
60
  @filewatcher_thread = Thread.new(@filewatcher) do |watcher|
61
61
  watcher.watch do |file, event|
62
62
  Statique.ui.debug "File change event", file: file, event: event
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Statique
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/statique.rb CHANGED
@@ -6,37 +6,27 @@ require "pathname"
6
6
  require "pagy"
7
7
  require "rack"
8
8
  require "tty-logger"
9
- require "dry-configurable"
10
9
 
11
10
  ::FrontMatterParser::SyntaxParser::Builder = FrontMatterParser::SyntaxParser::MultiLineComment["=begin", "=end"]
12
11
 
13
12
  $LOAD_PATH.unshift(File.expand_path("..", __FILE__))
14
- require "zeitwerk"
15
13
 
16
- loader = Zeitwerk::Loader.for_gem
17
- loader.inflector.inflect(
18
- "cli" => "CLI"
19
- )
20
- loader.setup
14
+ require "statique/version"
15
+ require "statique/cli"
16
+ require "statique/mode"
17
+ require "statique/discover"
18
+ require "statique/document"
21
19
 
22
20
  class Statique
23
- extend Dry::Configurable
24
-
25
21
  class Error < StandardError; end
26
22
 
27
- setting :paths, reader: true do
28
- setting :pwd, default: Pathname.pwd, constructor: -> { Pathname(_1) }
29
- setting :public, default: Pathname.pwd.join("public"), constructor: -> { Statique.pwd.join(_1) }
30
- setting :content, default: Pathname.pwd.join("content"), constructor: -> { Statique.pwd.join(_1) }
31
- setting :layouts, default: Pathname.pwd.join("layouts"), constructor: -> { Statique.pwd.join(_1) }
32
- setting :assets, default: Pathname.pwd.join("assets"), constructor: -> { Statique.pwd.join(_1) }
33
- setting :destination, default: Pathname.pwd.join("dist"), constructor: -> { Statique.pwd.join(_1) }
34
- end
35
- setting :root_url, default: "/", reader: true
36
-
37
23
  class << self
24
+ def configuration
25
+ @configuration ||= Configuration.new
26
+ end
27
+
38
28
  def discover
39
- @discover ||= Discover.new(paths.content)
29
+ @discover ||= Discover.new(configuration.paths.content)
40
30
  end
41
31
 
42
32
  def mode
data/statique.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Statique is a static website generator written in Ruby using Roda"
13
13
  spec.homepage = "https://github.com/pusewicz/statique"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
15
+ spec.required_ruby_version = ">= 3.1.0"
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = "https://github.com/pusewicz/statique"
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
32
32
  # Uncomment to register a new dependency of your gem
33
33
  spec.add_dependency "builder", "~> 3.2.4"
34
34
  spec.add_dependency "commonmarker", "~> 0.23.2"
35
- spec.add_dependency "dry-configurable", "~> 0.14.0"
36
35
  spec.add_dependency "filewatcher", "~> 1.1.1"
37
36
  spec.add_dependency "front_matter_parser", "~> 1.0.1"
38
37
  spec.add_dependency "hashie", "~> 5.0.0"
@@ -40,13 +39,11 @@ Gem::Specification.new do |spec|
40
39
  spec.add_dependency "pagy", "~> 5.9.3"
41
40
  spec.add_dependency "rack-rewrite", "~> 1.5.1"
42
41
  spec.add_dependency "roda", "~> 3.52"
43
- spec.add_dependency "sassc", "~> 2.4.0"
44
42
  spec.add_dependency "slim", "~> 4.1.0"
45
43
  spec.add_dependency "thor", "~> 1.2.1"
46
44
  spec.add_dependency "tilt", "~> 2.0.10"
47
45
  spec.add_dependency "tty-logger", "~> 0.6.0"
48
46
  spec.add_dependency "webrick", "~> 1.7.0"
49
- spec.add_dependency "zeitwerk", "~> 2.5.4"
50
47
 
51
48
  # For more information and examples about making a new gem, check out our
52
49
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Usewicz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-14 00:00:00.000000000 Z
11
+ date: 2022-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.23.2
41
- - !ruby/object:Gem::Dependency
42
- name: dry-configurable
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.14.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.14.0
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: filewatcher
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,20 +136,6 @@ dependencies:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
138
  version: '3.52'
153
- - !ruby/object:Gem::Dependency
154
- name: sassc
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: 2.4.0
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: 2.4.0
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: slim
169
141
  requirement: !ruby/object:Gem::Requirement
@@ -234,20 +206,6 @@ dependencies:
234
206
  - - "~>"
235
207
  - !ruby/object:Gem::Version
236
208
  version: 1.7.0
237
- - !ruby/object:Gem::Dependency
238
- name: zeitwerk
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: 2.5.4
244
- type: :runtime
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - "~>"
249
- - !ruby/object:Gem::Version
250
- version: 2.5.4
251
209
  description: Statique is a static website generator written in Ruby using Roda
252
210
  email:
253
211
  - piotr@layer22.com
@@ -268,7 +226,7 @@ files:
268
226
  - Rakefile
269
227
  - bin/console
270
228
  - bin/setup
271
- - docs/assets/css/app.scss
229
+ - docs/assets/css/app.css
272
230
  - docs/content/index.md
273
231
  - docs/layouts/layout.slim
274
232
  - exe/statique
@@ -278,6 +236,7 @@ files:
278
236
  - lib/statique/cli/build.rb
279
237
  - lib/statique/cli/init.rb
280
238
  - lib/statique/cli/server.rb
239
+ - lib/statique/configuration.rb
281
240
  - lib/statique/discover.rb
282
241
  - lib/statique/document.rb
283
242
  - lib/statique/mode.rb
@@ -295,7 +254,7 @@ licenses:
295
254
  metadata:
296
255
  homepage_uri: https://github.com/pusewicz/statique
297
256
  source_code_uri: https://github.com/pusewicz/statique
298
- changelog_uri: https://raw.githubusercontent.com/pusewicz/statique/v0.1.1/CHANGELOG.md
257
+ changelog_uri: https://raw.githubusercontent.com/pusewicz/statique/v0.1.2/CHANGELOG.md
299
258
  post_install_message:
300
259
  rdoc_options: []
301
260
  require_paths:
@@ -304,7 +263,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
263
  requirements:
305
264
  - - ">="
306
265
  - !ruby/object:Gem::Version
307
- version: 2.6.0
266
+ version: 3.1.0
308
267
  required_rubygems_version: !ruby/object:Gem::Requirement
309
268
  requirements:
310
269
  - - ">="