smallvictories 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: b519e1b389b4f5ad88c228896a66e099bf080c03
4
- data.tar.gz: 68f66717c9bf8100b1773d7061e8c54842c1a5ad
3
+ metadata.gz: 57b412c22c3ddab3b928e36a80fcd757bfedfa0c
4
+ data.tar.gz: 4860dd4466e9b09a7e7c9b39e1c3d9c7a30d25d1
5
5
  SHA512:
6
- metadata.gz: 082fbefe8a57fad2cc0111d0f36658032a1ff262249fdc19d36a881041ab8992e0617190140c32bceab1bca007923239523c1531c2450fc4490dd415a9eced6a
7
- data.tar.gz: fbf653203cba09588114ce8c81c2597a842beac72d24c93106b3e44b4922a85458e8856b22ebde00af7191dc52a9426ab6c9d19f3ba9b7f0e288c84d4ef23e97
6
+ metadata.gz: 90e8d86e01b61fb7ebbd515f676a776c2da4a6223c8015a35cb2d8ee4e0dcfc9d78146079b1897206d3a18b8cc83e2d94198a151a93bacd5084e6984fc7024e7
7
+ data.tar.gz: 9e51ce950e5513e3ad7bebefee87aa44ad659891b6cdc0677057e626efd3fd87c547c317d1f85d064fd168561d347a26b0c5733c370c0780fd3b4833e2267cd4
data/README.md CHANGED
@@ -18,82 +18,113 @@ renders all HTML and Liquid files through this, including snippets from the
18
18
  includes folder.
19
19
 
20
20
  You don't have to use a layout file if you don't want to, the files will still
21
- be copied over to the destination folder.
21
+ be copied to the destination folder.
22
22
 
