Added generator, ace-gen works!
This commit is contained in:
parent
4970d59081
commit
a1596e5642
20 changed files with 183 additions and 2 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
= Version 0.4
|
||||||
|
* Added project generator (ace-gen).
|
||||||
|
|
||||||
= Version 0.3
|
= Version 0.3
|
||||||
* Added LazyRendering mixin.
|
* Added LazyRendering mixin.
|
||||||
* Added SassFilter.
|
* Added SassFilter.
|
||||||
|
|
|
@ -20,6 +20,8 @@ rescue LoadError
|
||||||
end
|
end
|
||||||
|
|
||||||
templater = SimpleTemplater.new(:ace)
|
templater = SimpleTemplater.new(:ace)
|
||||||
|
templater.discover!
|
||||||
|
|
||||||
generator = templater.find(:project)
|
generator = templater.find(:project)
|
||||||
|
|
||||||
if generator.nil?
|
if generator.nil?
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
module Ace
|
module Ace
|
||||||
VERSION = "0.3.3"
|
VERSION = "0.4"
|
||||||
end
|
end
|
||||||
|
|
1
project_generator/content/.gitignore
vendored
Normal file
1
project_generator/content/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
output
|
24
project_generator/content/Gemfile
Normal file
24
project_generator/content/Gemfile
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
# Use local clones if possible.
|
||||||
|
# If you want to use your local copy, just symlink it to vendor.
|
||||||
|
extend Module.new {
|
||||||
|
def gem(name, options = Hash.new)
|
||||||
|
local_path = File.expand_path("../vendor/#{name}", __FILE__)
|
||||||
|
if File.exist?(local_path)
|
||||||
|
super name, options.merge(path: local_path).delete_if { |key, _| [:git, :branch].include?(key) }
|
||||||
|
else
|
||||||
|
super name, options
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
source "http://gemcutter.org"
|
||||||
|
|
||||||
|
gem "ace"
|
||||||
|
gem "nake"
|
||||||
|
gem "template-inheritance"
|
||||||
|
|
||||||
|
group(:development)
|
||||||
|
gem "rack"
|
||||||
|
end
|
26
project_generator/content/LICENSE.rbt
Normal file
26
project_generator/content/LICENSE.rbt
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
Copyright (c) <%= Time.now.year %> <%= @user %>
|
||||||
|
|
||||||
|
All the logic can be used under the MIT license (see bellow).
|
||||||
|
The actual articles though shall not be used by other people
|
||||||
|
in any circumstances unless the author gives permission to do
|
||||||
|
otherwise. In such case the copyright information shall not
|
||||||
|
be omitted as well as a link to its original source.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
11
project_generator/content/README.textile.rbt
Normal file
11
project_generator/content/README.textile.rbt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
h1. About
|
||||||
|
|
||||||
|
This is "<%= @name %>":<%= @url %>. It is written in "Ace":https://github.com/botanicus/ace, a powerful generator of static sites.
|
||||||
|
|
||||||
|
h1. Usage
|
||||||
|
|
||||||
|
_*NOTE:* You need Ruby 1.9.2 or later._
|
||||||
|
|
||||||
|
# Install all the dependencies via bundler: @bundle install@.
|
||||||
|
# Generate the output by running @./tasks.rb generate@.
|
||||||
|
# Run @./config.ru@ and view the content at "localhost:9292":http://localhost:9292/.
|
0
project_generator/content/app/.gitignore
vendored
Normal file
0
project_generator/content/app/.gitignore
vendored
Normal file
20
project_generator/content/boot.rb
Executable file
20
project_generator/content/boot.rb
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env bundle exec ace
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
Encoding.default_internal = "utf-8"
|
||||||
|
Encoding.default_external = "utf-8"
|
||||||
|
|
||||||
|
# Setup $LOAD_PATH.
|
||||||
|
require "bundler/setup"
|
||||||
|
|
||||||
|
# Custom setup.
|
||||||
|
require "pupu/adapters/ace"
|
||||||
|
Pupu.media_prefix = "/assets"
|
||||||
|
|
||||||
|
require "helpers"
|
||||||
|
|
||||||
|
# Load the app.
|
||||||
|
Dir["app/**/*.rb"].each do |file|
|
||||||
|
puts "~ Loading #{file}"
|
||||||
|
load file
|
||||||
|
end
|
32
project_generator/content/config.ru
Executable file
32
project_generator/content/config.ru
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env rackup
|
||||||
|
|
||||||
|
# This is just for development. The only thing it does
|
||||||
|
# is serving of static files from the output/ directory.
|
||||||
|
|
||||||
|
use Rack::Head
|
||||||
|
|
||||||
|
class Server
|
||||||
|
def initialize(root)
|
||||||
|
@file_server = Rack::File.new(root)
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
path = env["PATH_INFO"]
|
||||||
|
returned = @file_server.call(env)
|
||||||
|
if returned[0] == 404 && env["PATH_INFO"].end_with?("/")
|
||||||
|
env["PATH_INFO"] = File.join(env["PATH_INFO"], "index.html")
|
||||||
|
returned = @file_server.call(env)
|
||||||
|
log "[404]", env["PATH_INFO"] if returned[0] == 404
|
||||||
|
returned
|
||||||
|
else
|
||||||
|
returned
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def log(bold, message)
|
||||||
|
warn "~ \033[1;31m#{bold}\033[0m #{message}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
run Server.new("output")
|
2
project_generator/content/config.yml.rbt
Normal file
2
project_generator/content/config.yml.rbt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
title: ""
|
||||||
|
base_url: "<% @url %>"
|
0
project_generator/content/content/assets/css/.gitignore
vendored
Normal file
0
project_generator/content/content/assets/css/.gitignore
vendored
Normal file
0
project_generator/content/content/assets/img/.gitignore
vendored
Normal file
0
project_generator/content/content/assets/img/.gitignore
vendored
Normal file
0
project_generator/content/content/assets/js/.gitignore
vendored
Normal file
0
project_generator/content/content/assets/js/.gitignore
vendored
Normal file
7
project_generator/content/content/index.html.haml
Normal file
7
project_generator/content/content/index.html.haml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
- extends "base.html"
|
||||||
|
|
||||||
|
- block(:description, "Hello world page, nothing fancy.")
|
||||||
|
- block(:keywords, "hello world, ace, whatever else")
|
||||||
|
|
||||||
|
= block(:body) do
|
||||||
|
%h1 Hello World!
|
3
project_generator/content/content/robots.txt
Normal file
3
project_generator/content/content/robots.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
User-agent: *
|
||||||
|
Disallow: /assets
|
||||||
|
Allow: /
|
13
project_generator/content/layouts/base.html.haml.rbt
Normal file
13
project_generator/content/layouts/base.html.haml.rbt
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
!!! 5
|
||||||
|
%html
|
||||||
|
%head
|
||||||
|
%title= block(:title, "<%= @name %>")
|
||||||
|
%meta{"http-equiv" => "content-type", content: "text/html; charset=utf-8"}
|
||||||
|
%meta{"http-equiv" => "content-language", content: "en"}
|
||||||
|
%meta{name: "description", content: block(:description, "")}
|
||||||
|
%meta{name: "keywords", content: block(:keywords, "")}
|
||||||
|
= block(:head)
|
||||||
|
%body
|
||||||
|
= block(:body)
|
||||||
|
#footer
|
||||||
|
© <%= Time.now.year %> – #{Time.now.year} <%= @user %> | Powered by <a href="https://github.com/botanicus/ace">Ace</a>.
|
5
project_generator/content/rules.rb
Normal file
5
project_generator/content/rules.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
require "ace/static"
|
||||||
|
|
||||||
|
rule Ace::Static, "index.html.haml"
|
28
project_generator/content/tasks.rb
Executable file
28
project_generator/content/tasks.rb
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env bundle exec nake
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
Encoding.default_internal = "utf-8"
|
||||||
|
Encoding.default_external = "utf-8"
|
||||||
|
|
||||||
|
# Task.tasks.default_proc = lambda { |*| Task[:generate] }
|
||||||
|
|
||||||
|
Task.new(:generate) do |task|
|
||||||
|
task.description = "Generate static HTML."
|
||||||
|
|
||||||
|
task.define do
|
||||||
|
sh "./boot.rb"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Task.new(:rsync) do |task|
|
||||||
|
task.description = "Rsync the output to server."
|
||||||
|
|
||||||
|
# config
|
||||||
|
task.config[:user] = "TODO"
|
||||||
|
task.config[:server] = "TODO"
|
||||||
|
task.config[:path] = "TODO"
|
||||||
|
|
||||||
|
task.define do |options|
|
||||||
|
sh "rsync -av --delete output/ #{config[:user]}@#{config[:server]}:#{config[:path]}"
|
||||||
|
end
|
||||||
|
end
|
|
@ -4,6 +4,10 @@
|
||||||
# You can update context hash and register hooks. Don't forget to use merge! instead of merge, because you are
|
# You can update context hash and register hooks. Don't forget to use merge! instead of merge, because you are
|
||||||
# manipulating with one object, rather than returning new one.
|
# manipulating with one object, rather than returning new one.
|
||||||
|
|
||||||
|
# ace-gen project --user="Jakub Stastny" --name=101Ideas.cz --url=http://101ideas.cz
|
||||||
|
|
||||||
hook do |generator, context|
|
hook do |generator, context|
|
||||||
# TODO
|
context[:user] ||= ENV["USER"]
|
||||||
|
context[:name] || raise("You have to specify at least --title=WebTitle")
|
||||||
|
context[:url] ||= "http://#{context[:name]}"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue