high_five 0.0.8 → 0.1.0
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 +3 -1
- data/README.md +10 -1
- data/high_five.gemspec +2 -0
- data/lib/high_five/config.rb +46 -35
- data/lib/high_five/deploy_task.rb +19 -2
- data/lib/high_five/generators/manifest.erb +16 -0
- data/lib/high_five/version.rb +1 -1
- data/spec/deploy_spec.rb +4 -0
- metadata +18 -3
- data/lib/.DS_Store +0 -0
- data/lib/high_five/html_includes.html.erb +0 -1
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
high_five (0.0.
|
4
|
+
high_five (0.0.8)
|
5
5
|
compass (~> 0.12.2)
|
6
|
+
json (~> 1.7.7)
|
6
7
|
sprockets (~> 2.9.0)
|
7
8
|
thor (~> 0.17.0)
|
8
9
|
uglifier (~> 2.1.1)
|
@@ -25,6 +26,7 @@ GEM
|
|
25
26
|
multi_json (~> 1.0)
|
26
27
|
fssm (0.2.10)
|
27
28
|
hike (1.2.2)
|
29
|
+
json (1.7.7)
|
28
30
|
multi_json (1.7.2)
|
29
31
|
open4 (1.3.0)
|
30
32
|
rack (1.5.2)
|
data/README.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
High Five
|
2
2
|
=========
|
3
3
|
|
4
|
-
HTML5 build/deploy tool, usually used with PhoneGap
|
4
|
+
HTML5 build/deploy tool, usually used with PhoneGap but also for standalone web-based apps
|
5
|
+
|
6
|
+
Ruby
|
7
|
+
====
|
8
|
+
|
9
|
+
If you're on Windows, you need both Ruby and the Dev tools. There is a great tutorial here:
|
10
|
+
|
11
|
+
https://github.com/oneclick/rubyinstaller/wiki/development-kit
|
5
12
|
|
6
13
|
Installation
|
7
14
|
============
|
@@ -16,6 +23,8 @@ and also creating a few important files inside, most importantly high_five.rb.
|
|
16
23
|
Configuration
|
17
24
|
=============
|
18
25
|
|
26
|
+
```hi5 init``` will create all the directories you need, and almost all of your configuration will happen inside of ```config/high_five.rb```. It is reasonably well documented and contains a lot of sensible defaults. I hope to improve the documentation here over time, but for now go read ```high_five.rb```
|
27
|
+
|
19
28
|
|
20
29
|
Usage
|
21
30
|
=====
|
data/high_five.gemspec
CHANGED
@@ -20,8 +20,10 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_runtime_dependency "yui-compressor", "~>0.9.6"
|
21
21
|
s.add_runtime_dependency "uglifier", "~>2.1.1"
|
22
22
|
s.add_runtime_dependency "sprockets", "~>2.9.0"
|
23
|
+
s.add_runtime_dependency "json", '~> 1.7.7'
|
23
24
|
s.add_development_dependency "rspec", "~>2.13.0"
|
24
25
|
|
26
|
+
|
25
27
|
s.files = `git ls-files`.split("\n")
|
26
28
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
29
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/high_five/config.rb
CHANGED
@@ -1,21 +1,41 @@
|
|
1
1
|
require 'json'
|
2
2
|
module HighFive
|
3
3
|
class Config
|
4
|
-
attr_accessor :
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
4
|
+
attr_accessor :meta, # config.meta << { http-equiv: "Content-Type" content: "text/html; charset=utf-8" }
|
5
|
+
:static_assets,
|
6
|
+
:static_javascripts,
|
7
|
+
:static_stylesheets,
|
8
|
+
:sass_files,
|
9
|
+
:asset_paths,
|
10
|
+
:platform_configs,
|
11
|
+
:js_settings, #serialized out to HighFive.Settings in index.html
|
12
|
+
:is_environment #boolean for if this config is an environment platform
|
13
|
+
|
14
|
+
|
15
|
+
# shorthand for me to define lots and lots of config settings that need to be handled
|
16
|
+
# as attr_accessible, settable via setting(blah) instead of settings=blah, and also
|
17
|
+
# persisted to derived platform configs
|
18
|
+
def self.config_setting(*settings)
|
19
|
+
config_variables = []
|
20
|
+
settings.each do |setting|
|
21
|
+
attr_accessor setting
|
22
|
+
define_method setting do |*args|
|
23
|
+
var = "@#{setting}".to_sym
|
24
|
+
config_variables << var
|
25
|
+
instance_variable_set(var, args[0]) if args.length == 1
|
26
|
+
instance_variable_get(var)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
@@config_variables = config_variables
|
30
|
+
end
|
31
|
+
|
32
|
+
config_setting :root, # Root of the project
|
33
|
+
:destination, # generated folder for project('www')
|
34
|
+
:page_title, # <title>#{page_title}</title>
|
35
|
+
:compass_dir, # directory that contaings compass' config.rb
|
36
|
+
:dev_index, # copy generated index.html to here on build for use in development
|
37
|
+
:minify, # defaults to true in production mode and false otherwise, overridable
|
38
|
+
:manifest # generate html5 manifest
|
19
39
|
|
20
40
|
|
21
41
|
def self.configure(&block)
|
@@ -52,9 +72,11 @@ module HighFive
|
|
52
72
|
new_config.static_stylesheets += self.static_stylesheets
|
53
73
|
new_config.sass_files += self.sass_files
|
54
74
|
new_config.asset_paths += self.asset_paths
|
55
|
-
|
56
|
-
|
57
|
-
|
75
|
+
@@config_variables.each do |svar|
|
76
|
+
if (new_config.instance_variable_get(svar).nil?)
|
77
|
+
new_config.instance_variable_set(svar, self.instance_variable_get(svar))
|
78
|
+
end
|
79
|
+
end
|
58
80
|
new_config.js_settings.merge! self.js_settings do |key, new_setting, old_setting|
|
59
81
|
new_setting || old_setting #don't clobber settings from the parent
|
60
82
|
end
|
@@ -82,6 +104,12 @@ module HighFive
|
|
82
104
|
self.page_title = config.page_title
|
83
105
|
self.meta = config.meta
|
84
106
|
self.minify = config.minify
|
107
|
+
self.manifest = config.manifest
|
108
|
+
@@config_variables.each do |svar|
|
109
|
+
if (self.instance_variable_get(svar).nil?)
|
110
|
+
self.instance_variable_set(svar, config.instance_variable_get(svar))
|
111
|
+
end
|
112
|
+
end
|
85
113
|
else
|
86
114
|
@static_assets = []
|
87
115
|
@static_javascripts = []
|
@@ -107,10 +135,6 @@ module HighFive
|
|
107
135
|
@sass_files << path.dup
|
108
136
|
end
|
109
137
|
|
110
|
-
def compass(config_dir)
|
111
|
-
@compass_dir = config_dir
|
112
|
-
end
|
113
|
-
|
114
138
|
def stylesheets(path)
|
115
139
|
@static_stylesheets << path.dup
|
116
140
|
end
|
@@ -141,18 +165,5 @@ module HighFive
|
|
141
165
|
js
|
142
166
|
end
|
143
167
|
|
144
|
-
#easy setters
|
145
|
-
|
146
|
-
def dev_index(*args)
|
147
|
-
if args.length == 1
|
148
|
-
@dev_index = args[0]
|
149
|
-
end
|
150
|
-
@dev_index
|
151
|
-
end
|
152
|
-
|
153
|
-
def destination(*args)
|
154
|
-
@destination = args[0] if args.length == 1
|
155
|
-
@destination
|
156
|
-
end
|
157
168
|
end
|
158
169
|
end
|
@@ -24,6 +24,8 @@ module HighFive
|
|
24
24
|
|
25
25
|
self.source_paths << File.join(base_config.root, @config_root)
|
26
26
|
self.source_paths << File.join(base_config.root)
|
27
|
+
self.source_paths << File.join(File.dirname(__FILE__), 'generators')
|
28
|
+
|
27
29
|
|
28
30
|
raise "Please set config.destination" if @config.destination.nil?
|
29
31
|
self.destination_root = @config.destination
|
@@ -40,8 +42,6 @@ module HighFive
|
|
40
42
|
say "Precompiling compass styles from #{compass_dir}}"
|
41
43
|
pwd = Dir.pwd
|
42
44
|
Dir.chdir compass_dir
|
43
|
-
# TODO make this invoke compass programatically
|
44
|
-
# Consider using sprockets for css too, although I kindof hate that
|
45
45
|
success = false
|
46
46
|
if @environment == "production"
|
47
47
|
success = system("compass compile --force --no-debug-info -e production")
|
@@ -132,6 +132,23 @@ module HighFive
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
+
if (@config.manifest && @environment == 'production')
|
136
|
+
@manifest_attr = %Q(manifest="manifest.appcache") #for <html manifest=>
|
137
|
+
say " create manifest", :green
|
138
|
+
@manifest_cache = @config.static_assets.collect do |path|
|
139
|
+
if (File.directory?(path))
|
140
|
+
Dir.glob(path + "/**/*")
|
141
|
+
else
|
142
|
+
path
|
143
|
+
end
|
144
|
+
end.flatten
|
145
|
+
|
146
|
+
@manifest_cache += @javascripts
|
147
|
+
@manifest_cache += @stylesheets
|
148
|
+
|
149
|
+
template "manifest.erb", File.join(self.destination_root, "manifest.appcache")
|
150
|
+
end
|
151
|
+
|
135
152
|
@high_five_javascript = @config.high_five_javascript
|
136
153
|
# Build index.html
|
137
154
|
say "Generating index.html"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
CACHE MANIFEST
|
2
|
+
# Generated by high_five v<%= HighFive::VERSION %>
|
3
|
+
# <%= Time.now %>
|
4
|
+
|
5
|
+
# Explicitly cached 'master entries'.
|
6
|
+
CACHE:
|
7
|
+
<% @manifest_cache.each do |path| -%>
|
8
|
+
<%= path %>
|
9
|
+
<% end -%>
|
10
|
+
|
11
|
+
|
12
|
+
# Resources that require the user to be online.
|
13
|
+
NETWORK:
|
14
|
+
|
15
|
+
# offline.html will be served in place of all other .html files
|
16
|
+
FALLBACK:
|
data/lib/high_five/version.rb
CHANGED
data/spec/deploy_spec.rb
CHANGED
@@ -109,6 +109,7 @@ describe HighFive::DeployTask do
|
|
109
109
|
config.assets "stylesheets"
|
110
110
|
config.platform :web do |web|
|
111
111
|
config.dev_index "index-debug.html"
|
112
|
+
config.manifest = true
|
112
113
|
end
|
113
114
|
config.environment :production do |prod|
|
114
115
|
|
@@ -126,6 +127,9 @@ describe HighFive::DeployTask do
|
|
126
127
|
it "should not clone index.html to index-debug.html" do
|
127
128
|
File.exist?(File.join(@project_root, "index-debug.html")).should be_false
|
128
129
|
end
|
130
|
+
it "should generate an html manifest" do
|
131
|
+
expect(File.join(@project_root, "www", "manifest.appcache")).to exist
|
132
|
+
end
|
129
133
|
end
|
130
134
|
|
131
135
|
end
|
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
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 2.9.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: json
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 1.7.7
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.7.7
|
94
110
|
- !ruby/object:Gem::Dependency
|
95
111
|
name: rspec
|
96
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,13 +144,12 @@ files:
|
|
128
144
|
- Rakefile
|
129
145
|
- bin/hi5
|
130
146
|
- high_five.gemspec
|
131
|
-
- lib/.DS_Store
|
132
147
|
- lib/high_five.rb
|
133
148
|
- lib/high_five/android_tasks.rb
|
134
149
|
- lib/high_five/cli.rb
|
135
150
|
- lib/high_five/config.rb
|
136
151
|
- lib/high_five/deploy_task.rb
|
137
|
-
- lib/high_five/
|
152
|
+
- lib/high_five/generators/manifest.erb
|
138
153
|
- lib/high_five/init_task.rb
|
139
154
|
- lib/high_five/version.rb
|
140
155
|
- spec/config_spec.rb
|
data/lib/.DS_Store
DELETED
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
html_includes.html.erb
|