23
- ### Basic Folder Structure
23
+ [Guard LiveReload](https://github.com/guard/guard-livereload) is used to notify
24
+ the browser to automatically reload. It needs to be used with
25
+ the [LiveReload Safari/Chrome/Firefox extension](http://livereload.com/extensions#installing-sections).
26
+
27
+ ## Installation
24
28
 
25
- ```text
26
- dev
27
- ├── _includes
28
- │ └── _head.liquid
29
- ├── _layout.liquid
30
- ├── _sv_custom.css
31
- ├── _sv_custom.js
32
- └── index.liquid
33
- prod
34
- ├── _sv_custom.css
35
- ├── _sv_custom.js
36
- └── index.html
29
+ ```
30
+ gem install smallvictories
37
31
  ```
38
32
 
39
- ## How does it work with Small Victories?
33
+ ## Commands
40
34
 
41
- This gem allows you to build a site using the tools you're used to and compile a
42
- version directly into a Small Victories folder.
35
+ ### Bootstrap
43
36
 
44
- To do this, create a `_config.yml` file and set the destination to your Small
45
- Victories site folder e.g. `~/Dropbox/Small Victories/liberal coyote`.
37
+ Sets up default files in a folder.
38
+
46
39
 
47
- Now when you watch or build your site it will output the files into your Dropbox
48
- folder, which in turn will trigger Small Victories to rebuild your site.
40
+ Pass no name to setup in the current folder:
41
+
42
+ Command: `sv bootstrap`
43
+
44
+ Pass a folder name to setup in a new/existing folder:
45
+
46
+ Command: `sv bootstrap my-folder`
47
+
49
48
 
50
- ### Example Config
49
+ ### Compile
51
50
 
52
- ```yaml
53
- source: ''
54
- destination: '~/Dropbox/Small Victories/my-site'
55
- stylesheet: '_sv_custom.css'
56
- javascript: '_sv_custom.js'
57
- layout: '_layout.liquid'
58
- includes: '_includes'
59
- ```
51
+ Compile files.
52
+
53
+ Renders Sass/CSS, JavaScript/CoffeeScript, HTML/Liquid in the destination
54
+ folder.
55
+
56
+ Command: `sv compile`
60
57
 
61
- ### Example Folder Structure
58
+ ### Watch
62
59
 
63
- ```text
64
- Code
65
- my-site
66
- ├── _includes
67
- └── _head.liquid
68
- ├── _config.yml
69
- ├── _layout.liquid
70
- ├── _sv_custom.css
71
- ├── _sv_custom.js
72
- └── index.liquid
60
+ Watch for changes then compile files and notify LiveReload.
61
+
62
+ Command: `sv watch`
63
+
64
+ ### Default Folder Structure
73
65
 
66
+ The default setup for Small Victories is to have your production files in the
67
+ root and your development files in the `_` directory.
68
+
69
+ ```text
74
70
  Dropbox
75
71
  └── Small Victories
76
- └──my-site
72
+ └── Your Site
73
+ └── _
74
+ │ ├── _includes
75
+ │ │ └── _head.liquid
76
+ │ ├── _layout.liquid
77
+ │ ├── _sv_custom.css
78
+ │ ├── _sv_custom.js
79
+ │ └── index.liquid
80
+
77
81
  ├── _sv_custom.css
78
82
  ├── _sv_custom.js
79
83
  └── index.html
80
84
  ```
81
85
 
82
- ## Why is there now web server?
86
+ You would then run `sv watch` from within `Your Site` and Small Victories will
87
+ watch for changes in `_` and compile them to the `Your Site` folder.
83
88
 
84
- There are other static site generators (like [Jekyll](http://jekyllrb.com/) or [Middleman](https://middlemanapp.com/)) that you can use to fire up a web server (and more!), Small Victories helps you build a static site for hosting on Small Victories, so if you don't need anything more than a static HTML file that can be dropped into your Small Victories folder.
89
+ ## How does it work with Small Victories?
85
90
 
86
- ## Installation
91
+ This gem allows you to build a site using the tools you're used to and compile a
92
+ version directly into a Small Victories folder.
87
93
 
88
- ```
89
- gem install smallvictories
90
- ```
94
+ When you watch or build your site it will output the files into your Dropbox
95
+ folder, which in turn will trigger Small Victories to rebuild your site.
96
+
97
+ ### Getting Started
98
+
99
+ First, create a new Small Victories site either through your Small Victories
100
+ admin or by creating a new folder in Dropbox/Small Victories.
101
+
102
+ In terminal, cd into the directory and run:
103
+
104
+ `sv bootstrap`
105
+
106
+ Then:
107
+
108
+ `sv compile`
109
+
110
+ And finally:
111
+
112
+ `sv watch`
113
+
114
+ With the default config, Small Victories will watch and compile your files into
115
+ the root of your site folder.
116
+
117
+ ## Why is there now web server?
118
+
119
+ There are other static site generators (like [Jekyll](http://jekyllrb.com/) or [Middleman](https://middlemanapp.com/)) that you can use to fire up a web server (and more!), Small Victories helps you build a static site for hosting on Small Victories, so if you don't need anything more than a static HTML file that can be dropped into your Small Victories folder.
91
120
 
92
121
  ## Config
93
122
 
94
- Small Victories looks for a `_config.yml` file in the directory where `sv` is
123
+ You can override Small Victories config by including a `_sv_config.yml` file in the directory where `sv` is
95
124
  run from.
96
125
 
126
+ You can set the following options:
127
+
97
128
  + `source`: Relative path to find and watch files for compiling and compiling.
98
129
  + `destination`: Relative path for where to save final files.
99
130
  + `stylesheet`: Main stylesheet (Sass or CSS) to be compiled into destination.
@@ -104,45 +135,14 @@ run from.
104
135
  ### Default Configuration
105
136
 
106
137
  ```yaml
107
- source: 'dev'
108
- destination: 'prod'
138
+ source: '_'
139
+ destination: ''
109
140
  stylesheet: '_sv_custom.css'
110
141
  javascript: '_sv_custom.js'
111
142
  layout: '_layout.liquid'
112
143
  includes: '_includes'
113
144
  ```
114
145
 
115
- ## Commands
116
-
117
- ### Bootstrap
118
-
119
- Sets up default files in a folder.
120
-
121
-
122
- Pass no name to setup in the current folder:
123
-
124
- Command: `sv bootstrap`
125
-
126
- Pass a folder name to setup in a new/existing folder:
127
-
128
- Command: `sv bootstrap my-folder`
129
-
130
-
131
- ### Compile
132
-
133
- Compile files.
134
-
135
- Renders Sass/CSS, JavaScript/CoffeeScript, HTML/Liquid in the destination
136
- folder.
137
-
138
- Command: `sv compile`
139
-
140
- ### Watch
141
-
142
- Watch for changes and compile files.
143
-
144
- Command: `sv watch`
145
-
146
146
  ## Building Locally
147
147
 
148
148
  1. Clone it
data/bin/sv CHANGED
@@ -9,7 +9,6 @@ def help
9
9
  Commands:
10
10
  bootstrap, bootstrap FOLDER Setup folder with default files
11
11
  compile Compile files
12
- open Open index.html in destination folder
13
12
  watch Watch for changes and compile files
14
13
  help Prints this help document
15
14
  version Prints the small victories gem version
@@ -26,6 +25,7 @@ def bootstrap folder=nil
26
25
  config = SmallVictories::Configuration.new
27
26
  builder = SmallVictories::Builder.new(config: config)
28
27
  builder.setup folder
28
+ compile
29
29
  end
30
30
 
31
31
  def compile
@@ -36,11 +36,6 @@ def compile
36
36
  compiler.compile_html
37
37
  end
38
38
 
39
- def open
40
- config = SmallVictories::Configuration.new
41
- system("open #{config.full_destination_path}index.html")
42
- end
43
-
44
39
  def watch
45
40
  config = SmallVictories::Configuration.new
46
41
  compiler = SmallVictories::Compiler.new(config: config)
@@ -57,8 +52,6 @@ when 'bootstrap'
57
52
  bootstrap ARGV[1]
58
53
  when 'compile'
59
54
  compile
60
- when 'open'
61
- open
62
55
  when 'watch'
63
56
  watch
64
57
  else
@@ -14,6 +14,7 @@ module SmallVictories
14
14
  setup_directory folder_path
15
15
  setup_directory folder_source_path
16
16
  setup_config
17
+ setup_guardfile
17
18
  setup_stylesheet
18
19
  setup_javascript
19
20
  setup_html
@@ -24,7 +25,7 @@ module SmallVictories
24
25
  end
25
26
 
26
27
  def folder_source_path
27
- "#{folder_path}/#{config.source}/"
28
+ File.join(folder_path, config.source)
28
29
  end
29
30
 
30
31
  private
@@ -50,29 +51,33 @@ module SmallVictories
50
51
  end
51
52
 
52
53
  def setup_config
53
- d = YAML::load_file("#{src_directory}config.yml")
54
+ d = YAML::load_file(File.join(src_directory, 'config.yml'))
54
55
  d['source'] = DEFAULT_SOURCE
55
56
  d['destination'] = DEFAULT_DESTINATION
56
57
  d['stylesheet'] = DEFAULT_STYLESHEET
57
58
  d['javascript'] = DEFAULT_JAVASCRIPT
58
59
  d['layout'] = DEFAULT_LAYOUT
59
60
  d['includes'] = DEFAULT_INCLUDES
60
- File.open("#{folder_path}#{CONFIG_FILE}", 'w') {|f| f.write d.to_yaml }
61
+ File.open(File.join(folder_path, CONFIG_FILE), 'w') {|f| f.write d.to_yaml }
62
+ end
63
+
64
+ def setup_guardfile
65
+ create_src_file('Guardfile', File.join(folder_path, '.sv_guardfile'))
61
66
  end
62
67
 
63
68
  def setup_stylesheet
64
- create_src_file('stylesheet.css', "#{folder_source_path}#{config.stylesheet}")
69
+ create_src_file('stylesheet.css', File.join(folder_source_path, config.stylesheet))
65
70
  end
66
71
 
67
72
  def setup_javascript
68
- create_src_file('javascript.js', "#{folder_source_path}#{config.javascript}")
73
+ create_src_file('javascript.js', File.join(folder_source_path, config.javascript))
69
74
  end
70
75
 
71
76
  def setup_html
72
- setup_directory("#{folder_source_path}#{config.includes}")
73
- create_src_file('head.liquid', "#{folder_source_path}#{config.includes}/_head.liquid")
74
- create_src_file('layout.liquid', "#{folder_source_path}#{config.layout}")
75
- create_src_file('index.liquid', "#{folder_source_path}index.liquid")
77
+ setup_directory(File.join(folder_source_path, config.includes))
78
+ create_src_file('head.liquid', File.join(folder_source_path, config.includes, '/_head.liquid'))
79
+ create_src_file('layout.liquid', File.join(folder_source_path, config.layout))
80
+ create_src_file('index.liquid', File.join(folder_source_path, 'index.liquid'))
76
81
  end
77
82
  end
78
83
  end
@@ -12,7 +12,6 @@ module SmallVictories
12
12
 
13
13
  def compile_css
14
14
  package [config.stylesheet]
15
- prefix_css
16
15
  end
17
16
 
18
17
  def compile_js
@@ -25,8 +24,8 @@ module SmallVictories
25
24
 
26
25
  def liquid
27
26
  begin
28
- Liquid::Template.file_system = Liquid::LocalFileSystem.new("#{config.full_source_path}/#{config.includes}")
29
- layout_path = "#{config.full_source_path}/#{config.layout}"
27
+ Liquid::Template.file_system = Liquid::LocalFileSystem.new(config.full_includes_path)
28
+ layout_path = config.full_layout_path
30
29
  if File.exists?(layout_path)
31
30
  layout_file = File.open(layout_path).read
32
31
  layout = Liquid::Template.parse(layout_file)
@@ -36,7 +35,7 @@ module SmallVictories
36
35
  return
37
36
  end
38
37
 
39
- Dir.glob(["#{config.full_source_path}/*.html", "#{config.full_source_path}/*.liquid"]) do |path|
38
+ Dir.glob([File.join(config.full_source_path, '*.html'), File.join(config.full_source_path, '*.liquid')]) do |path|
40
39
  begin
41
40
  file_name = Pathname.new(path).basename.to_s.split('.').first
42
41
  next if file_name =~ /^_/ # do not render partials
@@ -45,14 +44,14 @@ module SmallVictories
45
44
  liquid = Liquid::Template.parse(file)
46
45
  content = liquid.render('config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript })
47
46
  output_file_name = file_name.concat('.html')
48
- output_path = "#{config.full_destination_path}#{output_file_name}"
47
+ output_path = File.join(config.full_destination_path, output_file_name)
49
48
  if layout
50
49
  html = layout.render('content_for_layout' => liquid.render, 'config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript })
51
50
  else
52
51
  html = liquid.render('config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript })
53
52
  end
54
53
  Dir.mkdir(config.full_destination_path) unless File.exists?(config.full_destination_path)
55
- File.open("#{config.full_destination_path}#{output_file_name}", 'w') { |file| file.write(html) }
54
+ File.open(File.join(config.full_destination_path, output_file_name), 'w') { |file| file.write(html) }
56
55
  SmallVictories.logger.info "compiled #{config.destination}/#{output_file_name}"
57
56
  rescue => e
58
57
  SmallVictories.logger.error "#{path}\n#{e}"
@@ -60,10 +59,12 @@ module SmallVictories
60
59
  end
61
60
  end
62
61
 
63
- def package bundles=[config.stylesheet, config.javascript]
62
+ def package bundles=[config.stylesheet, config.javascript], options={}
64
63
  sprockets = Sprockets::Environment.new(ROOT) do |environment|
65
- environment.js_compressor = :uglify
66
- environment.css_compressor = :scss
64
+ environment.gzip = true
65
+ environment.logger = SmallVictories.logger
66
+ environment.js_compressor = options[:js_compressor] || :uglify
67
+ environment.css_compressor = options[:css_compressor] || :sass
67
68
  end
68
69
 
69
70
  sprockets.append_path(config.full_source_path)
@@ -72,7 +73,7 @@ module SmallVictories
72
73
  if assets = sprockets.find_asset(bundle)
73
74
  prefix, basename = assets.pathname.to_s.split('/')[-2..-1]
74
75
  FileUtils.mkpath config.full_destination_path
75
- assets.write_to "#{config.full_destination_path}#{basename}"
76
+ assets.write_to File.join(config.full_destination_path, basename)
76
77
  SmallVictories.logger.info "compiled #{config.destination}/#{basename}"
77
78
  end
78
79
  rescue => e
@@ -83,22 +84,31 @@ module SmallVictories
83
84
 
84
85
  def prefix_css
85
86
  begin
86
- path = "#{config.full_destination_path}#{config.stylesheet}"
87
+ path = File.join(config.full_destination_path, config.stylesheet)
87
88
  css = File.open(path).read
88
89
  prefixed = AutoprefixerRails.process(css, browsers: ['last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'], cascade: false)
89
90
  File.open(path, 'w') { |file| file.write(prefixed.css) }
90
91
 
91
92
  sprockets = Sprockets::Environment.new(ROOT) do |environment|
92
- environment.css_compressor = :scss
93
+ environment.css_compressor = :yui
93
94
  end
94
95
  sprockets.append_path(config.full_destination_path)
95
- assets = sprockets.find_asset(config.stylesheet)
96
- assets.write_to "#{config.full_destination_path}#{config.stylesheet}"
97
-
98
- SmallVictories.logger.info "prefixed #{config.destination}/#{config.stylesheet}"
96
+ if assets = sprockets.find_asset(config.stylesheet)
97
+ assets.write_to File.join(config.full_destination_path, config.stylesheet)
98
+ SmallVictories.logger.info "prefixed #{config.destination}/#{config.stylesheet}"
99
+ end
99
100
  rescue => e
100
101
  SmallVictories.logger.error "#{path}\n#{e}"
101
102
  end
102
103
  end
104
+
105
+ def minify_css
106
+ package [config.stylesheet]
107
+ prefix_css
108
+ end
109
+
110
+ def minify_js
111
+ package [config.javascript], { js_compressor: :closure }
112
+ end
103
113
  end
104
114
  end
@@ -5,8 +5,8 @@ module SmallVictories
5
5
  attr_accessor :config
6
6
 
7
7
  def initialize
8
- self.config = if File.exists?('_config.yml')
9
- YAML.load(File.read('_config.yml')) || {}
8
+ self.config = if File.exists?(CONFIG_FILE)
9
+ YAML.load(File.read(CONFIG_FILE)) || {}
10
10
  else
11
11
  {}
12
12
  end
@@ -21,7 +21,7 @@ module SmallVictories
21
21
  end
22
22
 
23
23
  def full_source_path
24
- "#{ROOT}/#{source}/"
24
+ File.join(ROOT, source)
25
25
  end
26
26
 
27
27
  def destination
@@ -29,7 +29,7 @@ module SmallVictories
29
29
  end
30
30
 
31
31
  def full_destination_path
32
- "#{ROOT}/#{destination}/"
32
+ File.join(ROOT, destination)
33
33
  end
34
34
 
35
35
  def javascript
@@ -44,8 +44,16 @@ module SmallVictories
44
44
  config_file(:layout) || DEFAULT_LAYOUT
45
45
  end
46
46
 
47
+ def full_layout_path
48
+ File.join(full_source_path, layout)
49
+ end
50
+
47
51
  def includes
48
52
  config_file(:includes) || DEFAULT_INCLUDES
49
53
  end
54
+
55
+ def full_includes_path
56
+ File.join(full_source_path, includes)
57
+ end
50
58
  end
51
59
  end
@@ -1,7 +1,7 @@
1
1
  module SmallVictories
2
- CONFIG_FILE = '_config.yml'
3
- DEFAULT_SOURCE = 'dev'
4
- DEFAULT_DESTINATION = 'prod'
2
+ CONFIG_FILE = '_sv_config.yml'
3
+ DEFAULT_SOURCE = '_'
4
+ DEFAULT_DESTINATION = ''
5
5
  DEFAULT_STYLESHEET = '_sv_custom.css'
6
6
  DEFAULT_JAVASCRIPT = '_sv_custom.js'
7
7
  DEFAULT_LAYOUT = '_layout.liquid'
@@ -1,3 +1,3 @@
1
1
  module SmallVictories
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -12,7 +12,6 @@ module SmallVictories
12
12
  Listen.to(
13
13
  compiler.config.full_source_path,
14
14
  force_polling: true,
15
- ignore: [/#{compiler.config.destination}/],
16
15
  &(listen_handler)
17
16
  )
18
17
  end
@@ -38,10 +37,15 @@ module SmallVictories
38
37
  def watch
39
38
  SmallVictories.logger.debug "👋"
40
39
  SmallVictories.logger.debug "👀"
40
+
41
+ pid = Process.fork { system('guard -i --guardfile .sv_guardfile') }
42
+ Process.detach(pid)
43
+
41
44
  listener = build_listener
42
45
  listener.start
43
46
 
44
47
  trap("INT") do
48
+ Process.kill "TERM", pid
45
49
  listener.stop
46
50
  puts "✋ Halting auto-regeneration."
47
51
  exit 0
@@ -18,13 +18,17 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency 'autoprefixer-rails', "~> 6.0"
21
+ spec.add_runtime_dependency 'autoprefixer-rails', '~> 6.0'
22
22
  spec.add_runtime_dependency 'coffee-script', '~> 2.4'
23
+ spec.add_runtime_dependency 'guard', '~> 2.13'
24
+ spec.add_runtime_dependency 'guard-livereload', '~> 2.5'
23
25
  spec.add_runtime_dependency 'listen', '~> 3.0'
24
- spec.add_runtime_dependency 'liquid', "~> 3.0"
25
- spec.add_runtime_dependency 'sassc', "~> 1.6"
26
+ spec.add_runtime_dependency 'liquid', '~> 3.0'
27
+ spec.add_runtime_dependency 'sassc', '~> 1.6'
26
28
  spec.add_runtime_dependency 'sprockets', '~> 3.4'
27
29
  spec.add_runtime_dependency 'uglifier', '~> 2.7'
30
+ spec.add_runtime_dependency 'yui-compressor', '~> 0.12'
31
+ spec.add_runtime_dependency 'closure-compiler', '~> 1.1'
28
32
 
29
33
  spec.add_development_dependency "bundler", "~> 1.7"
30
34
  spec.add_development_dependency "rake", "~> 10.0"
data/spec/builder_spec.rb CHANGED
@@ -6,16 +6,17 @@ describe SmallVictories do
6
6
  context 'with folder' do
7
7
  it 'sets up default files' do
8
8
  builder.setup 'spec/fixtures/new'
9
- expect(File.exists?('fixtures/new/_config.yml')).to eq true
10
- expect(File.exists?('fixtures/new/dev/_layout.liquid')).to eq true
11
- expect(File.exists?('fixtures/new/dev/index.liquid')).to eq true
12
- expect(File.exists?('fixtures/new/dev/_includes/_head.liquid')).to eq true
13
- expect(File.exists?('fixtures/new/dev/_sv_custom.js')).to eq true
14
- expect(File.exists?('fixtures/new/dev/_sv_custom.css')).to eq true
9
+ expect(File.exists?('fixtures/new/_sv_config.yml')).to eq true
10
+ expect(File.exists?('fixtures/new/.sv_guardfile')).to eq true
11
+ expect(File.exists?('fixtures/new/_/_layout.liquid')).to eq true
12
+ expect(File.exists?('fixtures/new/_/index.liquid')).to eq true
13
+ expect(File.exists?('fixtures/new/_/_includes/_head.liquid')).to eq true
14
+ expect(File.exists?('fixtures/new/_/_sv_custom.js')).to eq true
15
+ expect(File.exists?('fixtures/new/_/_sv_custom.css')).to eq true
15
16
  end
16
17
 
17
18
  after do
18
- %w(fixtures/new/_config.yml fixtures/new/dev/index.liquid fixtures/new/dev/_sv_custom.css fixtures/new/dev/_sv_custom.js fixtures/new/dev/_includes/_head.liquid fixtures/new/dev/_layout.liquid).each { |path| clean_file(path) }
19
+ %w(fixtures/new/_sv_config.yml fixtures/new/.sv_guardfile fixtures/new/_/index.liquid fixtures/new/_/_sv_custom.css fixtures/new/_/_sv_custom.js fixtures/new/_/_includes/_head.liquid fixtures/new/_/_layout.liquid).each { |path| clean_file(path) }
19
20
  end
20
21
  end
21
22
  end
@@ -39,19 +39,33 @@ describe SmallVictories do
39
39
  end
40
40
 
41
41
  describe '#compile_css' do
42
- it 'compules and prefixes the css file' do
42
+ it 'compiles the css file' do
43
43
  compiler.compile_css
44
+ expect(File.open(destination_css).read).to include '.bootstrap{color:black;box-sizing:content-box}html{background:white}body div{background:red}p{font-size:30px}'
45
+ end
46
+ end
47
+
48
+ describe '#minify_css' do
49
+ it 'compiles and prefixes the css file' do
50
+ compiler.minify_css
44
51
  expect(File.open(destination_css).read).to include '.bootstrap{color:black;-webkit-box-sizing:content-box;box-sizing:content-box}html{background:white}body div{background:red}p{font-size:30px}'
45
52
  end
46
53
  end
47
54
 
48
55
  describe '#compile_js' do
49
- it 'compules the js file' do
56
+ it 'compiles the js file' do
50
57
  compiler.compile_js
51
58
  expect(File.open(destination_js).read).to include '(function(){alert("hi")}).call(this),console.log("hi");'
52
59
  end
53
60
  end
54
61
 
62
+ describe '#minify_js' do
63
+ it 'minifies the js file' do
64
+ compiler.minify_js
65
+ expect(File.open(destination_js).read).to include '(function(){alert("hi")}).call(this);console.log("hi");'
66
+ end
67
+ end
68
+
55
69
  describe '#compile_html' do
56
70
  it 'compiles the liquid files' do
57
71
  compiler.compile_html
@@ -5,11 +5,11 @@ describe SmallVictories do
5
5
 
6
6
  context 'with no config file' do
7
7
  it 'defaults to source directory' do
8
- expect(configuration.source).to eq 'dev'
8
+ expect(configuration.source).to eq '_'
9
9
  end
10
10
 
11
11
  it 'defaults to destination directory' do
12
- expect(configuration.destination).to eq 'prod'
12
+ expect(configuration.destination).to eq ''
13
13
  end
14
14
 
15
15
  it 'defaults stylesheet file' do
@@ -31,7 +31,7 @@ describe SmallVictories do
31
31
 
32
32
  context 'with config file' do
33
33
  before do
34
- FileUtils.cp('fixtures/source/_config.yml', './')
34
+ FileUtils.cp('fixtures/source/_sv_config.yml', './')
35
35
  end
36
36
 
37
37
  it 'reads the source folder' do
@@ -0,0 +1 @@
1
+ .bootstrap{color:black;box-sizing:content-box}html{background:white}body div{background:red}p{font-size:30px}
@@ -0,0 +1 @@
1
+ (function(){alert("hi")}).call(this),console.log("hi");
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <h1>Index</h1>
3
+ Liquid error: No such template 'snippet'
4
+
5
+ </html>
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ RSpec.configure do |config|
9
9
  end
10
10
 
11
11
  config.after do
12
- %w(./fixtures/destination/_sv_custom.css ./fixtures/destination/_sv_custom.js ./fixtures/destination/index.html ./_config.yml).each { |path| clean_file(path) }
12
+ %w(./fixtures/destination/_sv_custom.css ./fixtures/destination/_sv_custom.js ./fixtures/destination/index.html ./_sv_config.yml).each { |path| clean_file(path) }
13
13
  end
14
14
  end
15
15
 
data/src/Guardfile ADDED
@@ -0,0 +1,37 @@
1
+ # A Small Victories Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ directories %w(.).select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
6
+
7
+ guard 'livereload' do
8
+ extensions = {
9
+ css: :css,
10
+ js: :js,
11
+ html: :html,
12
+ png: :png,
13
+ gif: :gif,
14
+ jpg: :jpg,
15
+ jpeg: :jpeg,
16
+ }
17
+
18
+ # file types LiveReload may optimize refresh for
19
+ compiled_exts = extensions.values.uniq
20
+ watch(%r{./.+\.(#{compiled_exts * '|'})})
21
+
22
+ extensions.each do |ext, type|
23
+ watch(%r{
24
+ (?:app|vendor)
25
+ (?:/assets/\w+/(?<path>[^.]+) # path+base without extension
26
+ (?<ext>\.#{ext})) # matching extension (must be first encountered)
27
+ (?:\.\w+|$) # other extensions
28
+ }x) do |m|
29
+ path = m[1]
30
+ "/_/#{path}.#{type}"
31
+ end
32
+ end
33
+
34
+ watch(%r{_/.+\.liquid})
35
+ end
36
+
37
+ logger level: :warn
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smallvictories
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Dijkstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: autoprefixer-rails
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.13'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-livereload
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.5'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: listen
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,34 @@ dependencies:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
138
  version: '2.7'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yui-compressor
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.12'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.12'
153
+ - !ruby/object:Gem::Dependency
154
+ name: closure-compiler
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.1'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.1'
111
167
  - !ruby/object:Gem::Dependency
112
168
  name: bundler
113
169
  requirement: !ruby/object:Gem::Requirement
@@ -178,10 +234,12 @@ files:
178
234
  - spec/configuration_spec.rb
179
235
  - spec/fixtures/_sv_custom.css
180
236
  - spec/fixtures/destination/.gitkeep
237
+ - spec/fixtures/destination_sv_custom.css
238
+ - spec/fixtures/destination_sv_custom.js
239
+ - spec/fixtures/destinationindex.html
181
240
  - spec/fixtures/invalid/_layout.liquid
182
241
  - spec/fixtures/invalid/_sass/stylesheet.scss
183
242
  - spec/fixtures/invalid/index.html
184
- - spec/fixtures/source/_config.yml
185
243
  - spec/fixtures/source/_includes/_snippet.liquid
186
244
  - spec/fixtures/source/_javascripts/scripts.coffee
187
245
  - spec/fixtures/source/_javascripts/scripts.js
@@ -189,10 +247,12 @@ files:
189
247
  - spec/fixtures/source/_stylesheets/bootstrap.scss
190
248
  - spec/fixtures/source/_stylesheets/extra.scss
191
249
  - spec/fixtures/source/_stylesheets/stylesheet.scss
250
+ - spec/fixtures/source/_sv_config.yml
192
251
  - spec/fixtures/source/_sv_custom.css
193
252
  - spec/fixtures/source/_sv_custom.js
194
253
  - spec/fixtures/source/index.html
195
254
  - spec/spec_helper.rb
255
+ - src/Guardfile
196
256
  - src/config.yml
197
257
  - src/head.liquid
198
258
  - src/index.liquid
@@ -229,10 +289,12 @@ test_files:
229
289
  - spec/configuration_spec.rb
230
290
  - spec/fixtures/_sv_custom.css
231
291
  - spec/fixtures/destination/.gitkeep
292
+ - spec/fixtures/destination_sv_custom.css
293
+ - spec/fixtures/destination_sv_custom.js
294
+ - spec/fixtures/destinationindex.html
232
295
  - spec/fixtures/invalid/_layout.liquid
233
296
  - spec/fixtures/invalid/_sass/stylesheet.scss
234
297
  - spec/fixtures/invalid/index.html
235
- - spec/fixtures/source/_config.yml
236
298
  - spec/fixtures/source/_includes/_snippet.liquid
237
299
  - spec/fixtures/source/_javascripts/scripts.coffee
238
300
  - spec/fixtures/source/_javascripts/scripts.js
@@ -240,6 +302,7 @@ test_files:
240
302
  - spec/fixtures/source/_stylesheets/bootstrap.scss
241
303
  - spec/fixtures/source/_stylesheets/extra.scss
242
304
  - spec/fixtures/source/_stylesheets/stylesheet.scss
305
+ - spec/fixtures/source/_sv_config.yml
243
306
  - spec/fixtures/source/_sv_custom.css
244
307
  - spec/fixtures/source/_sv_custom.js
245
308
  - spec/fixtures/source/index.html