redrum 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/features/templates.feature +20 -0
- data/lib/redrum.rb +2 -1
- data/lib/redrum/cli.rb +9 -1
- data/lib/redrum/redrum.rb +1 -0
- data/lib/redrum/templates.rb +18 -0
- data/spec/redrum/cli_spec.rb +23 -0
- data/spec/redrum/templates_spec.rb +40 -0
- data/spec/spec_helper.rb +1 -8
- data/templates/bright/haml/index.haml +35 -0
- data/templates/bright/public/css/bright.css +69 -0
- metadata +9 -4
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Templates
|
2
|
+
So that I can choose a template for my redrum project
|
3
|
+
As a web designer
|
4
|
+
I want to be able to select a specific template from all the available templates
|
5
|
+
|
6
|
+
Scenario: Creating a redrum project called MyBLog with --template bright or -t bright
|
7
|
+
Given there is no directory already existing at "MyBlog"
|
8
|
+
When I start redrum with "--template=bright" or "-t bright"
|
9
|
+
Then I want to get a Rakefile in MyBlog
|
10
|
+
And I want to get a haml/index.haml in MyBlog
|
11
|
+
And I want to get a public/css/bright.css in MyBlog
|
12
|
+
And I want to see "Copying default/Rakefile to MyBlog/Rakefile" from the command line
|
13
|
+
And I want to see "Copying default/haml to MyBlog/haml" from the command line
|
14
|
+
And I want to see "Copying default/public to MyBlog/public" from the command line
|
15
|
+
And I want to see "Overwriting MyBlog/public with bright/public" from the command line
|
16
|
+
|
17
|
+
Scenario: Checking out what templates are there to choose from
|
18
|
+
When I start redrum with "--list-templates" or "-l"
|
19
|
+
Then I want to see "default" from the command line
|
20
|
+
And I want to see "bright" from the command line
|
data/lib/redrum.rb
CHANGED
@@ -5,7 +5,8 @@ require File.expand_path("../redrum/skeleton", __FILE__)
|
|
5
5
|
require File.expand_path("../redrum/redrum", __FILE__)
|
6
6
|
require File.expand_path("../redrum/cli", __FILE__)
|
7
7
|
require File.expand_path("../redrum/default_files", __FILE__)
|
8
|
+
require File.expand_path("../redrum/templates", __FILE__)
|
8
9
|
require "fileutils"
|
9
10
|
|
10
|
-
REDRUM_VERSION = "0.
|
11
|
+
REDRUM_VERSION = "0.4.0"
|
11
12
|
|
data/lib/redrum/cli.rb
CHANGED
@@ -14,6 +14,14 @@ module Redrum
|
|
14
14
|
out.puts "Redrum v" + REDRUM_VERSION
|
15
15
|
return false
|
16
16
|
end
|
17
|
+
opts.on("-t", "--template=TEMPLATE", "Select a template") do |template|
|
18
|
+
options[:template] = template
|
19
|
+
return options
|
20
|
+
end
|
21
|
+
opts.on("-l", "--list-templates", "List all available templates") do
|
22
|
+
Redrum::Templates.list(out)
|
23
|
+
return false
|
24
|
+
end
|
17
25
|
opts.on_tail do
|
18
26
|
out.puts opts
|
19
27
|
end
|
@@ -21,7 +29,7 @@ module Redrum
|
|
21
29
|
|
22
30
|
opt.parse!
|
23
31
|
options
|
24
|
-
rescue OptionParser::InvalidOption => e
|
32
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
|
25
33
|
out.puts e.to_s
|
26
34
|
out.puts opt.to_s
|
27
35
|
false
|
data/lib/redrum/redrum.rb
CHANGED
@@ -4,6 +4,7 @@ module Redrum
|
|
4
4
|
def self.make(project_dir, params={})
|
5
5
|
Skeleton.new(project_dir, params)
|
6
6
|
DefaultFiles.copy(project_dir, params)
|
7
|
+
Templates.copy(project_dir, params) if params[:template]
|
7
8
|
rescue Errno::EEXIST => e
|
8
9
|
params[:output_to].puts e.to_s if params[:output_to]
|
9
10
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Redrum
|
2
|
+
class Templates
|
3
|
+
def self.copy(project_dir, params = {})
|
4
|
+
Dir[File.expand_path("../../../templates/#{params[:template]}/*", __FILE__)].each do |template|
|
5
|
+
source = template.scan(/templates\/(.+)$/).flatten.to_s
|
6
|
+
destination = project_dir + "/" + source.scan(/^.+?\/(.+)$/).to_s
|
7
|
+
params[:output_to].puts "Overwriting #{destination} with #{source}" if params[:output_to]
|
8
|
+
FileUtils.cp_r(template, project_dir)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.list(out=STDOUT)
|
13
|
+
Dir[File.expand_path("../../../templates/*", __FILE__)].each do |template|
|
14
|
+
out.puts template.scan(/.+\/([^\/]+)$/).to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/redrum/cli_spec.rb
CHANGED
@@ -63,5 +63,28 @@ describe Redrum::CLI do
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
context "with -t, --template=TEMPLATE" do
|
67
|
+
before { no_warnings { ARGV = ["temp", "--template=default"] } }
|
68
|
+
|
69
|
+
it "returns a hash" do
|
70
|
+
Redrum::CLI.parse(@messenger).should be_kind_of(Hash)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "with -l, --list-templates" do
|
75
|
+
before { no_warnings { ARGV = ["-l"] } }
|
76
|
+
|
77
|
+
it "shows a list of available templates" do
|
78
|
+
Redrum::CLI.parse(@messenger)
|
79
|
+
@messenger.string.should include("default")
|
80
|
+
@messenger.string.should include("bright")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "returns false" do
|
84
|
+
Redrum::CLI.parse(@messenger).should == false
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
66
89
|
end
|
67
90
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Redrum::Templates do
|
4
|
+
before do
|
5
|
+
@project = "temp"
|
6
|
+
@messenger = StringIO.new
|
7
|
+
@options = { :template => "bright", :output_to => @messenger }
|
8
|
+
FileUtils.rm_rf @project rescue nil
|
9
|
+
end
|
10
|
+
|
11
|
+
after(:all) do
|
12
|
+
FileUtils.rm_rf @project rescue nil
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "self#copy" do
|
16
|
+
it "copies the public folder from the template to the project folder" do
|
17
|
+
FileUtils.as_null_object.should_receive(:cp_r).with(File.expand_path("../../../templates/bright/public", __FILE__), @project)
|
18
|
+
Redrum::Templates.copy(@project, @options)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "copies the haml folder from the template to project folder" do
|
22
|
+
FileUtils.as_null_object.should_receive(:cp_r).with(File.expand_path("../../../templates/bright/haml", __FILE__), @project)
|
23
|
+
Redrum::Templates.copy(@project, @options)
|
24
|
+
end
|
25
|
+
it "prints what files it is copying/overwriting" do
|
26
|
+
@messenger.as_null_object.should_receive(:puts).with("Overwriting #{@project}/public with bright/public")
|
27
|
+
Redrum::Templates.copy(@project, @options)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "self#list" do
|
32
|
+
it "shows every available template" do
|
33
|
+
Redrum::Templates.list(@messenger)
|
34
|
+
Dir[File.expand_path("../../../templates/*", __FILE__)].each do |template|
|
35
|
+
@messenger.string.should include template.scan(/.+\/([^\/]+)$/).to_s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,4 @@
|
|
1
1
|
require File.expand_path( "../../lib/redrum", __FILE__ )
|
2
|
+
require File.expand_path("../../helpers", __FILE__)
|
2
3
|
require "fileutils"
|
3
4
|
require "stringio"
|
4
|
-
|
5
|
-
def no_warnings
|
6
|
-
verbosity = $VERBOSE
|
7
|
-
$VERBOSE = nil
|
8
|
-
result = yield
|
9
|
-
$VERBOSE = verbosity
|
10
|
-
result
|
11
|
-
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
!!!
|
2
|
+
%html(xmlns="http://www.w3.org/1999/xhtml")
|
3
|
+
%head
|
4
|
+
%meta(http-equiv="content-type" content="text/html; charset=utf-8")
|
5
|
+
%link(href="css/bright.css" rel="stylesheet" media="screen")
|
6
|
+
%title Redrum::Default
|
7
|
+
%body
|
8
|
+
#wrapper
|
9
|
+
#header
|
10
|
+
%h1 Welcome to Redrum!
|
11
|
+
%p
|
12
|
+
%em A way to quickly produce static websites for the ruby enthusiast!
|
13
|
+
#content
|
14
|
+
%h2 What's this redrum then?
|
15
|
+
%p
|
16
|
+
Say, you like to work with haml and use rake for lot's of stuff?
|
17
|
+
That's of course great when working with frameworks that use and
|
18
|
+
support these tools, like rails. But what about static websites for
|
19
|
+
example? Wouldn't it be nice to be able to utilitze haml and rake
|
20
|
+
effectively for those kinda projects?
|
21
|
+
%em That's where redrum comes in!
|
22
|
+
%p
|
23
|
+
The purpose of redrum is to make developing static websites easier,
|
24
|
+
faster and especially more organized by creating a skeleton project
|
25
|
+
for you. You just add your content, run rake and deploy.
|
26
|
+
%h2 Workflow
|
27
|
+
%h3 The general workflow is as follows:
|
28
|
+
%ul
|
29
|
+
%li Edit one or more haml files in [project folder]/haml
|
30
|
+
%li run rake to translate all haml-files into html-files in [project folder]/public
|
31
|
+
%li Deploy by uploading all content from the public folder to your webserver
|
32
|
+
#footer
|
33
|
+
%p
|
34
|
+
%a(href="http://github.com/oem/redrum")redrum on github
|
35
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
/* General Styles */
|
2
|
+
|
3
|
+
body {
|
4
|
+
font: 10px Arial, Helvetica;
|
5
|
+
color: #666666;
|
6
|
+
background-color: #F5F5F5;
|
7
|
+
padding: 0px;
|
8
|
+
margin: 0px;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1, h2, h3, h4 {
|
12
|
+
font: italic 16px "Georgia", "Times", serif;
|
13
|
+
color: #222222;
|
14
|
+
}
|
15
|
+
|
16
|
+
p {
|
17
|
+
line-height: 1.5em;
|
18
|
+
}
|
19
|
+
|
20
|
+
em {
|
21
|
+
color: #3592a8;
|
22
|
+
padding: 4px 8px;
|
23
|
+
font-style: italic;
|
24
|
+
}
|
25
|
+
|
26
|
+
a {
|
27
|
+
color: #000;
|
28
|
+
text-decoration: none;
|
29
|
+
font-weight: bold;
|
30
|
+
border-bottom: dotted 1px #009983;
|
31
|
+
padding: 2px 5px;
|
32
|
+
border-bottom: dotted 1px #aaa;
|
33
|
+
}
|
34
|
+
|
35
|
+
a:hover {
|
36
|
+
border:none;
|
37
|
+
color: #aaa;
|
38
|
+
}
|
39
|
+
|
40
|
+
ul {
|
41
|
+
list-style-type: none;
|
42
|
+
padding: 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
#wrapper {
|
46
|
+
width: 1000px;
|
47
|
+
font-size: 1.3em;
|
48
|
+
padding: 1em .5em;
|
49
|
+
}
|
50
|
+
|
51
|
+
/* Page Structure */
|
52
|
+
|
53
|
+
#header {
|
54
|
+
margin-top: 1.5em;
|
55
|
+
}
|
56
|
+
|
57
|
+
#header, #content, #footer{
|
58
|
+
padding-left: 200px;
|
59
|
+
padding-right: 30px;
|
60
|
+
}
|
61
|
+
|
62
|
+
#header h1 {
|
63
|
+
font-size: 3em;
|
64
|
+
}
|
65
|
+
|
66
|
+
#footer {
|
67
|
+
margin-top: 50px;
|
68
|
+
}
|
69
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redrum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 3
|
9
8
|
- 4
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- !binary |
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-
|
20
|
+
date: 2010-12-07 00:00:00 +01:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -49,16 +49,21 @@ files:
|
|
49
49
|
- lib/redrum/default_files.rb
|
50
50
|
- lib/redrum/redrum.rb
|
51
51
|
- lib/redrum/skeleton.rb
|
52
|
+
- lib/redrum/templates.rb
|
52
53
|
- lib/redrum.rb
|
53
54
|
- spec/redrum/cli_spec.rb
|
54
55
|
- spec/redrum/default_files_spec.rb
|
55
56
|
- spec/redrum/redrum_spec.rb
|
56
57
|
- spec/redrum/skeleton_spec.rb
|
58
|
+
- spec/redrum/templates_spec.rb
|
57
59
|
- spec/spec_helper.rb
|
58
60
|
- bin/redrum
|
59
61
|
- features/command_line_interface.feature
|
60
62
|
- features/create_folder_skeleton.feature
|
61
63
|
- features/default_files.feature
|
64
|
+
- features/templates.feature
|
65
|
+
- templates/bright/haml/index.haml
|
66
|
+
- templates/bright/public/css/bright.css
|
62
67
|
- templates/default/haml/index.haml
|
63
68
|
- templates/default/public/css/default.css
|
64
69
|
- templates/default/Rakefile
|