staticz 1.0.10 → 1.0.12

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: 3f4c779f303f2e6bfa06e6135323e61e4c089067361d4239d6c53903c239ae02
4
- data.tar.gz: 8958a5a56ed411ef10584076a57994a67786cda23bf6d3f0d012d77cf7954ae3
3
+ metadata.gz: 514a1a85d3b4dfaa09b9f9b193e8e7e8d6ab5932233ddc23e28982c0b9bd33b4
4
+ data.tar.gz: 6ed2e3c26f0e82a78fa3669aa0ce0d1753875d8e27d71b07ccacd54092b08dfd
5
5
  SHA512:
6
- metadata.gz: 2e49f8abff572d050666d143a4a6bbf555e2d97dfbb9d0614950dd3f93ce1d8121e34c4dac74f730fc5b8e7c6d199a675c493074881ff1f74c3a3d6aefd4ecb6
7
- data.tar.gz: 510b452f0dbd668b955ecd56f34e8ef468c42cec49e061968784d0eb9b1917572b1f78d6e5afa56c41635aa035a55c734583c544138eda6486ee30b3d5271e58
6
+ metadata.gz: ded82ed2f8c9af219f81624e7210537d88dd0ee0f0d3188d50a2616f29e4473f2866b10b9b057d41cab6e63e54849365aae1480b86ec5301910dacc6cd340a6b
7
+ data.tar.gz: 33ee4a79b001ede15aa7fcb05ecbede3e8edd30c099eb82798f0da3ed4070424ea5789136389682e2c92149abe3da713e57e7e6be16aefb732e444579e65d9af
data/lib/builder.rb CHANGED
@@ -1,19 +1,21 @@
1
+ require "tty-spinner"
1
2
  require_relative "modules/lib_loader"
3
+ require_relative "manifest/manifest"
2
4
 
3
5
  module Staticz
4
6
  class Builder
5
- def initialize
6
- build
7
+ def initialize(listener_class: nil)
8
+ @listener_class = listener_class
7
9
  end
8
10
 
9
- private
10
-
11
11
  def build
12
12
  Staticz::Modules::LibLoader.load_files
13
13
 
14
14
  Dir.mkdir('build') unless File.exist?('build')
15
15
 
16
- Staticz::Manifest.instance.build
16
+ Staticz::Manifest.instance.build(listener_class: @listener_class)
17
+
18
+ Staticz::Manifest.instance.valid?
17
19
  end
18
20
  end
19
21
  end
