high_five 0.0.7 → 0.0.8

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.
data/Gemfile.lock CHANGED
@@ -3,9 +3,9 @@ PATH
3
3
  specs:
4
4
  high_five (0.0.7)
5
5
  compass (~> 0.12.2)
6
- json
7
6
  sprockets (~> 2.9.0)
8
7
  thor (~> 0.17.0)
8
+ uglifier (~> 2.1.1)
9
9
  yui-compressor (~> 0.9.6)
10
10
 
11
11
  GEM
@@ -21,9 +21,10 @@ GEM
21
21
  fssm (>= 0.2.7)
22
22
  sass (~> 3.1)
23
23
  diff-lcs (1.2.1)
24
+ execjs (1.4.0)
25
+ multi_json (~> 1.0)
24
26
  fssm (0.2.10)
25
27
  hike (1.2.2)
26
- json (1.7.7)
27
28
  multi_json (1.7.2)
28
29
  open4 (1.3.0)
29
30
  rack (1.5.2)
@@ -43,6 +44,9 @@ GEM
43
44
  tilt (~> 1.1, != 1.3.0)
44
45
  thor (0.17.0)
45
46
  tilt (1.3.7)
47
+ uglifier (2.1.1)
48
+ execjs (>= 0.3.0)
49
+ multi_json (~> 1.0, >= 1.0.2)
46
50
  yui-compressor (0.9.6)
47
51
  POpen4 (>= 0.1.4)
48
52
 
data/high_five.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.add_runtime_dependency "thor", "~>0.17.0"
19
19
  s.add_runtime_dependency "compass", "~>0.12.2"
20
20
  s.add_runtime_dependency "yui-compressor", "~>0.9.6"
21
+ s.add_runtime_dependency "uglifier", "~>2.1.1"
21
22
  s.add_runtime_dependency "sprockets", "~>2.9.0"
22
- s.add_runtime_dependency "json"
23
23
  s.add_development_dependency "rspec", "~>2.13.0"
24
24
 
25
25
  s.files = `git ls-files`.split("\n")
data/lib/high_five/cli.rb CHANGED
@@ -11,7 +11,6 @@ module HighFive
11
11
  include HighFive::DeployTask
12
12
  include HighFive::AndroidTasks
13
13
  # source root path for Thor::Actions commands
14
-
15
14
 
16
15
  class_option :version, type: :boolean, desc: "Print version and ext", aliases: "-v"
17
16
  def initialize(*args)
@@ -14,7 +14,8 @@ module HighFive
14
14
  :compass_dir,
15
15
  :js_settings, #serialized out to HighFive.Settings in index.html
16
16
  :is_environment, #boolean for if this config is an environment platform
17
- :dev_index #copy generated index.html to here on build for use in development
17
+ :dev_index, #copy generated index.html to here on build for use in development
18
+ :minify #defaults to true in production mode and false otherwise, overridable
18
19
 
19
20
 
20
21
  def self.configure(&block)
@@ -53,6 +54,7 @@ module HighFive
53
54
  new_config.asset_paths += self.asset_paths
54
55
  new_config.compass_dir ||= self.compass_dir
55
56
  new_config.dev_index ||= self.dev_index
57
+ new_config.minify ||= self.minify
56
58
  new_config.js_settings.merge! self.js_settings do |key, new_setting, old_setting|
57
59
  new_setting || old_setting #don't clobber settings from the parent
58
60
  end
@@ -79,6 +81,7 @@ module HighFive
79
81
  self.dev_index = config.dev_index
80
82
  self.page_title = config.page_title
81
83
  self.meta = config.meta
84
+ self.minify = config.minify
82
85
  else
83
86
  @static_assets = []
84
87
  @static_javascripts = []
@@ -119,7 +122,11 @@ module HighFive
119
122
 
120
123
  def environment(name, &block)
121
124
  platform(name, &block)
122
- @platform_configs[name.to_s].is_environment = true
125
+ platform_config = @platform_configs[name.to_s]
126
+ platform_config.is_environment = true
127
+ if (name.to_s == 'production')
128
+ platform_config.minify = :uglifier if platform_config.minify.nil?
129
+ end
123
130
  end
124
131
 
125
132
  def setting(hash)
@@ -1,5 +1,7 @@
1
1
  require 'sprockets'
2
2
  require 'sass'
3
+ require 'uglifier'
4
+
3
5
  module HighFive
4
6
  module DeployTask
5
7
 
@@ -26,13 +28,12 @@ module HighFive
26
28
  raise "Please set config.destination" if @config.destination.nil?
27
29
  self.destination_root = @config.destination
28
30
  FileUtils.rm_rf(self.destination_root)
