qbuild 0.1.0.pre1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/COC.md +1 -1
- data/lib/assets/.qbuild.json +6 -9
- data/lib/qbuild.rb +39 -4
- data/lib/qbuild/build_action.rb +21 -0
- data/lib/qbuild/config.rb +15 -2
- data/lib/qbuild/jshandler.rb +18 -11
- data/lib/qbuild/stylesheet_handler.rb +30 -0
- data/lib/qbuild/version.rb +1 -1
- metadata +6 -5
- data/lib/qbuild/config_reader.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0950972156cdc46e57489743403c62f5815e280
|
4
|
+
data.tar.gz: 3eade37f1d566130f4a31ad1349599d0c6ae0218
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1c46340f454eb02224cc3dc33323f49519a47c6e4b349f5febc1ad540afb3002139266efbf3625e97647563d664b50df92b0c1c577d8a154710db66505f9955
|
7
|
+
data.tar.gz: e4b75dce9394c5fb9de85526b09054f6f8dc949cd22fc0dd589199890ec38c513c5c71fbd93e56a70c247ac61978657d3765d3124a2afe0bc795d8ed0aa1a8e8
|
data/COC.md
CHANGED
data/lib/assets/.qbuild.json
CHANGED
@@ -2,15 +2,12 @@
|
|
2
2
|
"js_paths": [
|
3
3
|
"scripts"
|
4
4
|
],
|
5
|
-
"
|
6
|
-
|
5
|
+
"minified_js_path": "scripts",
|
6
|
+
"stylesheet_filenames": [
|
7
|
+
"stylesheets/style.scss"
|
7
8
|
],
|
9
|
+
"minified_stylesheets_path": "stylesheets",
|
8
10
|
"stylesheet_name": "style.min.css",
|
9
|
-
"pre_build": [
|
10
|
-
|
11
|
-
"echo Starting build..."
|
12
|
-
],
|
13
|
-
"post_build": [
|
14
|
-
"echo Build finished!"
|
15
|
-
]
|
11
|
+
"pre_build": [],
|
12
|
+
"post_build": []
|
16
13
|
}
|
data/lib/qbuild.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require_relative 'qbuild/version'
|
2
2
|
require_relative 'qbuild/config'
|
3
3
|
require_relative 'qbuild/jshandler'
|
4
|
+
require_relative 'qbuild/stylesheet_handler'
|
5
|
+
require_relative 'qbuild/build_action'
|
4
6
|
|
5
7
|
module Qbuild
|
6
8
|
def self.main(arg)
|
@@ -10,6 +12,8 @@ module Qbuild
|
|
10
12
|
display_version
|
11
13
|
elsif arg[0] == '--options' || arg[0] == '-o'
|
12
14
|
display_options
|
15
|
+
elsif arg[0] == 'run'
|
16
|
+
build_this_thing
|
13
17
|
else
|
14
18
|
display_help
|
15
19
|
end
|
@@ -20,9 +24,34 @@ module Qbuild
|
|
20
24
|
def self.init
|
21
25
|
Qbuild::Config.init
|
22
26
|
puts
|
23
|
-
PadUtils.puts_c
|
27
|
+
PadUtils.puts_c 'Qbuild initialized.', :green
|
24
28
|
PadUtils.puts_c "Update options in '.qbuild.json'"
|
25
29
|
puts
|
30
|
+
rescue
|
31
|
+
PadUtils.puts_c 'Something went really wrong.', :red
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.build_this_thing
|
35
|
+
start_time = Time.now
|
36
|
+
puts
|
37
|
+
unless Qbuild::Config.pre_build.nil? || Qbuild::Config.pre_build.empty?
|
38
|
+
PadUtils.puts_c 'Running pre-build scripts...', :green
|
39
|
+
Qbuild::BuildAction.run_pre_build_actions
|
40
|
+
end
|
41
|
+
PadUtils.puts_c 'Minifying JavaScript...', :green
|
42
|
+
Qbuild::Jshandler.minify_js
|
43
|
+
PadUtils.puts_c 'Converting Sass & minifying CSS...', :green
|
44
|
+
Qbuild::StylesheetHandler.transpile_and_minify_style
|
45
|
+
unless Qbuild::Config.post_build.nil? || Qbuild::Config.post_build.empty?
|
46
|
+
PadUtils.puts_c 'Running post-build scripts...', :green
|
47
|
+
Qbuild::BuildAction.run_post_build_actions
|
48
|
+
end
|
49
|
+
end_time = Time.now
|
50
|
+
interval = PadUtils.interval(start_time, end_time, :seconds)
|
51
|
+
puts
|
52
|
+
PadUtils.puts_c "Completed in #{interval} seconds!", :green
|
53
|
+
rescue
|
54
|
+
PadUtils.puts_c 'Something went really wrong.', :red
|
26
55
|
end
|
27
56
|
|
28
57
|
def self.display_options
|
@@ -32,12 +61,18 @@ module Qbuild
|
|
32
61
|
puts "- #{path}"
|
33
62
|
end
|
34
63
|
|
35
|
-
|
36
|
-
PadUtils.puts_c '
|
37
|
-
|
64
|
+
stylesheet_filenames = Qbuild::Config.stylesheet_filenames
|
65
|
+
PadUtils.puts_c 'stylesheet_filenames:', :blue
|
66
|
+
stylesheet_filenames.each do |path|
|
38
67
|
puts "- #{path}"
|
39
68
|
end
|
40
69
|
|
70
|
+
PadUtils.puts_c 'minified_js_path:', :blue
|
71
|
+
puts "- #{Qbuild::Config.minified_js_path}"
|
72
|
+
|
73
|
+
PadUtils.puts_c 'minified_stylesheets_path', :blue
|
74
|
+
puts "- #{Qbuild::Config.minified_stylesheets_path}"
|
75
|
+
|
41
76
|
PadUtils.puts_c 'stylesheet_name:', :blue
|
42
77
|
puts "- #{Qbuild::Config.stylesheet_name}"
|
43
78
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Qbuild
|
2
|
+
module BuildAction
|
3
|
+
def self.run_pre_build_actions
|
4
|
+
actions = Qbuild::Config.pre_build
|
5
|
+
unless actions.nil?
|
6
|
+
actions.each do |action|
|
7
|
+
system action.to_s
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.run_post_build_actions
|
13
|
+
actions = Qbuild::Config.post_build
|
14
|
+
unless actions.nil?
|
15
|
+
actions.each do |action|
|
16
|
+
system action.to_s
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/qbuild/config.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
require 'pad_utils'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
module Qbuild
|
4
5
|
module Config
|
5
6
|
INIT_CONFIG_FILE = "#{File.dirname(__FILE__)}/../assets/.qbuild.json".freeze
|
6
7
|
|
8
|
+
def self.create_target_directory(dir_name)
|
9
|
+
FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
|
10
|
+
end
|
11
|
+
|
7
12
|
def self.init
|
8
13
|
PadUtils.copy_file(INIT_CONFIG_FILE, '.')
|
9
14
|
end
|
@@ -12,8 +17,16 @@ module Qbuild
|
|
12
17
|
read_key(:js_paths)
|
13
18
|
end
|
14
19
|
|
15
|
-
def self.
|
16
|
-
read_key(:
|
20
|
+
def self.minified_js_path
|
21
|
+
read_key(:minified_js_path)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.minified_stylesheets_path
|
25
|
+
read_key(:minified_stylesheets_path)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.stylesheet_filenames
|
29
|
+
read_key(:stylesheet_filenames)
|
17
30
|
end
|
18
31
|
|
19
32
|
def self.stylesheet_name
|
data/lib/qbuild/jshandler.rb
CHANGED
@@ -1,19 +1,26 @@
|
|
1
1
|
require 'uglifier'
|
2
2
|
require 'pad_utils'
|
3
|
-
require_relative '
|
3
|
+
require_relative 'config'
|
4
4
|
|
5
|
-
module
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
module Qbuild
|
6
|
+
module Jshandler
|
7
|
+
def self.minify_js
|
8
|
+
js_paths = Qbuild::Config.js_paths
|
9
|
+
min_js_path = Qbuild::Config.minified_js_path
|
10
|
+
Qbuild::Config.create_target_directory(min_js_path)
|
11
|
+
js_paths.each do |js_path|
|
12
|
+
Dir["#{js_path}/*.js"].each do |file|
|
13
|
+
unless file.include? '.min.js'
|
14
|
+
jsmin = Uglifier.new.compile(File.read(file))
|
15
|
+
File.write("#{min_js_path}/#{name_min_file(file)}", jsmin)
|
16
|
+
end
|
17
|
+
end
|
12
18
|
end
|
13
19
|
end
|
14
|
-
end
|
15
20
|
|
16
|
-
|
17
|
-
|
21
|
+
def self.name_min_file(file)
|
22
|
+
file = File.basename file
|
23
|
+
file.gsub(/(.*)(.js)(.*)/, '\1.min.js\3')
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'sass'
|
2
|
+
require 'pad_utils'
|
3
|
+
|
4
|
+
module Qbuild
|
5
|
+
module StylesheetHandler
|
6
|
+
def self.transpile_and_minify_style
|
7
|
+
style_formats = ['.css', '.scss']
|
8
|
+
style_filenames = Qbuild::Config.stylesheet_filenames
|
9
|
+
min_style_path = Qbuild::Config.minified_stylesheets_path
|
10
|
+
min_style_file = Qbuild::Config.stylesheet_name
|
11
|
+
Qbuild::Config.create_target_directory(min_style_path)
|
12
|
+
content = ''
|
13
|
+
style_filenames.each do |file|
|
14
|
+
next unless PadUtils.file_exist?(file)
|
15
|
+
next unless style_formats.include? File.extname(file)
|
16
|
+
next if file.include? '.min.css'
|
17
|
+
content += "\n#{File.read(file)}"
|
18
|
+
end
|
19
|
+
minified = scss_to_css content
|
20
|
+
File.write("#{min_style_path}/#{min_style_file}", minified)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.scss_to_css(content)
|
24
|
+
sass_engine = Sass::Engine.new(content, style: :compressed,
|
25
|
+
syntax: :scss,
|
26
|
+
cache: false)
|
27
|
+
sass_engine.render
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/qbuild/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qbuild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nico Schuele
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pad_utils
|
@@ -84,9 +84,10 @@ files:
|
|
84
84
|
- bin/qbuild
|
85
85
|
- lib/assets/.qbuild.json
|
86
86
|
- lib/qbuild.rb
|
87
|
+
- lib/qbuild/build_action.rb
|
87
88
|
- lib/qbuild/config.rb
|
88
|
-
- lib/qbuild/config_reader.rb
|
89
89
|
- lib/qbuild/jshandler.rb
|
90
|
+
- lib/qbuild/stylesheet_handler.rb
|
90
91
|
- lib/qbuild/version.rb
|
91
92
|
homepage: https://github.com/nicoschuele/qbuild
|
92
93
|
licenses:
|
@@ -103,9 +104,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
104
|
version: 2.2.2
|
104
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
106
|
requirements:
|
106
|
-
- - "
|
107
|
+
- - ">="
|
107
108
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
109
|
+
version: '0'
|
109
110
|
requirements: []
|
110
111
|
rubyforge_project:
|
111
112
|
rubygems_version: 2.5.1
|
data/lib/qbuild/config_reader.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'pad_utils'
|
2
|
-
|
3
|
-
module ConfigReader
|
4
|
-
def self.options
|
5
|
-
opts = {}
|
6
|
-
unless PadUtils.file_exist?('.qbuild.json')
|
7
|
-
opts = { js_path: 'scripts', scss_path: 'stylesheets', css_path: 'stylesheets', css_file: 'style.min.css' }
|
8
|
-
return opts
|
9
|
-
end
|
10
|
-
conf = read_config
|
11
|
-
opts = {
|
12
|
-
js_path: conf[:js_path],
|
13
|
-
scss_path: conf[:scss_path],
|
14
|
-
css_path: conf[:css_path],
|
15
|
-
css_file: conf[:css_file]
|
16
|
-
}
|
17
|
-
opts
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.read_config
|
21
|
-
PadUtils.json_file_to_hash('.qbuild.json')
|
22
|
-
end
|
23
|
-
end
|