@@ -0,0 +1,33 @@
1
+ require "tty-option"
2
+
3
+ module Staticz
4
+ class BaseCommand
5
+ include TTY::Option
6
+
7
+ usage do
8
+ program "staticz"
9
+ no_command
10
+
11
+ description "Staticz helps create static websites",
12
+ "\nCommands:",
13
+ " staticz new - Create a new project",
14
+ " staticz server - Run the development server",
15
+ " staticz manifest - Print out all files and how they will be built",
16
+ " staticz build - Compile the project"
17
+ end
18
+
19
+ argument :mode do
20
+ desc "[new server manifest build]"
21
+ end
22
+
23
+ flag :help do
24
+ short "-h"
25
+ long "--help"
26
+ desc "Print this page"
27
+ end
28
+
29
+ def run
30
+ print help
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,108 @@
1
+ require "tty-option"
2
+ require_relative "../settings"
3
+ require_relative "../builder"
4
+ require_relative "../utils/colors"
5
+
6
+ module Staticz
7
+ class BuildCommand
8
+ include TTY::Option
9
+
10
+ usage do
11
+ program "staticz"
12
+ command "build"
13
+
14
+ description "Compile the project"
15
+ end
16
+
17
+ flag :verbose do
18
+ short "-v"
19
+ long "--verbose"
20
+ desc "Use verbose output"
21
+ end
22
+
23
+ flag :help do
24
+ short "-h"
25
+ long "--help"
26
+ desc "Print this page"
27
+ end
28
+
29
+ option :environment do
30
+ desc "Set the environment"
31
+ short "-e"
32
+ long "--environment environment"
33
+
34
+ default :production
35
+ permit [:development, :production]
36
+ convert :symbol
37
+ end
38
+
39
+ def run
40
+ if params[:help]
41
+ print help
42
+ exit
43
+ end
44
+
45
+ if !params[:environment]
46
+ puts "Environment must either be development or production"
47
+ exit 1
48
+ end
49
+
50
+ if params[:verbose]
51
+ Staticz::Settings.verbose!
52
+ end
53
+
54
+ Staticz::Settings.set_environment(params[:environment])
55
+
56
+ result = Staticz::Builder.new(listener_class: BuildListener).build
57
+
58
+ if result.flatten.include? false
59
+ exit 1
60
+ end
61
+ end
62
+ end
63
+
64
+ class BuildListener
65
+ def initialize(compilable)
66
+ @compilable = compilable
67
+
68
+ if Staticz::Settings.verbose?
69
+ puts "Compiling #{generate_text}"
70
+ else
71
+ @spinner = TTY::Spinner.new(
72
+ "[:spinner] #{generate_text}",
73
+ format: :classic,
74
+ success_mark: Colors.in_green("✔"),
75
+ error_mark: Colors.in_red("✖")
76
+ )
77
+
78
+ @spinner.auto_spin
79
+ end
80
+ end
81
+
82
+ def finish
83
+ @spinner.success(Colors.in_green("(successful)")) if !Staticz::Settings.verbose?
84
+ end
85
+
86
+ def error
87
+ if Staticz::Settings.verbose?
88
+ puts Colors.in_red("Error:")
89
+ else
90
+ @spinner.error(Colors.in_red("(error)"))
91
+ end
92
+
93
+ @compilable.errors.each do |error|
94
+ puts Colors.in_red(error)
95
+ end
96
+ end
97
+
98
+ private
99
+
100
+ def generate_text
101
+ if @compilable.is_a? Staticz::JSBundle
102
+ @compilable.name
103
+ else
104
+ "#{@compilable.source_path} -> #{@compilable.build_path}"
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,37 @@
1
+ require "tty-option"
2
+ require_relative "../settings"
3
+ require_relative "../modules/lib_loader"
4
+ require_relative "../manifest/manifest"
5
+
6
+ module Staticz
7
+ class ManifestCommand
8
+ include TTY::Option
9
+
10
+ usage do
11
+ program "staticz"
12
+ command "manifest"
13
+
14
+ description "Print out all files and how they will be built"
15
+ end
16
+
17
+ flag :help do
18
+ short "-h"
19
+ long "--help"
20
+ desc "Print this page"
21
+ end
22
+
23
+ def run
24
+ if params[:help]
25
+ print help
26
+ else
27
+ Staticz::Settings.development!
28
+
29
+ load "#{Dir.pwd}/manifest.rb"
30
+ Staticz::Modules::LibLoader.load_files
31
+ Staticz::Manifest.instance.create_link_functions
32
+
33
+ Staticz::Manifest.instance.print
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,41 @@
1
+ require "tty-option"
2
+ require_relative "../template"
3
+
4
+ module Staticz
5
+ class NewCommand
6
+ include TTY::Option
7
+
8
+ usage do
9
+ program "staticz"
10
+ command "staticz"
11
+
12
+ description "Create a new project"
13
+ end
14
+
15
+ argument :name do
16
+ required
17
+ desc "testies"
18
+ end
19
+
20
+ flag :help do
21
+ short "-h"
22
+ long "--help"
23
+ desc "Print this page"
24
+ end
25
+
26
+ def run
27
+ if params[:help]
28
+ print help
29
+ exit 1
30
+ end
31
+
32
+ if !params[:name]
33
+ puts "Name missing"
34
+ print help
35
+ exit 1
36
+ end
37
+
38
+ Staticz::Template.new(params[:name])
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,61 @@
1
+ require "tty-option"
2
+ require_relative "../settings"
3
+ require_relative "../server"
4
+
5
+ module Staticz
6
+ class ServerCommand
7
+ include TTY::Option
8
+
9
+ usage do
10
+ program "staticz"
11
+ command "server"
12
+
13
+ description "Run the development server"
14
+ end
15
+
16
+ flag :help do
17
+ short "-h"
18
+ long "--help"
19
+ desc "Print this page"
20
+ end
21
+
22
+ option :port do
23
+ desc "Define the port used for the webserver"
24
+ short "-p"
25
+ long "--port port"
26
+
27
+ default 3000
28
+ convert :integer
29
+ end
30
+
31
+ option :environment do
32
+ desc "Set the environment"
33
+ short "-e"
34
+ long "--environment environment"
35
+
36
+ default :development
37
+ permit [:development, :production]
38
+ convert :symbol
39
+ end
40
+
41
+ def run
42
+ if params[:help]
43
+ print help
44
+ exit
45
+ end
46
+
47
+ if !params[:port]
48
+ puts "A given port must be an integer"
49
+ exit 1
50
+ end
51
+
52
+ if !params[:environment]
53
+ puts "Environment must either be development or production"
54
+ exit 1
55
+ end
56
+
57
+ Staticz::Settings.set_environment(params[:environment])
58
+ Staticz::Server.new(params[:port])
59
+ end
60
+ end
61
+ end
@@ -8,23 +8,27 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "coffee"
12
-
13
- def build_file_ending = "js"
14
-
15
- def tile_type_name = "Coff"
11
+ compile "coffee", "js", "Coff"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
19
15
  end
