power-build 0.0.1 → 1.0.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.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Gemfile +1 -0
- data/README.md +76 -4
- data/Rakefile +7 -0
- data/bin/power +0 -0
- data/lib/assets/css/bootstrap.css +6566 -0
- data/lib/assets/css/bootstrap.min.css +5 -0
- data/lib/assets/css/custom.css +40 -0
- data/lib/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/assets/fonts/glyphicons-halflings-regular.svg +288 -0
- data/lib/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/lib/assets/js/bootstrap.js +2306 -0
- data/lib/assets/js/bootstrap.min.js +7 -0
- data/lib/assets/js/custom.js +0 -0
- data/lib/assets/js/jquery.js +4 -0
- data/lib/assets/partials/_footer.html.erb +8 -0
- data/lib/assets/partials/_head.html.erb +10 -0
- data/lib/assets/partials/_navbar.html.erb +32 -0
- data/lib/assets/power-build.config +15 -0
- data/lib/assets/templates/category.html.erb +28 -0
- data/lib/assets/templates/index.html.erb +30 -0
- data/lib/assets/templates/show.html.erb +26 -0
- data/lib/power-build/base.rb +57 -1
- data/lib/power-build/constructor.rb +217 -0
- data/lib/power-build/github_manager.rb +43 -0
- data/lib/power-build/version.rb +1 -1
- metadata +23 -2
@@ -0,0 +1,217 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require 'erb'
|
3
|
+
require 'ostruct'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module PowerBuild
|
7
|
+
class Constructor
|
8
|
+
|
9
|
+
def initialize(config=nil)
|
10
|
+
@assets_base = "../../assets"
|
11
|
+
variables_set if config
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_config
|
15
|
+
if File.file? "power-build.config"
|
16
|
+
puts "Config file already exists. Either:"
|
17
|
+
puts "1. Run 'power build' to build."
|
18
|
+
puts "2. Run 'power delete' to delete all."
|
19
|
+
else
|
20
|
+
@assets_base = "../../assets"
|
21
|
+
config = "power-build.config"
|
22
|
+
FileUtils.cp File.expand_path("#{@assets_base}/power-build.config", __FILE__), config
|
23
|
+
puts "Created: ".green + "power-build.config"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def copy_assets
|
28
|
+
if File.directory? "assets"
|
29
|
+
copy_assets_in_order
|
30
|
+
else
|
31
|
+
["css", "js", "fonts"].each do |dir|
|
32
|
+
copy_assets_dir dir
|
33
|
+
puts "Created: ".green + "assets/#{dir}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def generate_site
|
39
|
+
image_collection = collect_images
|
40
|
+
@variables.image_collection = image_collection
|
41
|
+
|
42
|
+
@variables.resource_prefix = "../../"
|
43
|
+
update_partials
|
44
|
+
image_collection.each do |category|
|
45
|
+
create_page_by(category)
|
46
|
+
category[:images].each do |image|
|
47
|
+
create_page_by_each(category, image)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
@variables.title = @config["title"]
|
52
|
+
@variables.resource_prefix = ""
|
53
|
+
update_partials
|
54
|
+
render_page("index")
|
55
|
+
puts "Created: ".green + "index.html"
|
56
|
+
end
|
57
|
+
|
58
|
+
def remove_config
|
59
|
+
if File.file? "power-build.config"
|
60
|
+
FileUtils.remove "power-build.config"
|
61
|
+
puts "Removed:".red + " power-build.config"
|
62
|
+
else
|
63
|
+
puts "Config file does not exist."
|
64
|
+
end
|
65
|
+
if File.directory? "assets"
|
66
|
+
FileUtils.rm_rf "assets"
|
67
|
+
puts "Removed:".red + " assets"
|
68
|
+
end
|
69
|
+
if File.file? "index.html"
|
70
|
+
FileUtils.remove "index.html"
|
71
|
+
puts "Removed:".red + " index.html"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def open_config
|
76
|
+
if File.file? "power-build.config"
|
77
|
+
%x[open power-build.config]
|
78
|
+
else
|
79
|
+
puts "Config file does not exist."
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def variables_set
|
86
|
+
@config = read_config
|
87
|
+
@variables = OpenStruct.new(title: @config["title"],
|
88
|
+
root_folder: @config["root_folder"],
|
89
|
+
site: @config["site"],
|
90
|
+
host_link: @config["host_link"],
|
91
|
+
host_display_text: @config["host_display_text"],
|
92
|
+
resource_prefix: ""
|
93
|
+
)
|
94
|
+
i18n(@config["language"]).each {|key, value| @variables.send("#{key.to_s}=".to_sym, value) }
|
95
|
+
end
|
96
|
+
|
97
|
+
def copy_assets_dir(dir_name)
|
98
|
+
dir = File.expand_path("#{@assets_base}/#{dir_name}", __FILE__)
|
99
|
+
Dir.mkdir "assets" unless File.directory? "assets"
|
100
|
+
FileUtils.copy_entry dir, "assets/#{dir_name}"
|
101
|
+
end
|
102
|
+
|
103
|
+
def copy_assets_in_order
|
104
|
+
["css", "js", "fonts"].each do |dir|
|
105
|
+
directory = File.expand_path("#{@assets_base}/#{dir}", __FILE__)
|
106
|
+
Dir.entries(directory).each do |entry|
|
107
|
+
next if [".", ".."].include? entry
|
108
|
+
if File.file? "assets/#{dir}/#{entry}"
|
109
|
+
puts "Skipped: assets/#{dir}/#{entry}"
|
110
|
+
else
|
111
|
+
FileUtils.copy "#{directory}/#{entry}", "assets/#{dir}/#{entry}"
|
112
|
+
puts "Created: ".green + "assets/#{dir}/#{entry}"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def read_config
|
119
|
+
begin
|
120
|
+
JSON.parse(File.read("power-build.config"))
|
121
|
+
rescue JSON::ParserError
|
122
|
+
puts "============================================================"
|
123
|
+
puts "Oops, make sure 'power-build.config' is in correct JSON format."
|
124
|
+
puts "1. Wrap the whole content in brackets {}"
|
125
|
+
puts "2. Wrap each key and value with quotes ''"
|
126
|
+
puts "3. Separate each setting with comma ,"
|
127
|
+
puts "If you can't fix it, run 'power delete' to start over again."
|
128
|
+
puts "============================================================"
|
129
|
+
raise JSON::ParserError
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def update_partials
|
134
|
+
add_partial("head")
|
135
|
+
add_partial("navbar")
|
136
|
+
add_partial("footer")
|
137
|
+
end
|
138
|
+
|
139
|
+
def add_partial(partial)
|
140
|
+
content = File.read(File.expand_path("#{@assets_base}/partials/_#{partial}.html.erb", __FILE__))
|
141
|
+
rendered = ERB.new(content).result(@variables.instance_eval{binding})
|
142
|
+
@variables.send("#{partial}=".to_sym, rendered)
|
143
|
+
end
|
144
|
+
|
145
|
+
def render_page(page)
|
146
|
+
content = File.read(File.expand_path("#{@assets_base}/templates/#{page}.html.erb", __FILE__))
|
147
|
+
erb = ERB.new(content).result(@variables.instance_eval{binding})
|
148
|
+
File.open("#{page}.html", "w") {|file| file.write(erb)}
|
149
|
+
end
|
150
|
+
|
151
|
+
def collect_images
|
152
|
+
collection = []
|
153
|
+
root_dir = @config["root_folder"]
|
154
|
+
dirs = Dir.entries(root_dir)
|
155
|
+
dirs.delete(".")
|
156
|
+
dirs.delete("..")
|
157
|
+
dirs.each do |dir|
|
158
|
+
if File.directory? "#{root_dir}/#{dir}"
|
159
|
+
images = Dir.entries("#{root_dir}/#{dir}")
|
160
|
+
images.delete(".")
|
161
|
+
images.delete("..")
|
162
|
+
category = {:tag => dir, :images => []}
|
163
|
+
images.each do |image|
|
164
|
+
if File.file? "#{root_dir}/#{dir}/#{image}"
|
165
|
+
if ["jpg", "png", "gif", "peg"].include? image[-3..-1].downcase
|
166
|
+
category[:images].push(image)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
collection.push(category)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
return collection
|
174
|
+
end
|
175
|
+
|
176
|
+
def create_page_by(category)
|
177
|
+
@dir = FileUtils.mkdir_p("assets/#{category[:tag]}").first
|
178
|
+
@variables.current_category = category
|
179
|
+
content = File.read(File.expand_path("#{@assets_base}/templates/category.html.erb", __FILE__))
|
180
|
+
erb = ERB.new(content).result(@variables.instance_eval{binding})
|
181
|
+
File.open("#{@dir}/index.html", "w") {|file| file.write(erb)}
|
182
|
+
puts "Created: ".green + "#{@dir}/index.html"
|
183
|
+
end
|
184
|
+
|
185
|
+
def create_page_by_each(category, image)
|
186
|
+
@variables.current_image = "#{@dir}/#{image}"
|
187
|
+
@variables.current_image_source = "../../#{@config["root_folder"]}/#{category[:tag]}/#{image}"
|
188
|
+
@variables.current_title = image
|
189
|
+
@variables.title = @variables.current_title
|
190
|
+
content = File.read(File.expand_path("#{@assets_base}/templates/show.html.erb", __FILE__))
|
191
|
+
erb = ERB.new(content).result(@variables.instance_eval{binding})
|
192
|
+
File.open("#{@dir}/#{@variables.current_title}.html", "w") {|file| file.write(erb)}
|
193
|
+
puts "Created: ".green + "#{@dir}/#{@variables.current_title}.html"
|
194
|
+
end
|
195
|
+
|
196
|
+
def i18n(setting)
|
197
|
+
case setting
|
198
|
+
when "zh-tw"
|
199
|
+
{
|
200
|
+
i_header: "總覽",
|
201
|
+
i_category: "類別",
|
202
|
+
i_copyright: "版權所有",
|
203
|
+
i_download: "下載",
|
204
|
+
i_home: "首頁"
|
205
|
+
}
|
206
|
+
when "en"
|
207
|
+
{
|
208
|
+
i_header: "Overview",
|
209
|
+
i_category: "Categories",
|
210
|
+
i_copyright: "Copyright",
|
211
|
+
i_download: "Download",
|
212
|
+
i_home: "Home"
|
213
|
+
}
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module PowerBuild
|
5
|
+
class GitHubManager
|
6
|
+
def initialize
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
# def checkout_branch
|
11
|
+
# command = %x[git branch]
|
12
|
+
# if command.include? "gh-pages"
|
13
|
+
# command = %x[git checkout gh-pages]
|
14
|
+
# else
|
15
|
+
# command = %x[git checkout -b gh-pages]
|
16
|
+
# end
|
17
|
+
# add_and_commit
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def add_and_commit
|
21
|
+
# status = %x[git status]
|
22
|
+
# if status.include? "assets"
|
23
|
+
# %x[git add assets]
|
24
|
+
# @commit = true
|
25
|
+
# end
|
26
|
+
# if status.include? "index.html"
|
27
|
+
# %x[git add index.html]
|
28
|
+
# @commit = true
|
29
|
+
# end
|
30
|
+
# if status.include? "power-build.config"
|
31
|
+
# %x[git add power-build.config]
|
32
|
+
# @commit = true
|
33
|
+
# end
|
34
|
+
# if @commit
|
35
|
+
# %x[git commit -m "regenerate site"]
|
36
|
+
# end
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# def push
|
40
|
+
# %x[git push]
|
41
|
+
# end
|
42
|
+
end
|
43
|
+
end
|
data/lib/power-build/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power-build
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,8 +80,29 @@ files:
|
|
80
80
|
- README.md
|
81
81
|
- Rakefile
|
82
82
|
- bin/power
|
83
|
+
- lib/assets/css/bootstrap.css
|
84
|
+
- lib/assets/css/bootstrap.min.css
|
85
|
+
- lib/assets/css/custom.css
|
86
|
+
- lib/assets/fonts/glyphicons-halflings-regular.eot
|
87
|
+
- lib/assets/fonts/glyphicons-halflings-regular.svg
|
88
|
+
- lib/assets/fonts/glyphicons-halflings-regular.ttf
|
89
|
+
- lib/assets/fonts/glyphicons-halflings-regular.woff
|
90
|
+
- lib/assets/fonts/glyphicons-halflings-regular.woff2
|
91
|
+
- lib/assets/js/bootstrap.js
|
92
|
+
- lib/assets/js/bootstrap.min.js
|
93
|
+
- lib/assets/js/custom.js
|
94
|
+
- lib/assets/js/jquery.js
|
95
|
+
- lib/assets/partials/_footer.html.erb
|
96
|
+
- lib/assets/partials/_head.html.erb
|
97
|
+
- lib/assets/partials/_navbar.html.erb
|
98
|
+
- lib/assets/power-build.config
|
99
|
+
- lib/assets/templates/category.html.erb
|
100
|
+
- lib/assets/templates/index.html.erb
|
101
|
+
- lib/assets/templates/show.html.erb
|
83
102
|
- lib/power-build.rb
|
84
103
|
- lib/power-build/base.rb
|
104
|
+
- lib/power-build/constructor.rb
|
105
|
+
- lib/power-build/github_manager.rb
|
85
106
|
- lib/power-build/version.rb
|
86
107
|
- power-build.gemspec
|
87
108
|
homepage: https://github.com/nkj20932/power-build
|