31
+ FileUtils.mkdir_p(self.destination_root)
29
32
 
30
33
  #todo add to config
31
34
  say "Deploying app: <#{@platform}> <#{options[:environment]}>"
32
35
  say "\t#{self.destination_root}"
33
36
  say " -Weinre url: #{@weinre_url}" if @weinre_url
34
-
35
-
36
37
 
37
38
  if @config.compass_dir
38
39
  compass_dir = File.join(base_config.root, @config.compass_dir)
@@ -65,8 +66,22 @@ module HighFive
65
66
  if (@environment == "production")
66
67
  appjs = File.join(self.destination_root, "app.js")
67
68
  @javascripts = ["app.js"]
68
- say " create #{appjs}", :green
69
- bundle.write_to(appjs)
69
+
70
+ output_js = nil
71
+ if @config.minify == :uglifier
72
+ say " uglify #{appjs}", :green
73
+ output_js = Uglifier.compile(bundle.to_s)
74
+ elsif @config.minify == :yui
75
+ say " minify #{appjs}", :green
76
+ output_js = YUI::JavaScriptCompressor.new.compress(bundle.to_s)
77
+ else
78
+ say " create #{appjs}", :green
79
+ output_js = bundle.to_s
80
+ end
81
+ File.open(appjs, "w") do |file|
82
+ file.write output_js
83
+ end
84
+ output_js = nil
70
85
  else
71
86
  # Add each of the javascript files to the generated folder
72
87
  @javascripts = []
@@ -121,7 +136,7 @@ module HighFive
121
136
  # Build index.html
122
137
  say "Generating index.html"
123
138
  template File.join(@config_root, "index.html.erb"), File.join(self.destination_root, "index.html")
124
- if (@config.dev_index)
139
+ if (@environment == 'development' && !@config.dev_index.nil?)
125
140
  say "Cloning to #{@config.dev_index}"
126
141
  FileUtils.cp(File.join(self.destination_root, "index.html"), File.join(@config.root, @config.dev_index))
127
142
  end
@@ -1,3 +1,3 @@
1
1
  module HighFive
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/spec/config_spec.rb CHANGED
@@ -76,6 +76,13 @@ describe HighFive::Config do
76
76
  config.js_settings.should be_has_key(:base_url)
77
77
  config.js_settings.should be_has_key(:android_flag)
78
78
  end
79
+
80
+ it "sets minify to true by default for production environments" do
81
+ config = @config.build_platform_config('android').build_platform_config('production')
82
+ config.minify.should eq :uglifier
83
+ config = @config.build_platform_config(:production).build_platform_config(:android)
84
+ config.minify.should eq :uglifier
85
+ end
79
86
  end
80
87
 
81
88
  context "easy settings" do
data/spec/deploy_spec.rb CHANGED
@@ -8,8 +8,8 @@ describe HighFive::DeployTask do
8
8
  FileUtils.cp_r(Dir[File.join(File.dirname(__FILE__), "dummy", "*")], @project_root)
9
9
  end
10
10
 
11
- def cli
12
- cli = HighFive::Cli.new
11
+ def cli(options={environment: 'development'})
12
+ cli = HighFive::Cli.new([], options)
13
13
  cli.instance_variable_set("@base_config", HighFive::Config.instance)
14
14
  cli
15
15
  end
@@ -30,9 +30,8 @@ describe HighFive::DeployTask do
30
30
  config.platform :android do |android|
31
31
 
32
32
  end
33
-
34
- cli.deploy("android")
35
33
  end
34
+ cli.deploy("android")
36
35
  end
37
36
 
38
37
  after(:all) { destroy_dummy_app! }
@@ -59,19 +58,18 @@ describe HighFive::DeployTask do
59
58
  config.platform :android do |android|
60
59
 
61
60
  end
62
-
63
- cli.deploy("android")
64
61
  end
62
+ cli.deploy("android")
65
63
  end
66
64
 
67
65
  after(:all) { destroy_dummy_app! }
68
66
 
69
67
  it "should invoke compass to compile stylesheets" do
70
- expect(File.join(@project_root, "stylesheets", "screen.css")).to exist
68
+ expect(File.join(@project_root, "stylesheets", "sass.css")).to exist
69
+ expect(File.join(@project_root, "www", "stylesheets", "sass.css")).to exist
71
70
  end
72
71
 
73
72
  it "should copy the css sheets to the deploy directory" do
74
- pending "better compass integration"
75
73
  expect(File.join(@project_root, "www", "stylesheets", "screen.css")).to exist
76
74
  end
77
75
  end