20
16
 
21
- def build
17
+ def build(listener_class: nil)
18
+ listener = listener_class&.new(self)
19
+
22
20
  if exists?
23
- js = CoffeeScript.compile File.read(source_path)
21
+ File.write build_path, render
24
22
 
25
- File.write build_path, js
23
+ listener&.finish
24
+ else
25
+ listener&.error
26
26
  end
27
27
  end
28
+
29
+ def render
30
+ CoffeeScript.compile File.read(source_path)
31
+ end
28
32
  end
29
33
  end
30
34
  end
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "haml"
12
-
13
- def build_file_ending = "html"
14
-
15
- def tile_type_name = "Haml"
11
+ compile "haml", "html", "Haml"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -33,11 +29,16 @@ module Staticz
33
29
  errors
34
30
  end
35
31
 
36
- def build
32
+ def build(listener_class: nil)
33
+ listener = listener_class&.new(self)
34
+
37
35
  if valid?
38
36
  engine = ::Haml::Engine.new(File.read(source_path))
39
-
40
37
  File.write build_path, engine.render
38
+
39
+ listener&.finish
40
+ else
41
+ listener&.error
41
42
  end
42
43
  end
43
44
  end
@@ -7,21 +7,27 @@ module Staticz
7
7
 
8
8
  attr_reader :name
9
9
 
10
- def source_file_ending = "js"
11
-
12
- def build_file_ending = "js"
13
-
14
- def tile_type_name = "Js"
10
+ compile "js", "js", "Js"
15
11
 
16
12
  def initialize(name)
17
13
  @name = name
18
14
  end
19
15
 
20
- def build
16
+ def build(listener_class: nil)
17
+ listener = listener_class&.new(self)
18
+
21
19
  if exists?
22
- File.write build_path, File.read(source_path)
20
+ File.write build_path, render
21
+
22
+ listener&.finish
23
+ else
24
+ listener&.error
23
25
  end
24
26
  end
27
+
28
+ def render
29
+ File.read(source_path)
30
+ end
25
31
  end
26
32
  end
27
33
  end
@@ -8,23 +8,27 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "js"
12
-
13
- def build_file_ending = "js"
14
-
15
- def tile_type_name = "React"
11
+ compile "js", "js", "React"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
19
15
  end
20
16
 
21
- def build
17
+ def build(listener_class: nil)
18
+ listener = listener_class&.new(self)
19
+
22
20
  if exists?
23
- engine = Babel::Transpiler.transform File.read(source_path)
21
+ File.write build_path, render
24
22
 
25
- File.write build_path, engine["code"]
23
+ listener&.finish
24
+ else
25
+ listener&.error
26
26
  end
27
27
  end
28
+
29
+ def render
30
+ Babel::Transpiler.transform(File.read(source_path))["code"]
31
+ end
28
32
  end
29
33
  end
30
34
  end
@@ -8,24 +8,28 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "sass"
12
-
13
- def build_file_ending = "css"
14
-
15
- def tile_type_name = "Sass"
11
+ compile "sass", "css", "Sass"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
19
15
  end
20
16
 
21
- def build
17
+ def build(listener_class: nil)
18
+ listener = listener_class&.new(self)
19
+
22
20
  if valid?
23
- engine = ::SassC::Engine.new(File.read(source_path), syntax: :sass, style: :compressed)
21
+ File.write build_path, render
24
22
 
25
- File.write build_path, engine.render
23
+ listener&.finish
24
+ else
25
+ listener&.error
26
26
  end
27
27
  end
28
28
 
29
+ def render
30
+ ::SassC::Engine.new(File.read(source_path), syntax: :sass, style: :compressed).render
31
+ end
32
+
29
33
  def errors
