charsi 0.1.0 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1f4d275d1e0160a13c59583ba73d13718c6010935543c5dd9281b97071b4a4b
4
- data.tar.gz: 4f85f65b66740a9f6bfe9c1f3204ed8f50a3fe8509facd150698c3c1dd65beb6
3
+ metadata.gz: d2cacf89713b13f50ad0ebe1ce862ad84fa7b88b5a71297c2dcfa5c5b44d6afe
4
+ data.tar.gz: e460984bfa0c4e8b23f9ad13e838d17a0c1a03ea09894295619c9d4641cf5de2
5
5
  SHA512:
6
- metadata.gz: ca51e1d73a4d3aed16d2ea3c72ab1638c38c035b68c3bc93ead2e1b85fe84b36dca66d2ed05d0dc4c6c111349fa79a05478d3debaf2fba0a73efd58d0715f4fb
7
- data.tar.gz: f278453dca7038b2b10a3ea3c4750243c9138864b28ca3833b3aab55e263ddab7092da003f1939fca3d7c078c1fc5db311da3bbf42821c51e7797b27c016eea5
6
+ metadata.gz: baf2444f0cbff82668fe697e9fd1e655a177b55171c187a475931e628d500c2933686bc856072a9ab0bf12152eb1db05bd04774b27bdf15187866b0121a125a5
7
+ data.tar.gz: '08bf088c251de38ada92c83f4eca065356262e44f9c9dc7575d0519536f880527cc7c445df3dc8caa25efef67302ba4b265c2d4c6c4285ecc04a7a4ddd012c02'
data/bin/charsi CHANGED
@@ -16,6 +16,16 @@ elsif command == 'new'
16
16
  raise ArgumentError, 'Project name is required' if project_name.nil?
17
17
 
18
18
  Charsi::Generator.generate(project_name)
19
+
20
+ elsif command == 'serve'
21
+ charsi = Charsi::Builder.new
22
+ server = Charsi::Server.new
23
+
24
+ charsi.build
25
+
26
+ Thread.new { charsi.watch } if watch_flag
27
+
28
+ server.serve
19
29
  else
20
30
  puts 'Usage: charsi build [--watch]'
21
31
  end
data/charsi.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'charsi'
3
- spec.version = '0.1.0'
3
+ spec.version = '0.1.2'
4
4
 
5
5
  spec.authors = ['Ryan Beasse']
6
6
  spec.email = ['me@ryanbeasse.com']
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency 'tailwindcss-ruby', '~> 4.1'
30
30
  spec.add_dependency 'filewatcher', '~> 2.1'
31
31
  spec.add_dependency 'logger', '~> 1.6'
32
+ spec.add_dependency 'webrick', '~> 1.9'
32
33
  end
data/lib/charsi/app.rb CHANGED
@@ -8,6 +8,9 @@ module Charsi
8
8
 
9
9
  def initialize
10
10
  @cache_slug = Time.now.to_i
11
+ @config = Configuration.new
12
+
13
+ load_helpers
11
14
  end
12
15
 
13
16
  protected
@@ -19,5 +22,15 @@ module Charsi
19
22
  def javascript_tag(asset)
20
23
  "<script src='assets/javascript/#{asset}?#{@cache_slug}'></script>"
21
24
  end
25
+
26
+ private
27
+
28
+ def load_helpers
29
+ helpers_path = @config.path(:helpers_dir)
30
+
31
+ Dir.glob(File.join(helpers_path, '**', '*.rb')).each do |helper_file|
32
+ require_relative helper_file
33
+ end
34
+ end
22
35
  end
23
36
  end
@@ -2,7 +2,7 @@ module Charsi
2
2
  # Builds the application and handles file watching for changes.
3
3
  class Builder
4
4
  def initialize
5
- @app = defined?(::App) ? ::App.new : Charsi::App.new
5
+ @app = Charsi::App.new
6
6
  @config = Configuration.new
7
7
  end
8
8
 
@@ -13,6 +13,7 @@ module Charsi
13
13
  File.join(Dir.pwd, config_path, *keys)
14
14
  end
15
15
 
16
+
16
17
  private
17
18
 
18
19
  def app_config
@@ -0,0 +1,22 @@
1
+ require 'webrick'
2
+
3
+ module Charsi
4
+ class Server
5
+ DEFAULT_PORT = 8000
6
+
7
+ def initialize
8
+ @config = Configuration.new
9
+ end
10
+
11
+ def serve
12
+ build_dir = @config.path(:output_dir)
13
+
14
+ server = WEBrick::HTTPServer.new(Port: DEFAULT_PORT, DocumentRoot: build_dir)
15
+ trap('INT') { server.shutdown }
16
+
17
+ puts "[charsi] Serving #{build_dir} at http://localhost:#{DEFAULT_PORT}"
18
+
19
+ server.start
20
+ end
21
+ end
22
+ end
data/lib/charsi.rb CHANGED
@@ -14,4 +14,5 @@ module Charsi
14
14
  require 'charsi/app'
15
15
  require 'charsi/builder'
16
16
  require 'charsi/generator'
17
+ require 'charsi/server'
17
18
  end
@@ -2,4 +2,5 @@ paths:
2
2
  output_dir: '_build'
3
3
  layout_dir: 'layouts'
4
4
  assets_dir: 'assets'
5
- views_dir: 'views'
5
+ views_dir: 'views'
6
+ helpers_dir: 'helpers'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: charsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Beasse
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '1.6'
82
+ - !ruby/object:Gem::Dependency
83
+ name: webrick
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.9'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.9'
82
96
  email:
83
97
  - me@ryanbeasse.com
84
98
  executables:
@@ -99,6 +113,7 @@ files:
99
113
  - lib/charsi/configuration.rb
100
114
  - lib/charsi/file.rb
101
115
  - lib/charsi/generator.rb
116
+ - lib/charsi/server.rb
102
117
  - lib/charsi/template.rb
103
118
  - templates/site/Gemfile.template
104
119
  - templates/site/assets/css/tailwind.css.template