@@ -88,17 +86,46 @@ describe HighFive::DeployTask do
88
86
  config.destination "www-web"
89
87
  config.dev_index "index-debug.html"
90
88
  end
91
-
92
- cli.deploy("web")
93
89
  end
90
+ cli.deploy("web")
94
91
  end
95
92
 
93
+ after(:all) { destroy_dummy_app! }
94
+
96
95
  it "should clone index.html to index-debug.html when directed" do
97
96
  index = File.read(File.join(@project_root, "www-web", "index.html"))
98
-
99
97
  index_debug = File.read(File.join(@project_root, "index-debug.html"))
100
98
  index.should eq index_debug
101
99
  end
102
100
  end
103
101
 
102
+ context "Production environment" do
103
+ before :all do
104
+ create_dummy_app!
105
+ HighFive::Config.configure do |config|
106
+ config.root = @project_root
107
+ config.destination = "www"
108
+ config.compass_dir = "."
109
+ config.assets "stylesheets"
110
+ config.platform :web do |web|
111
+ config.dev_index "index-debug.html"
112
+ end
113
+ config.environment :production do |prod|
114
+
115
+ end
116
+
117
+ end
118
+ cli(environment: 'production').deploy("web")
119
+ end
120
+
121
+ after(:all) { destroy_dummy_app! }
122
+
123
+ it "should produce just one javascript file" do
124
+ expect(File.join(@project_root, "www", "app.js")).to exist
125
+ end
126
+ it "should not clone index.html to index-debug.html" do
127
+ File.exist?(File.join(@project_root, "index-debug.html")).should be_false
128
+ end
129
+ end
130
+
104
131
  end
@@ -1 +1,7 @@
1
- alert("This application is awesome!");
1
+ alert("This application is awesome!");
2
+ alert("This is a second line of code");
3
+
4
+ function test() {
5
+ var my_long_variable_name = "Something!";
6
+ alert(my_long_variable_name);
7
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: high_five
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -60,13 +60,13 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.9.6
62
62
  - !ruby/object:Gem::Dependency
63
- name: sprockets
63
+ name: uglifier
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 2.9.0
69
+ version: 2.1.1
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,23 +74,23 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 2.9.0
77
+ version: 2.1.1
78
78
  - !ruby/object:Gem::Dependency
79
- name: json
79
+ name: sprockets
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ! '>='
83
+ - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 2.9.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
91
+ - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 2.9.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rspec
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -148,11 +148,7 @@ files:
148
148
  - spec/dummy/config/high_five/index.html.erb
149
149
  - spec/dummy/javascripts/app.js
150
150
  - spec/dummy/javascripts/app/component.js
151
- - spec/dummy/sass/ie.scss
152
- - spec/dummy/sass/print.scss
153
- - spec/dummy/sass/screen.scss
154
- - spec/dummy/stylesheets/ie.css
155
- - spec/dummy/stylesheets/print.css
151
+ - spec/dummy/sass/sass.scss
156
152
  - spec/dummy/stylesheets/screen.css
157
153
  - spec/init_spec.rb
158
154
  - spec/spec_helper.rb
@@ -197,11 +193,7 @@ test_files:
197
193
  - spec/dummy/config/high_five/index.html.erb
198
194
  - spec/dummy/javascripts/app.js
199
195
  - spec/dummy/javascripts/app/component.js
200
- - spec/dummy/sass/ie.scss
201
- - spec/dummy/sass/print.scss
202
- - spec/dummy/sass/screen.scss
203
- - spec/dummy/stylesheets/ie.css
204
- - spec/dummy/stylesheets/print.css
196
+ - spec/dummy/sass/sass.scss
205
197
  - spec/dummy/stylesheets/screen.css
206
198
  - spec/init_spec.rb
207
199
  - spec/spec_helper.rb
@@ -1,5 +0,0 @@
1
- /* Welcome to Compass. Use this file to write IE specific override styles.
2
- * Import this file using the following HTML or equivalent:
3
- * <!--[if IE]>
4
- * <link href="/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
5
- * <![endif]--> */
@@ -1,3 +0,0 @@
1
- /* Welcome to Compass. Use this file to define print styles.
2
- * Import this file using the following HTML or equivalent:
3
- * <link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" /> */
@@ -1,5 +0,0 @@
1
- /* Welcome to Compass. Use this file to write IE specific override styles.
2
- * Import this file using the following HTML or equivalent:
3
- * <!--[if IE]>
4
- * <link href="/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
5
- * <![endif]--> */
@@ -1,3 +0,0 @@
1
- /* Welcome to Compass. Use this file to define print styles.
2
- * Import this file using the following HTML or equivalent:
3
- * <link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" /> */
File without changes