30
34
  errors = super
31
35
 
@@ -8,24 +8,28 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "scss"
12
-
13
- def build_file_ending = "css"
14
-
15
- def tile_type_name = "Scss"
11
+ compile "scss", "css", "Scss"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
19
15
  end
20
16
 
21
- def build
17
+ def build(listener_class: nil)
18
+ listener = listener_class&.new(self)
19
+
22
20
  if valid?
23
- engine = ::SassC::Engine.new(File.read(source_path), syntax: :scss, style: :compressed)
21
+ File.write build_path, render
24
22
 
25
- File.write build_path, engine.render
23
+ listener&.finish
24
+ else
25
+ listener&.error
26
26
  end
27
27
  end
28
28
 
29
+ def render
30
+ ::SassC::Engine.new(File.read(source_path), syntax: :scss, style: :compressed).render
31
+ end
32
+
29
33
  def errors
30
34
  errors = super
31
35
 
@@ -5,6 +5,8 @@ module Staticz
5
5
  class SimpleFile
6
6
  include Compilable
7
7
 
8
+ compile "", "", "File"
9
+
8
10
  attr_reader :name
9
11
 
10
12
  def source_path
@@ -20,15 +22,19 @@ module Staticz
20
22
  Object.send(:define_method, path_method_name) { link_path }
21
23
  end
22
24
 
23
- def tile_type_name = "File"
24
-
25
25
  def initialize(name)
26
26
  @name = name
27
27
  end
28
28
 
29
- def build
29
+ def build(listener_class: nil)
30
+ listener = listener_class&.new(self)
31
+
30
32
  if exists?
31
33
  File.write build_path, File.read(source_path)
34
+
35
+ listener&.finish
36
+ else
37
+ listener&.error
32
38
  end
33
39
  end
34
40
  end
@@ -1,7 +1,27 @@
1
1
  require "io/console"
2
+ require_relative "../utils/colors"
2
3
 
3
4
  module Staticz
4
5
  module Compilable
6
+ def self.included(base)
7
+ base.extend(ClassMethods)
8
+ end
9
+ module ClassMethods
10
+ def compile(source_file_ending, build_file_ending, file_type_name)
11
+ define_method :source_file_ending do
12
+ source_file_ending
13
+ end
14
+
15
+ define_method :build_file_ending do
16
+ build_file_ending
17
+ end
18
+
19
+ define_method :file_type_name do
20
+ file_type_name
21
+ end
22
+ end
23
+ end
24
+
5
25
  def path
6
26
  name.to_s
7
27
  end
@@ -46,14 +66,17 @@ module Staticz
46
66
  end
47
67
  end
48
68
 
49
- def print(indentation)
69
+ def print(indentation, *args)
50
70
  valid_symbol = if valid?
51
71
  Colors.in_green("✔")
52
72
  else
53
73
  Colors.in_red("✘")
54
74
  end
55
75
 
56
- puts "#{" " * (indentation * 3)}└─ #{tile_type_name}: #{path} #{valid_symbol} -> #{path_method_name}"
76
+ compilable_string = "#{" " * (indentation * 3)}└─ #{file_type_name}: #{path} #{valid_symbol}"
77
+ compilable_string << " -> #{path_method_name}" if !args.include? :no_path
78
+
79
+ puts compilable_string
57
80
 
58
81
  _height, width = IO.console.winsize
59
82
 
