static 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/Manifest.txt +32 -0
- data/README.txt +254 -0
- data/Rakefile +15 -0
- data/bin/cli.rbml +245 -0
- data/bin/static +82 -0
- data/lib/collection.rb +112 -0
- data/lib/extentions/class.rb +43 -0
- data/lib/extentions/string.rb +10 -0
- data/lib/filebase.rb +84 -0
- data/lib/generator.rb +20 -0
- data/lib/page.rb +124 -0
- data/lib/site.rb +144 -0
- data/lib/static.rb +96 -0
- data/lib/xhtml.rb +98 -0
- data/templates/disco/attributes +3 -0
- data/templates/disco/display +4 -0
- data/templates/disco/link_list +6 -0
- data/templates/disco/publish +1 -0
- data/templates/layouts/default/contents.erbml +8 -0
- data/templates/layouts/default/main_navigation.erbml +10 -0
- data/templates/layouts/default/page_head.erbml +7 -0
- data/templates/layouts/default/structure/default.rbml +21 -0
- data/templates/layouts/default/structure/footer.rbml +6 -0
- data/templates/layouts/default/stylesheets/default.css +106 -0
- data/templates/layouts/default/submenu.erbml +13 -0
- data/templates/page.copy +3 -0
- data/templates/site.info +5 -0
- data/templates/site.map +15 -0
- data/templates/submenu.copy +0 -0
- metadata +87 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
README.txt
|
4
|
+
Rakefile
|
5
|
+
bin/static
|
6
|
+
bin/cli.rbml
|
7
|
+
lib/static.rb
|
8
|
+
lib/collection.rb
|
9
|
+
lib/filebase.rb
|
10
|
+
lib/page.rb
|
11
|
+
lib/site.rb
|
12
|
+
lib/static.rb
|
13
|
+
lib/xhtml.rb
|
14
|
+
lib/generator.rb
|
15
|
+
lib/extentions/class.rb
|
16
|
+
lib/extentions/string.rb
|
17
|
+
templates/page.copy
|
18
|
+
templates/site.map
|
19
|
+
templates/site.info
|
20
|
+
templates/submenu.copy
|
21
|
+
templates/disco/attributes
|
22
|
+
templates/disco/display
|
23
|
+
templates/disco/publish
|
24
|
+
templates/disco/link_list
|
25
|
+
templates/layouts/default/contents.erbml
|
26
|
+
templates/layouts/default/main_navigation.erbml
|
27
|
+
templates/layouts/default/page_head.erbml
|
28
|
+
templates/layouts/default/submenu.erbml
|
29
|
+
templates/layouts/default/structure/default.rbml
|
30
|
+
templates/layouts/default/structure/footer.rbml
|
31
|
+
templates/layouts/default/stylesheets/default.css
|
32
|
+
|
data/README.txt
ADDED
@@ -0,0 +1,254 @@
|
|
1
|
+
static
|
2
|
+
by evan short
|
3
|
+
|
4
|
+
== DESCRIPTION:
|
5
|
+
|
6
|
+
static is a command line environment for creating static websites.
|
7
|
+
it uses a yaml site map to produce a blueprint with decoupled copy
|
8
|
+
and structure. uses rbml for html processing. static incorporates
|
9
|
+
arbitrary collections that can be displayed both within a page and
|
10
|
+
paginated over a page. this allows such features as news, faqs,
|
11
|
+
blogs and other galleries.
|
12
|
+
|
13
|
+
== FEATURES:
|
14
|
+
- command line interface
|
15
|
+
- multiple site management
|
16
|
+
- yaml site map
|
17
|
+
- decoupled copy and structure
|
18
|
+
- flexible, sectioned copy
|
19
|
+
- html in block-syntax
|
20
|
+
- collections
|
21
|
+
- inner-page, such as news on a home page
|
22
|
+
- paginated, a blog, for instance
|
23
|
+
- plain ol' css for style
|
24
|
+
|
25
|
+
== PROBLEMS:
|
26
|
+
|
27
|
+
- cli needs some work
|
28
|
+
- prompt context
|
29
|
+
- tab completion
|
30
|
+
- termios integration (or otherwise implemented command history)
|
31
|
+
- error messaging
|
32
|
+
- documentation
|
33
|
+
- how layouts work
|
34
|
+
- how blueprints work
|
35
|
+
- word is out on how well it takes to switching the site map. my
|
36
|
+
own guess is not well.
|
37
|
+
- there are no specs
|
38
|
+
- ready for a re-factor
|
39
|
+
|
40
|
+
== SYNOPSIS:
|
41
|
+
|
42
|
+
so, first thing's first open up a terminal and run static. the first
|
43
|
+
time it is run a folder called +static+ will be created in your ~/.
|
44
|
+
in this folder your layouts and projects will be kept, along with a
|
45
|
+
few template files in <tt>.templates</tt> that will be used when
|
46
|
+
creating a site.
|
47
|
+
|
48
|
+
=== site generation
|
49
|
+
|
50
|
+
you will see a prompt: <tt>-></tt>
|
51
|
+
|
52
|
+
-> start sample site
|
53
|
+
starting a site map for sample
|
54
|
+
|
55
|
+
at this point the footprint of your site (named sample in this example)
|
56
|
+
has been created. a sitemap is generated from the site.map template
|
57
|
+
in the static home (~/static). initially this is populated with an
|
58
|
+
example map, but can be re-formatted or emptied if you choose.
|
59
|
+
|
60
|
+
-> edit site.map
|
61
|
+
|
62
|
+
this will open the previously mentioned site map in vi. there is a
|
63
|
+
variable to change editors but, currently, no place to actually do
|
64
|
+
it. sue me. i'll get to it soon.
|
65
|
+
|
66
|
+
after the site map has been exited the pages are loaded into memory
|
67
|
+
and you can then begin to build your site.
|
68
|
+
|
69
|
+
-> build
|
70
|
+
|
71
|
+
or
|
72
|
+
|
73
|
+
-> build copy
|
74
|
+
|
75
|
+
will generate the .copy yaml files that will hold the contents of each
|
76
|
+
page in your site map. you may then run
|
77
|
+
|
78
|
+
-> edit copy
|
79
|
+
|
80
|
+
to edit the contents of those pages. more desireably, perhaps, you may
|
81
|
+
zip this folder up and send it off to someone more suited to edit copy.
|
82
|
+
|
83
|
+
next you must choose a layout.
|
84
|
+
|
85
|
+
-> layout
|
86
|
+
|
87
|
+
will give you a choice of the possible layouts. by default there is only
|
88
|
+
one layout available. you may copy the default layout in the static home
|
89
|
+
to create new layouts. there are plans to incorporate some of this into
|
90
|
+
the cli. not yet, however.
|
91
|
+
|
92
|
+
because there is only one layout available by default, running +layout+
|
93
|
+
will choose it for you. if there were more than one you could run +layout+
|
94
|
+
with a regex for the layout you would like to choose (or not) and then
|
95
|
+
make a choice from the resulting list. choices in lists may be made by
|
96
|
+
regex or number selection. no word on what happens if there are numbers
|
97
|
+
in your possible selections.
|
98
|
+
|
99
|
+
as an example, because the word 'regex' can be frightening to some, i might
|
100
|
+
use <tt>layout def</tt> to find the default layout in a long list of selections.
|
101
|
+
|
102
|
+
once a layout is chosen it is possible to make edits to it before building
|
103
|
+
the basic structure of the site, called the blueprint. you may run
|
104
|
+
|
105
|
+
-> edit layout
|
106
|
+
|
107
|
+
to make changes to the layout you have chosen.
|
108
|
+
|
109
|
+
once the layout is satisfactory, running
|
110
|
+
|
111
|
+
-> build blueprint
|
112
|
+
|
113
|
+
will put the blueprint folder in place.
|
114
|
+
|
115
|
+
-> edit blueprints
|
116
|
+
|
117
|
+
will take you there to edit.
|
118
|
+
|
119
|
+
at this point you may generate your site by running
|
120
|
+
|
121
|
+
-> generate
|
122
|
+
|
123
|
+
you may edit your site and generate as many times as you like.
|
124
|
+
by default (not easily changable at the moment) your site will be
|
125
|
+
generated to ~/Sites/static/name_of_site.
|
126
|
+
|
127
|
+
use
|
128
|
+
|
129
|
+
-> load site
|
130
|
+
|
131
|
+
(which uses the choice module) to load a site or make a different
|
132
|
+
site active. you may simply use +load+ if there is not already an
|
133
|
+
active site.
|
134
|
+
|
135
|
+
== collection managment
|
136
|
+
|
137
|
+
once a site has been started that site will be active. once there is
|
138
|
+
an active site you may begin dealing with collections. to start a
|
139
|
+
collection
|
140
|
+
|
141
|
+
-> start faq collection with question answer
|
142
|
+
|
143
|
+
this will start a collection named faq with the attributes question and
|
144
|
+
answer.
|
145
|
+
|
146
|
+
because there is already an active site, the +collection+ key
|
147
|
+
is assumed and therefore sugar. +with+ is purely sugar.
|
148
|
+
|
149
|
+
the faq collection is now active (as it was just started and no other
|
150
|
+
collection has been loaded). you may run
|
151
|
+
|
152
|
+
-> edit attributes
|
153
|
+
|
154
|
+
to edit the yaml file describing the attributes
|
155
|
+
|
156
|
+
-> edit display
|
157
|
+
|
158
|
+
to edit the default way a member of the collection is displayed
|
159
|
+
|
160
|
+
and
|
161
|
+
|
162
|
+
-> add
|
163
|
+
|
164
|
+
to add an item to the collection. it is worth noting that the attribute
|
165
|
+
files are processed by erb before they make it to your editor. so in the
|
166
|
+
event you had a +date+ attribute in a collection, using +edit attributes+
|
167
|
+
to make <tt>date: <%= Date.today.to_s.inspect %></tt> will start each
|
168
|
+
added item with today's date ready for yaml.
|
169
|
+
|
170
|
+
to show a collection within a page add a line like
|
171
|
+
|
172
|
+
display 5, :faq
|
173
|
+
|
174
|
+
on the blueprint of the desired page. display also responds to :all in place
|
175
|
+
of the number.
|
176
|
+
|
177
|
+
to paginate a collection over a particular page you must assign the
|
178
|
+
collection to the page.
|
179
|
+
|
180
|
+
-> assign
|
181
|
+
|
182
|
+
will ask you first which collection you would like to choose and then which
|
183
|
+
page. because each page is only allowed to be paginated once your choices
|
184
|
+
will be limited to those that have not already been paginated. you may use
|
185
|
+
-c or --collection to regex for a desired collection.
|
186
|
+
likewise with -p and --page.
|
187
|
+
|
188
|
+
you may also run +assign paginate+ with the same possible flags to paginate
|
189
|
+
the collection automatically after the association.
|
190
|
+
|
191
|
+
after associating the collection and the page you may use
|
192
|
+
|
193
|
+
-> paginate
|
194
|
+
|
195
|
+
and then
|
196
|
+
|
197
|
+
-> generate
|
198
|
+
|
199
|
+
to update the pages. in the future there should probably be a more direct
|
200
|
+
way to generate over only paginated pages.
|
201
|
+
|
202
|
+
in order to see the paginated items on the desired page simply add the line
|
203
|
+
|
204
|
+
include_partial
|
205
|
+
|
206
|
+
where you would like the paginated section of your collection to be included.
|
207
|
+
to use the link list generated include the line
|
208
|
+
|
209
|
+
get :page, :collection_name => :links
|
210
|
+
|
211
|
+
<tt>:page</tt> is short for 'this page that we are in'. if you would like to
|
212
|
+
be moroe explicit (or use the list elsewhere) simply put in the file name of
|
213
|
+
the page (which would be the page name you gave it in the site map formatted
|
214
|
+
as a lower-case symbol) as such:
|
215
|
+
|
216
|
+
get :page_name, :collection_name => :links
|
217
|
+
|
218
|
+
there is much more to say, but a lot of it can be gleaned by looking at the
|
219
|
+
stuff that is generated by default. any questions may be directed to
|
220
|
+
|
221
|
+
evan.short @ pleasedontspam. gmail.please
|
222
|
+
|
223
|
+
== REQUIREMENTS:
|
224
|
+
|
225
|
+
rbml v. 0.0.5.9.4.1
|
226
|
+
|
227
|
+
== INSTALL:
|
228
|
+
|
229
|
+
sudo gem install static
|
230
|
+
|
231
|
+
== LICENSE:
|
232
|
+
|
233
|
+
(The MIT License)
|
234
|
+
|
235
|
+
Copyright (c) 2007 Evan Short
|
236
|
+
|
237
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
238
|
+
a copy of this software and associated documentation files (the
|
239
|
+
'Software'), to deal in the Software without restriction, including
|
240
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
241
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
242
|
+
permit persons to whom the Software is furnished to do so, subject to
|
243
|
+
the following conditions:
|
244
|
+
|
245
|
+
The above copyright notice and this permission notice shall be
|
246
|
+
included in all copies or substantial portions of the Software.
|
247
|
+
|
248
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
249
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
250
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
251
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
252
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
253
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
254
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
require './lib/static.rb'
|
6
|
+
|
7
|
+
Hoe.new('static', Static::VERSION) do |p|
|
8
|
+
p.rubyforge_name = 'static'
|
9
|
+
# p.summary = 'FIX'
|
10
|
+
# p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
|
11
|
+
# p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
12
|
+
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
13
|
+
end
|
14
|
+
|
15
|
+
# vim: syntax=Ruby
|
data/bin/cli.rbml
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
cli :name=>"static", :prompt=>"-> " do
|
2
|
+
set :help do
|
3
|
+
helpdocs
|
4
|
+
end
|
5
|
+
|
6
|
+
set :unknown_command do |method, args|
|
7
|
+
puts "command not found: #{method} \nwith args: #{args.join(' ')}"
|
8
|
+
end
|
9
|
+
|
10
|
+
set :start do |args|
|
11
|
+
key(:site){ @active = :site }
|
12
|
+
key(:collection){ @active = :collection }
|
13
|
+
key(:with)
|
14
|
+
flag(:help => 'h'){ puts "helpdocs for 'start' go here" }
|
15
|
+
|
16
|
+
process(args)
|
17
|
+
name = (remaining_argument == '' ? '.' : remaining_argument)
|
18
|
+
@active = ($active_site ? :collection : :site) unless @active
|
19
|
+
|
20
|
+
case @active
|
21
|
+
when :site
|
22
|
+
$active_site = start_site(name)
|
23
|
+
if $active_site
|
24
|
+
puts "starting a site map for #{$active_site.name}"
|
25
|
+
else
|
26
|
+
puts "looks like there is already a site called #{name}"
|
27
|
+
end
|
28
|
+
when :collection
|
29
|
+
if $active_site
|
30
|
+
name = remaining_arguments.shift
|
31
|
+
$active_collection = start_collection(name, remaining_arguments)
|
32
|
+
if $active_collection
|
33
|
+
puts "#{name} collection is active"
|
34
|
+
else
|
35
|
+
puts "looks like there is already a collection called #{name}"
|
36
|
+
end
|
37
|
+
else
|
38
|
+
puts 'gotta have a site to make a collection'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
set :assign do |args|
|
44
|
+
flag(:page => 'p'){ |name|
|
45
|
+
@page = choice('please choose a page:', @possible_pages, name.downcase)
|
46
|
+
}
|
47
|
+
flag(:collection => 'c'){ |name|
|
48
|
+
@collection = load_collection(choice('please choose a collection:', items_under($active_site.home+'collections')[:folders], name.downcase))
|
49
|
+
}
|
50
|
+
key(:paginate){@paginate = true}
|
51
|
+
|
52
|
+
if $active_site
|
53
|
+
ready = exists? :folder, $active_site.home+'blueprint'
|
54
|
+
if ready
|
55
|
+
@possible_pages = []
|
56
|
+
$active_site.pages.each{ |page| @possible_pages << page unless $active_site.info['paginate'] && $active_site.info['paginate'].keys.include?(page.file_name) }
|
57
|
+
process(args)
|
58
|
+
|
59
|
+
@collection ||= load_collection(choice('please choose a collection:', items_under($active_site.home+'collections')[:folders]))
|
60
|
+
puts "\n - - - \n" unless @page
|
61
|
+
@page ||= choice('please choose a page:', @possible_pages)
|
62
|
+
assign_pagination @collection.file_name, @page.file_name
|
63
|
+
paginate @page.file_name if @paginate
|
64
|
+
else
|
65
|
+
puts 'please build a blueprint paginating collections'
|
66
|
+
end
|
67
|
+
else
|
68
|
+
ready ? message : 'please choose a site'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
set :paginate do |name|
|
73
|
+
@page = choice('which page did you mean?', $active_site.info['paginate'].keys, name) if name
|
74
|
+
if exists? :folder, $active_site.home+'blueprint'
|
75
|
+
if @page
|
76
|
+
paginate @page
|
77
|
+
else
|
78
|
+
$active_site.info['paginate'].each { |page, collection| paginate page }
|
79
|
+
end
|
80
|
+
else
|
81
|
+
puts 'please generate your blueprint before paginating'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
set :layout do |args|
|
86
|
+
key(:choose) { @active = :choose }
|
87
|
+
key(:save) { @active = :choose }
|
88
|
+
flag(:force => 'f'){ @force = true }
|
89
|
+
process args
|
90
|
+
name = (remaining_argument == '' ? '.' : remaining_argument)
|
91
|
+
@active = :choose unless @active
|
92
|
+
case @active
|
93
|
+
when :choose
|
94
|
+
if $active_site
|
95
|
+
if set_layout choice('please choose a layout:', items_under($ENV['LAYOUT_HOME'])[:folders], name), @force
|
96
|
+
puts "#{$active_site.info['layout']['name']} is now being used" else puts 'no new layout was chosen'
|
97
|
+
end
|
98
|
+
else
|
99
|
+
puts 'there is no active site right now.'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
set :edit do |args|
|
105
|
+
key(:site)
|
106
|
+
key(:attributes){
|
107
|
+
@collection = $active_collection.name unless @collection
|
108
|
+
@edit << :attributes
|
109
|
+
}
|
110
|
+
key(:display){
|
111
|
+
@collection = $active_collection.name unless @collection
|
112
|
+
@edit << :display
|
113
|
+
}
|
114
|
+
key(:all){
|
115
|
+
@collection = $active_collection.name unless @collection
|
116
|
+
@edit = [:attributes, :display]
|
117
|
+
}
|
118
|
+
flag(:collection => 'c'){ |name| @collection = name }
|
119
|
+
|
120
|
+
@edit = []
|
121
|
+
process args
|
122
|
+
file = remaining_argument
|
123
|
+
file = 'contents' if file == 'copy'
|
124
|
+
|
125
|
+
if $active_site
|
126
|
+
case
|
127
|
+
when @collection
|
128
|
+
@edit.each { |item|
|
129
|
+
puts "opening #{@collection}'s attributes"
|
130
|
+
edit("#{$active_site.home}collections/#{@collection}/#{item.to_s}")
|
131
|
+
}
|
132
|
+
when exists?(:file, "#{$active_site.home}project_info/#{file}") then
|
133
|
+
puts "opening #{$active_site.name}'s #{file}"
|
134
|
+
edit("#{$active_site.home}project_info/#{file}")
|
135
|
+
$active_site.load_info(file)
|
136
|
+
$active_site.load_pages if file == 'site.map'
|
137
|
+
when exists?(:any, $active_site.home+file) : edit($active_site.home+file)
|
138
|
+
else
|
139
|
+
puts "no file found: #{$active_site.home}"
|
140
|
+
end
|
141
|
+
else
|
142
|
+
puts 'no active site'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
set :load do |args|
|
147
|
+
key(:site){ @active = :site }
|
148
|
+
key(:collection){ @active = :collection }
|
149
|
+
|
150
|
+
flag(:help => 'h'){ puts "helpdocs for 'load' go here" }
|
151
|
+
|
152
|
+
process(args)
|
153
|
+
name = (remaining_argument == '' ? '.' : remaining_argument)
|
154
|
+
@active = $active_site ? :collection : :site unless @active
|
155
|
+
|
156
|
+
case @active
|
157
|
+
when :site then
|
158
|
+
$active_site = load_site(name)
|
159
|
+
if $active_site
|
160
|
+
puts "#{$active_site.name} site is active"
|
161
|
+
else
|
162
|
+
$active_site = load_site(choice('available sites', items_under($ENV['SITE_BANK'])[:folders], name))
|
163
|
+
puts 'sorry bub, nuthin there.' unless $active_site
|
164
|
+
end
|
165
|
+
when :collection then
|
166
|
+
$active_collection = nil
|
167
|
+
if $active_site
|
168
|
+
$active_collection = load_collection(name)
|
169
|
+
if $active_collection
|
170
|
+
puts("#{$active_collection.name} collection is active")
|
171
|
+
else
|
172
|
+
$active_collection = load_collection(choice('available collections', items_under($active_site.home+'collections')[:folders], name))
|
173
|
+
unless $active_collection
|
174
|
+
puts 'can\'t find a collection like that, baby'
|
175
|
+
else
|
176
|
+
puts("#{$active_collection.name} collection is active")
|
177
|
+
end
|
178
|
+
end
|
179
|
+
else
|
180
|
+
puts 'there must be an active site before starting a collection'
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
set :generate do
|
186
|
+
ready = exists? :folder, $active_site.home+'layout'
|
187
|
+
message = 'please choose a layout before generating html' unless ready
|
188
|
+
if ready
|
189
|
+
ready = exists? :folder, $active_site.home+'blueprint'
|
190
|
+
message = 'please build a blueprint before generating html' unless ready
|
191
|
+
if ready
|
192
|
+
ready = exists? :folder, $active_site.home+'contents'
|
193
|
+
message = 'please build the site content before generating html' unless ready
|
194
|
+
end
|
195
|
+
end
|
196
|
+
if $active_site
|
197
|
+
if ready
|
198
|
+
destroy $active_site.site_loc
|
199
|
+
$active_site.generate
|
200
|
+
else
|
201
|
+
puts(message)
|
202
|
+
end
|
203
|
+
else
|
204
|
+
puts 'need a site before you can generate one'
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
set :add do |args|
|
209
|
+
edit $active_collection.add_entry
|
210
|
+
$active_collection.sanitize_listing
|
211
|
+
$active_collection.save_listing
|
212
|
+
end
|
213
|
+
|
214
|
+
set :build do |args|
|
215
|
+
key(:copy){ @active = :contents }
|
216
|
+
key(:contents){ @active = :contents }
|
217
|
+
key(:blueprint){ @active = :blueprint }
|
218
|
+
key(:all){ @active = :all }
|
219
|
+
flag(:force => 'f'){ @force = true }
|
220
|
+
process args
|
221
|
+
@active = :contents unless @active
|
222
|
+
case @active
|
223
|
+
when :contents then
|
224
|
+
destroy $active_site.home+'contents' if @force
|
225
|
+
$active_site.build(:contents)
|
226
|
+
when :blueprint then
|
227
|
+
destroy $active_site.home+'blueprint' if @force
|
228
|
+
$active_site.info['layout'] ? $active_site.build(:blueprint) : puts('need to choosee a layout')
|
229
|
+
when :all then
|
230
|
+
destroy $active_site.home+'blueprint' if @force
|
231
|
+
destroy $active_site.home+'contents' if @force and not make_sure('do you want to destroy the contents?', 'N', 'y')
|
232
|
+
$active_site.build(:contents)
|
233
|
+
$active_site.info['layout'] ? $active_site.build(:blueprint) : set_layout(choice('please choose a layout:', items_under($ENV['LAYOUT_HOME'])[:folders]), false)
|
234
|
+
$active_site.build(:blueprint) unless exists? :folder, $active_site.home+'blueprint'
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
set :clear do
|
239
|
+
system 'clear'
|
240
|
+
end
|
241
|
+
|
242
|
+
set :quit do
|
243
|
+
exit
|
244
|
+
end
|
245
|
+
end
|
data/bin/static
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__)+'/../lib/static'
|
4
|
+
|
5
|
+
|
6
|
+
$ENV['STATIC_HOME'] = "#{ENV['HOME']}/static/"
|
7
|
+
$ENV['STATIC_VIEWING'] = "#{ENV['HOME']}/Sites/static/"
|
8
|
+
$ENV['REPO_HOME'] = $ENV['STATIC_HOME']+'/repos/'
|
9
|
+
$ENV['SITE_BANK'] = $ENV['STATIC_HOME']+'projects/'
|
10
|
+
$ENV['TEMPLATE_HOME'] = $ENV['STATIC_HOME']+'.templates/'
|
11
|
+
$ENV['LAYOUT_HOME'] = $ENV['STATIC_HOME']+'layouts/'
|
12
|
+
$ENV['SCRIPT_HOME'] = $ENV['STATIC_HOME']+'lib/'
|
13
|
+
$ENV['TEMPLATE_BANK'] = File.dirname(__FILE__)+'/../templates'
|
14
|
+
|
15
|
+
|
16
|
+
include FileBase
|
17
|
+
|
18
|
+
#destroy $ENV['STATIC_HOME']
|
19
|
+
#destroy $ENV['STATIC_VIEWING']
|
20
|
+
|
21
|
+
mkdir $ENV['STATIC_HOME'] unless exists? :folder, $ENV['STATIC_HOME']
|
22
|
+
mkdir $ENV['SITE_BANK'] unless exists? :folder, $ENV['SITE_BANK']
|
23
|
+
|
24
|
+
copy File.dirname(__FILE__)+'/../templates', $ENV['TEMPLATE_HOME'] unless exists? :folder, $ENV['TEMPLATE_HOME']
|
25
|
+
move $ENV['TEMPLATE_HOME']+'layouts', $ENV['LAYOUT_HOME'] unless exists? :folder, $ENV['LAYOUT_HOME']
|
26
|
+
puts "home: #{$ENV['STATIC_HOME']}"
|
27
|
+
|
28
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))+'/lib/rbml')
|
29
|
+
$LOAD_PATH.unshift($ENV['STATIC_HOME'])
|
30
|
+
|
31
|
+
module Rbml
|
32
|
+
module Language
|
33
|
+
module Cli
|
34
|
+
module Cli
|
35
|
+
include Static
|
36
|
+
|
37
|
+
def helpdocs
|
38
|
+
puts 'these are the ellhp.'
|
39
|
+
end
|
40
|
+
def edit file
|
41
|
+
system "#{$ENV['EDITOR']} #{file}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
include Static
|
49
|
+
::Rbml::Processor.run(File.dirname(__FILE__)+'/cli.rbml')
|
50
|
+
|
51
|
+
__END__
|
52
|
+
$active_site = load_site('please')
|
53
|
+
paginate :static
|
54
|
+
|
55
|
+
$active_site.build :all
|
56
|
+
#system "#{$ENV['EDITOR']} #{$active_site.home}"
|
57
|
+
paginate :the_copy
|
58
|
+
destroy $active_site.site_loc
|
59
|
+
$active_site.generate
|
60
|
+
|
61
|
+
$active_site = start_site('static')
|
62
|
+
$active_site.load_info
|
63
|
+
$active_site.load_pages
|
64
|
+
$active_site.start_collection 'news', ['date', 'headline', 'entry']
|
65
|
+
$active_site.start_collection 'blog', ['date', 'title', 'entry']
|
66
|
+
|
67
|
+
$active_site.build(:contents)
|
68
|
+
$active_site.info['layout'] = 'default'
|
69
|
+
set_layout($active_site.info['layout'], false)
|
70
|
+
$active_site.build(:blueprint)
|
71
|
+
|
72
|
+
assign_pagination :blog, :the_blueprint
|
73
|
+
#$active_collection = load_collection 'faq'
|
74
|
+
::Rbml::Processor.run(File.dirname(__FILE__)+'/cli.rbml')
|
75
|
+
#system "vi #{$active_collection.add_entry}"
|
76
|
+
#$active_collection.save_listing
|
77
|
+
#$active_site.build :contents
|
78
|
+
#$active_site.set_layout('default', $ENV['LAYOUT_HOME'])
|
79
|
+
#$active_site.build :blueprint
|
80
|
+
#$active_site.start_collection 'faq', ['question', 'answer']
|
81
|
+
destroy $active_site.site_loc
|
82
|
+
$active_site.generate
|