@@ -0,0 +1,91 @@
1
+ require_relative "sub"
2
+
3
+ module Staticz
4
+ class CSSBundle
5
+ attr_reader :name, :location, :elements
6
+
7
+ def initialize(name, location)
8
+ @name = name
9
+ @location = location
10
+ @elements = []
11
+ end
12
+
13
+ def sub(name, &block)
14
+ s = Staticz::Sub.new(generate_location_path(name))
15
+ elements.push(s)
16
+ s.instance_eval(&block)
17
+ end
18
+
19
+ def sass(name, &block)
20
+ elements.push(Staticz::Compilable::Sass.new(generate_location_path(name)))
21
+ end
22
+
23
+ def scss(name, &block)
24
+ elements.push(Staticz::Compilable::Scss.new(generate_location_path(name)))
25
+ end
26
+
27
+ def generate_location_path(name)
28
+ if location.empty?
29
+ name
30
+ else
31
+ "#{location}/#{name}"
32
+ end
33
+ end
34
+
35
+ def build(listener_class: nil)
36
+ listener = listener_class&.new(self)
37
+
38
+ File.write "build/#{name}_bundle.css", render
39
+
40
+ listener&.finish
41
+ end
42
+
43
+ def render
44
+ render_elements elements
45
+ end
46
+
47
+ def render_elements(elements)
48
+ elements
49
+ .map do |element|
50
+ if element.is_a? Staticz::Sub
51
+ render_elements element.elements
52
+ else
53
+ [
54
+ "/* #{element.name} */",
55
+ element.render
56
+ ].join("\n\n")
57
+ end
58
+ end
59
+ .join("\n\n")
60
+ end
61
+
62
+ def path_method_name
63
+ "#{name.to_s.gsub(/[.\/-]/, "_")}_css_bundle_path"
64
+ end
65
+
66
+ def create_link_function
67
+ link_path = "/#{name}_bundle.css"
68
+
69
+ Object.send(:define_method, path_method_name) do
70
+ link_path
71
+ end
72
+ end
73
+
74
+ def valid?
75
+ elements.map do |e|
76
+ e.valid?
77
+ end
78
+ end
79
+
80
+ def print(indentation)
81
+ puts "#{" " * (indentation * 3)}└─ CSSBundle: #{name} -> #{path_method_name}"
82
+ elements.each do |e|
83
+ e.print(indentation + 1, :no_path)
84
+ end
85
+ end
86
+
87
+ def path
88
+ "src/#{name}"
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,95 @@
1
+ require_relative "sub"
2
+
3
+ module Staticz
4
+ class JSBundle
5
+ attr_reader :name, :location, :elements
6
+
7
+ def initialize(name, location)
8
+ @name = name
9
+ @location = location
10
+ @elements = []
11
+ end
12
+
13
+ def sub(name, &block)
14
+ s = Staticz::Sub.new(generate_location_path(name))
15
+ elements.push(s)
16
+ s.instance_eval(&block)
17
+ end
18
+
19
+ def js(name, &block)
20
+ elements.push(Staticz::Compilable::Js.new(generate_location_path(name)))
21
+ end
22
+
23
+ def coffee(name, &block)
24
+ elements.push(Staticz::Compilable::Cs.new(generate_location_path(name)))
25
+ end
26
+
27
+ def react(name, &block)
28
+ elements.push(Staticz::Compilable::React.new(generate_location_path(name)))
29
+ end
30
+
31
+ def generate_location_path(name)
32
+ if location.empty?
33
+ name
34
+ else
35
+ "#{location}/#{name}"
36
+ end
37
+ end
38
+
39
+ def build(listener_class: nil)
40
+ listener = listener_class&.new(self)
41
+
42
+ File.write "build/#{name}_bundle.js", render
43
+
44
+ listener&.finish
45
+ end
46
+
47
+ def render
48
+ render_elements elements
49
+ end
50
+
51
+ def render_elements(elements)
52
+ elements
53
+ .map do |element|
54
+ if element.is_a? Staticz::Sub
55
+ render_elements element.elements
56
+ else
57
+ [
58
+ "// #{element.name}",
59
+ element.render
60
+ ].join("\n\n")
61
+ end
62
+ end
63
+ .join("\n\n")
64
+ end
65
+
66
+ def path_method_name
67
+ "#{name.to_s.gsub(/[.\/-]/, "_")}_js_bundle_path"
68
+ end
69
+
70
+ def create_link_function
71
+ link_path = "/#{name}_bundle.js"
72
+
73
+ Object.send(:define_method, path_method_name) do
74
+ link_path
75
+ end
76
+ end
77
+
78
+ def valid?
79
+ elements.map do |e|
80
+ e.valid?
81
+ end
82
+ end
83
+
84
+ def print(indentation)
85
+ puts "#{" " * (indentation * 3)}└─ JSBundle: #{name} -> #{path_method_name}"
86
+ elements.each do |e|
87
+ e.print(indentation + 1, :no_path)
88
+ end
89
+ end
90
+
91
+ def path
92
+ "src/#{name}"
93
+ end
94
+ end
95
+ end
@@ -7,6 +7,8 @@ require_relative "compilable/react"
7
7
  require_relative "compilable/sass"
8
8
  require_relative "compilable/scss"
9
9
  require_relative "compilable/simple_file"
10
+ require_relative "js_bundle"
11
+ require_relative "css_bundle"
10
12
 
11
13
  module Staticz
12
14
  class Manifest
@@ -53,13 +55,27 @@ module Staticz
53
55
  elements.push(Staticz::Compilable::SimpleFile.new(name))
54
56
  end
55
57
 
56
- def build
58
+ def js_bundle(name, &block)
59
+ s = Staticz::JSBundle.new(name, "")
60
+ elements.push(s)
61
+
62
+ s.instance_eval(&block)
63
+ end
64
+
65
+ def css_bundle(name, &block)
66
+ s = Staticz::CSSBundle.new(name, "")
67
+ elements.push(s)
68
+
69
+ s.instance_eval(&block)
70
+ end
71
+
72
+ def build(listener_class: nil)
57
73
  load "#{Dir.pwd}/manifest.rb"
58
74
 
59
75
  create_link_functions
60
76
 
61
77
  elements.each do |e|
62
- e.build
78
+ e.build(listener_class: listener_class)
63
79
  end
64
80
  end
65
81
 
@@ -69,6 +85,12 @@ module Staticz
69
85
  end
70
86
  end
71
87
 
88
+ def valid?
89
+ elements.map do |e|
90
+ e.valid?
91
+ end
92
+ end
93
+
72
94
  def self.define(&block)
73
95
  Staticz::Manifest.instance.define(block)
74
96
  end
data/lib/manifest/sub.rb CHANGED
@@ -41,11 +41,25 @@ module Staticz
41
41
  elements.push(Staticz::Compilable::SimpleFile.new("#{@name}/#{name}"))
42
42
  end
43
43
 
44
- def build
44
+ def js_bundle(name, &block)
45
+ s = Staticz::JSBundle.new("#{@name}/#{name}", @name)
46
+ elements.push(s)
47
+
48
+ s.instance_eval(&block)
49
+ end
50
+
51
+ def css_bundle(name, &block)
52
+ s = Staticz::CSSBundle.new("#{@name}/#{name}", @name)
53
+ elements.push(s)
54
+
55
+ s.instance_eval(&block)
56
+ end
57
+
58
+ def build(listener_class: nil)
45
59
  Dir.mkdir("build/#{name}") if !Dir.exist?("build/#{name}")
46
60
 
47
61
  elements.each do |e|
48
- e.build
62
+ e.build(listener_class: listener_class)
49
63
  end
50
64
  end
51
65
 
@@ -55,10 +69,16 @@ module Staticz
55
69
  end
56
70
  end
57
71
 
58
- def print(indentation)
72
+ def valid?
73
+ elements.map do |e|
74
+ e.valid?
75
+ end
76
+ end
77
+
78
+ def print(indentation, *args)
59
79
  puts "#{" " * (indentation * 3)}└─ Sub: #{name}"
60
80
  elements.each do |e|
61
- e.print(indentation + 1)
81
+ e.print(indentation + 1, *args)
62
82
  end
63
83
  end
64
84
 
data/lib/server.rb CHANGED
@@ -1,13 +1,16 @@
1
1
  require "thin"
2
2
  require "listen"
3
3
  require "io/console"
4
-
5
4
  require_relative "manifest/manifest"
6
5
  require_relative "modules/reload"
6
+ require_relative "builder"
7
+ require_relative "utils/helpers"
7
8
 
8
9
  module Staticz
9
10
  class Server
10
- def initialize
11
+ def initialize(port)
12
+ @port = port
13
+
11
14
  Thin::Logging.silent = true
12
15
 
13
16
  app = Rack::Builder.new do
@@ -40,7 +43,7 @@ module Staticz
40
43
  end
41
44
  end
42
45
 
43
- thin_server = Thin::Server.new '127.0.0.1', 3000
46
+ thin_server = Thin::Server.new '127.0.0.1', port
44
47
  thin_server.app = app
45
48
 
46
49
  build_manifest
@@ -95,7 +98,7 @@ module Staticz
95
98
  end
96
99
 
97
100
  def build_manifest
98
- Staticz::Builder.new
101
+ Staticz::Builder.new.build
99
102
  Staticz::Manifest.instance.print
100
103
 
101
104
  Staticz::Modules::Reload.generate_hash
data/lib/settings.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  module Staticz
2
2
  class Settings
3
+ def self.set_environment(environment)
4
+ @@env = environment
5
+ end
6
+
3
7
  def self.development!
4
8
  @@env = :development
5
9
  end
@@ -15,6 +19,18 @@ module Staticz
15
19
  def self.production?
16
20
  @@env == :production
17
21
  end
22
+
23
+ def self.verbose!
24
+ @@verbose = true
25
+ end
26
+
27
+ def self.verbose?
28
+ if defined? @@verbose
29
+ @@verbose == true
30
+ else
31
+ false
32
+ end
33
+ end
18
34
  end
19
35
  end
20
36
 
data/lib/staticz.rb CHANGED
@@ -1,44 +1,26 @@
1
- require_relative "template"
2
- require_relative "server"
3
- require_relative "builder"
4
- require_relative "settings"
5
- require_relative "utils/colors"
6
- require_relative "utils/helpers"
1
+ require "tty-option"
2
+ require_relative "commands/base_command"
3
+ require_relative "commands/new_command"
4
+ require_relative "commands/server_command"
5
+ require_relative "commands/manifest_command"
6
+ require_relative "commands/build_command"
7
7
 
8
8
  module Staticz
9
9
  def self.init
10
- usage = [
11
- "Usage: staticz <mode>",
12
- "",
13
- " new [name]",
14
- " server",
15
- " manifest",
16
- " build"
17
- ].join("\n")
18
-
19
- case ARGV[0]
20
- when 'new'
21
- if ARGV[1]
22
- Staticz::Template.new(ARGV[1])
23
- else
24
- puts usage
25
- end
26
- when 'server'
27
- Staticz::Settings.development!
28
- Staticz::Server.new
29
- when 'manifest'
30
- Staticz::Settings.development!
31
-
32
- load "#{Dir.pwd}/manifest.rb"
33
- Staticz::Modules::LibLoader.load_files
34
- Staticz::Manifest.instance.create_link_functions
35
-
36
- Staticz::Manifest.instance.print
37
- when 'build'
38
- Staticz::Settings.production!
39
- Staticz::Builder.new
10
+ cmd, args = case ARGV[0]
11
+ when "new"
12
+ [Staticz::NewCommand.new, ARGV[1..]]
13
+ when "server"
14
+ [Staticz::ServerCommand.new, ARGV[1..]]
15
+ when "manifest"
16
+ [Staticz::ManifestCommand.new, ARGV[1..]]
17
+ when "build"
18
+ [Staticz::BuildCommand.new, ARGV[1..]]
40
19
  else
41
- puts usage
20
+ [Staticz::BaseCommand.new, ARGV]
42
21
  end
22
+
23
+ cmd.parse args
24
+ cmd.run
43
25
  end
44
26
  end
data/lib/template.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "fileutils"
2
+
1
3
  module Staticz
2
4
  class Template
3
5
  def initialize(name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: staticz
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipp Schlesinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-14 00:00:00.000000000 Z
11
+ date: 2022-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.7'
111
+ - !ruby/object:Gem::Dependency
112
+ name: tty-option
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.2'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: tty-spinner
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: '0.9'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: '0.9'
111
139
  description: Create websites with haml and sass, and compile them into static html
112
140
  and css
113
141
  email:
@@ -119,6 +147,11 @@ extra_rdoc_files: []
119
147
  files:
120
148
  - bin/staticz
121
149
  - lib/builder.rb
150
+ - lib/commands/base_command.rb
151
+ - lib/commands/build_command.rb
152
+ - lib/commands/manifest_command.rb
153
+ - lib/commands/new_command.rb
154
+ - lib/commands/server_command.rb
122
155
  - lib/manifest/compilable.rb
123
156
  - lib/manifest/compilable/cs.rb
124
157
  - lib/manifest/compilable/haml.rb
@@ -127,6 +160,8 @@ files:
127
160
  - lib/manifest/compilable/sass.rb
128
161
  - lib/manifest/compilable/scss.rb
129
162
  - lib/manifest/compilable/simple_file.rb
163
+ - lib/manifest/css_bundle.rb
164
+ - lib/manifest/js_bundle.rb
130
165
  - lib/manifest/manifest.rb
131
166
  - lib/manifest/sub.rb
132
167
  - lib/modules/lib_loader.rb
@@ -165,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
200
  - !ruby/object:Gem::Version
166
201
  version: '0'
167
202
  requirements: []
168
- rubygems_version: 3.3.3
203
+ rubygems_version: 3.3.7
169
204
  signing_key:
170
205
  specification_version: 4
171
206
  summary: Static website compiler