massimo 0.7.5 → 0.8.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/.document +5 -0
- data/.gitignore +6 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +88 -0
- data/README.md +3 -1
- data/Rakefile +8 -0
- data/bin/massimo +1 -17
- data/lib/massimo/cli.rb +63 -0
- data/lib/massimo/config.rb +8 -5
- data/lib/massimo/javascript.rb +10 -2
- data/lib/massimo/reloader.rb +37 -0
- data/lib/massimo/site.rb +24 -21
- data/lib/massimo/templates/site/config.rb +18 -0
- data/lib/massimo/templates/site/javascripts/main.js +0 -0
- data/lib/massimo/templates/site/pages/index.erb +5 -0
- data/lib/massimo/templates/site/public/.empty_directory +0 -0
- data/lib/massimo/templates/site/stylesheets/main.scss +0 -0
- data/lib/massimo/templates/site/views/layouts/main.erb +12 -0
- data/lib/massimo/ui.rb +2 -2
- data/lib/massimo/version.rb +1 -1
- data/lib/massimo/watcher.rb +22 -7
- data/lib/massimo.rb +3 -11
- data/massimo.gemspec +40 -0
- data/spec/massimo/cli_spec.rb +254 -0
- data/spec/massimo/config_spec.rb +97 -0
- data/spec/massimo/helpers_spec.rb +26 -0
- data/spec/massimo/javascript_spec.rb +120 -0
- data/spec/massimo/massimo_spec.rb +23 -0
- data/spec/massimo/page_spec.rb +224 -0
- data/spec/massimo/reloader_spec.rb +135 -0
- data/spec/massimo/resource_spec.rb +208 -0
- data/spec/massimo/server_spec.rb +35 -0
- data/spec/massimo/site_spec.rb +299 -0
- data/spec/massimo/stylesheet_spec.rb +77 -0
- data/spec/massimo/ui_spec.rb +109 -0
- data/spec/massimo/view_spec.rb +46 -0
- data/spec/massimo/watcher_spec.rb +122 -0
- data/spec/spec_helper.rb +65 -0
- data/spec/support/matchers/be_a_directory_matcher.rb +5 -0
- data/spec/support/matchers/be_a_file_matcher.rb +26 -0
- metadata +74 -20
- data/lib/massimo/commands/base.rb +0 -85
- data/lib/massimo/commands/build.rb +0 -19
- data/lib/massimo/commands/generate.rb +0 -62
- data/lib/massimo/commands/help.rb +0 -34
- data/lib/massimo/commands/server.rb +0 -24
- data/lib/massimo/commands/version.rb +0 -9
- data/lib/massimo/commands/watch.rb +0 -16
data/.document
ADDED
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
massimo (0.7.5)
|
5
|
+
activesupport (~> 3.0.0)
|
6
|
+
i18n (~> 0.4.0)
|
7
|
+
rack (~> 1.2.0)
|
8
|
+
sinatra_more (~> 0.3.0)
|
9
|
+
thor (~> 0.14.0)
|
10
|
+
tilt (~> 1.2.0)
|
11
|
+
tzinfo (~> 0.3.0)
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: http://rubygems.org/
|
15
|
+
specs:
|
16
|
+
activesupport (3.0.3)
|
17
|
+
closure-compiler (0.3.3)
|
18
|
+
coffee-script (0.3.2)
|
19
|
+
diff-lcs (1.1.2)
|
20
|
+
growl (1.0.3)
|
21
|
+
haml (3.0.25)
|
22
|
+
i18n (0.4.2)
|
23
|
+
jsmin (1.0.1)
|
24
|
+
less (1.2.21)
|
25
|
+
mutter (>= 0.4.2)
|
26
|
+
treetop (>= 1.4.2)
|
27
|
+
mutter (0.5.3)
|
28
|
+
oyster (0.9.4)
|
29
|
+
packr (3.1.0)
|
30
|
+
oyster
|
31
|
+
polyglot (0.3.1)
|
32
|
+
rack (1.2.1)
|
33
|
+
rack-test (0.5.7)
|
34
|
+
rack (>= 1.0)
|
35
|
+
rr (1.0.2)
|
36
|
+
rspec (2.4.0)
|
37
|
+
rspec-core (~> 2.4.0)
|
38
|
+
rspec-expectations (~> 2.4.0)
|
39
|
+
rspec-mocks (~> 2.4.0)
|
40
|
+
rspec-core (2.4.0)
|
41
|
+
rspec-expectations (2.4.0)
|
42
|
+
diff-lcs (~> 1.1.2)
|
43
|
+
rspec-mocks (2.4.0)
|
44
|
+
sinatra (1.1.2)
|
45
|
+
rack (~> 1.1)
|
46
|
+
tilt (~> 1.2)
|
47
|
+
sinatra_more (0.3.40)
|
48
|
+
activesupport (>= 2.2.2)
|
49
|
+
bundler (>= 0.9.2)
|
50
|
+
sinatra (>= 0.9.2)
|
51
|
+
thor (>= 0.11.8)
|
52
|
+
tilt (>= 0.2)
|
53
|
+
sprockets (1.0.2)
|
54
|
+
test-construct (1.2.0)
|
55
|
+
thor (0.14.6)
|
56
|
+
tilt (1.2.2)
|
57
|
+
treetop (1.4.9)
|
58
|
+
polyglot (>= 0.3.1)
|
59
|
+
tzinfo (0.3.24)
|
60
|
+
unindent (0.9)
|
61
|
+
yui-compressor (0.9.3)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
ruby
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
activesupport (~> 3.0.0)
|
68
|
+
closure-compiler (~> 0.3.0)
|
69
|
+
coffee-script (~> 0.3.0)
|
70
|
+
growl (~> 1.0.0)
|
71
|
+
haml (~> 3.0.0)
|
72
|
+
i18n (~> 0.4.0)
|
73
|
+
jsmin (~> 1.0.0)
|
74
|
+
less (~> 1.2.0)
|
75
|
+
massimo!
|
76
|
+
packr (~> 3.1.0)
|
77
|
+
rack (~> 1.2.0)
|
78
|
+
rack-test (~> 0.5.0)
|
79
|
+
rr (~> 1.0.0)
|
80
|
+
rspec (~> 2.4.0)
|
81
|
+
sinatra_more (~> 0.3.0)
|
82
|
+
sprockets (~> 1.0.0)
|
83
|
+
test-construct (~> 1.2.0)
|
84
|
+
thor (~> 0.14.0)
|
85
|
+
tilt (~> 1.2.0)
|
86
|
+
tzinfo (~> 0.3.0)
|
87
|
+
unindent (~> 0.9.0)
|
88
|
+
yui-compressor (~> 0.9.0)
|
data/README.md
CHANGED
@@ -21,7 +21,9 @@ Massimo is a static website builder that allows you to use dynamic technologies
|
|
21
21
|
cd my-site
|
22
22
|
massimo build
|
23
23
|
|
24
|
-
For more information, visit http://petebrowne.
|
24
|
+
For more information, visit [http://massimo.petebrowne.com/](http://massimo.petebrowne.com/).
|
25
|
+
|
26
|
+
For an example of a site built by massimo, visit [http://github.com/petebrowne/massimo-site](http://github.com/petebrowne/massimo-site).
|
25
27
|
|
26
28
|
## Copyright
|
27
29
|
|
data/Rakefile
ADDED
data/bin/massimo
CHANGED
@@ -1,20 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'massimo'
|
4
|
-
|
5
|
-
case ARGV.shift
|
6
|
-
when 'b', 'build'
|
7
|
-
Massimo::Commands::Build
|
8
|
-
when 'g', 'generate'
|
9
|
-
Massimo::Commands::Generate
|
10
|
-
when nil, '-h', '--help', 'help'
|
11
|
-
Massimo::Commands::Help
|
12
|
-
when 's', 'server'
|
13
|
-
Massimo::Commands::Server
|
14
|
-
when '-v', '--version', 'version'
|
15
|
-
Massimo::Commands::Version
|
16
|
-
when 'w', 'watch'
|
17
|
-
Massimo::Commands::Watch
|
18
|
-
else
|
19
|
-
Massimo::Commands::Help
|
20
|
-
end.run
|
4
|
+
Massimo::CLI.start
|
data/lib/massimo/cli.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'active_support/core_ext/hash/keys'
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
module Massimo
|
5
|
+
class CLI < Thor
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
|
10
|
+
default_task :help
|
11
|
+
|
12
|
+
class_option 'config_path', :desc => 'Path to the config file', :aliases => '-c'
|
13
|
+
class_option 'source_path', :desc => 'Path to the source dir', :aliases => '-s'
|
14
|
+
class_option 'output_path', :desc => 'Path to the output dir', :aliases => '-o'
|
15
|
+
class_option 'environment', :desc => 'Sets the environment', :aliases => '-e'
|
16
|
+
class_option 'production', :desc => "Sets the environment to 'production'", :aliases => '-p', :type => :boolean
|
17
|
+
|
18
|
+
desc 'build', 'Builds the site from the source files'
|
19
|
+
def build
|
20
|
+
Kernel.exit Massimo::UI.report_errors {
|
21
|
+
site.process
|
22
|
+
Massimo::UI.say 'massimo has built your site', :growl => true
|
23
|
+
}
|
24
|
+
end
|
25
|
+
map 'b' => :build
|
26
|
+
|
27
|
+
desc 'generate SITE_NAME', 'Generates a new site with the give name'
|
28
|
+
def generate(site_name)
|
29
|
+
directory 'site', site_name
|
30
|
+
end
|
31
|
+
map 'g' => :generate
|
32
|
+
|
33
|
+
desc 'server [PORT]', 'Runs a local Rack based web server on the given port'
|
34
|
+
def server(port = 3000)
|
35
|
+
Massimo::Server.start(site, port.to_i)
|
36
|
+
end
|
37
|
+
map 's' => :server
|
38
|
+
|
39
|
+
desc 'watch', 'Watches your files for changes and automatically builds the site'
|
40
|
+
def watch
|
41
|
+
Massimo::Watcher.start(site)
|
42
|
+
end
|
43
|
+
map 'w' => :watch
|
44
|
+
|
45
|
+
desc 'version', 'Prints out the version'
|
46
|
+
def version
|
47
|
+
puts Massimo::VERSION
|
48
|
+
end
|
49
|
+
map %w(v -v --version) => :version
|
50
|
+
|
51
|
+
protected
|
52
|
+
|
53
|
+
def site
|
54
|
+
@site ||= Massimo::Site.new(site_options)
|
55
|
+
end
|
56
|
+
|
57
|
+
def site_options
|
58
|
+
config = {}.merge(options).symbolize_keys
|
59
|
+
config[:environment] = 'production' if config.delete(:production) == true
|
60
|
+
config
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/massimo/config.rb
CHANGED
@@ -6,6 +6,7 @@ require 'yaml'
|
|
6
6
|
module Massimo
|
7
7
|
class Config < OpenStruct
|
8
8
|
DEFAULT_OPTIONS = {
|
9
|
+
:config_path => 'config.rb',
|
9
10
|
:source_path => '.',
|
10
11
|
:output_path => 'public',
|
11
12
|
:environment => 'development',
|
@@ -20,19 +21,21 @@ module Massimo
|
|
20
21
|
# or a file path to a .yaml file.
|
21
22
|
def initialize(options = nil)
|
22
23
|
hash = DEFAULT_OPTIONS.dup
|
23
|
-
|
24
|
-
options = YAML.load_file(options) if options.is_a? String
|
25
24
|
hash.merge!(options.symbolize_keys) if options.is_a? Hash
|
26
|
-
|
27
25
|
super hash
|
28
26
|
end
|
29
27
|
|
30
|
-
# The full, expanded path to the
|
28
|
+
# The full, expanded path to the config file
|
29
|
+
def config_path
|
30
|
+
File.expand_path super
|
31
|
+
end
|
32
|
+
|
33
|
+
# The full, expanded path to the source directory.
|
31
34
|
def source_path
|
32
35
|
File.expand_path super
|
33
36
|
end
|
34
37
|
|
35
|
-
# The full, expanded path to the output
|
38
|
+
# The full, expanded path to the output directory.
|
36
39
|
def output_path
|
37
40
|
File.expand_path super
|
38
41
|
end
|
data/lib/massimo/javascript.rb
CHANGED
@@ -31,14 +31,22 @@ module Massimo
|
|
31
31
|
case Massimo.config.javascripts_compressor.to_s
|
32
32
|
when 'min', 'jsmin'
|
33
33
|
require 'jsmin' unless defined?(JSMin)
|
34
|
-
JSMin.minify(javascript)
|
34
|
+
JSMin.minify(javascript)
|
35
35
|
when 'pack', 'packr'
|
36
36
|
require 'packr' unless defined?(Packr)
|
37
37
|
options = { :shrink_vars => true }.merge Massimo.config.options_for(:packr)
|
38
38
|
Packr.pack(javascript, options)
|
39
|
+
when 'yui', 'yui-compressor', 'yui/compressor'
|
40
|
+
require 'yui/compressor' unless defined?(YUI)
|
41
|
+
options = { :munge => true }.merge Massimo.config.options_for(:yui)
|
42
|
+
YUI::JavaScriptCompressor.new(options).compress(javascript)
|
43
|
+
when 'closure', 'closure-compiler', 'closure/compiler'
|
44
|
+
require 'closure-compiler' unless defined?(Closure)
|
45
|
+
options = Massimo.config.options_for(:closure)
|
46
|
+
Closure::Compiler.new(options).compile(javascript)
|
39
47
|
else
|
40
48
|
javascript
|
41
|
-
end
|
49
|
+
end.strip
|
42
50
|
end
|
43
51
|
end
|
44
52
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Massimo
|
2
|
+
module Reloader
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def load(name = :default)
|
6
|
+
cache[name] ||= {}
|
7
|
+
|
8
|
+
previous_constants = Object.constants
|
9
|
+
previous_features = $LOADED_FEATURES.dup
|
10
|
+
yield if block_given?
|
11
|
+
cache[name][:constants] = (Object.constants - previous_constants).uniq
|
12
|
+
cache[name][:features] = ($LOADED_FEATURES - previous_features).uniq
|
13
|
+
|
14
|
+
cache[name]
|
15
|
+
end
|
16
|
+
|
17
|
+
def unload(name = :default)
|
18
|
+
return unless cache.key?(name)
|
19
|
+
cache[name][:constants].reject! do |const|
|
20
|
+
Object.send(:remove_const, const) if Object.const_defined?(const)
|
21
|
+
end if cache[name].key?(:constants)
|
22
|
+
cache[name][:features].reject! do |feature|
|
23
|
+
$LOADED_FEATURES.delete(feature)
|
24
|
+
end if cache[name].key?(:features)
|
25
|
+
cache[name]
|
26
|
+
end
|
27
|
+
|
28
|
+
def reload(name = :default, &block)
|
29
|
+
unload(name)
|
30
|
+
load(name, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
def cache
|
34
|
+
@cache ||= {}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/massimo/site.rb
CHANGED
@@ -5,21 +5,27 @@ require 'tilt'
|
|
5
5
|
module Massimo
|
6
6
|
class Site
|
7
7
|
attr_accessor :config
|
8
|
+
attr_reader :resources
|
8
9
|
|
9
10
|
# Creates a new Site, passing the given options to a new configuration.
|
10
11
|
# If a block is given, it is evaluated in the scope of the new Site.
|
11
12
|
def initialize(options = nil, &block)
|
13
|
+
@original_options ||= options
|
12
14
|
@config = Config.new(options)
|
15
|
+
@resources = [ Massimo::Page, Massimo::Javascript, Massimo::Stylesheet, Massimo::View ]
|
13
16
|
@template_scope_blocks = []
|
14
17
|
@template_scope_extensions = []
|
15
18
|
Massimo.site = self
|
16
19
|
|
17
|
-
|
20
|
+
Massimo::Reloader.reload(:config) do
|
21
|
+
instance_eval File.read(config.config_path) if File.exist?(config.config_path)
|
22
|
+
instance_eval(&block) if block_given?
|
23
|
+
end
|
18
24
|
end
|
19
25
|
|
20
|
-
#
|
21
|
-
def
|
22
|
-
@
|
26
|
+
# Sets up the Site from scratch again. Also Reloads the config file again.
|
27
|
+
def reload(&block)
|
28
|
+
initialize @original_options, &block
|
23
29
|
end
|
24
30
|
|
25
31
|
# Adds a new, custom resource to the Site. If a Class constant is given,
|
@@ -78,30 +84,27 @@ module Massimo
|
|
78
84
|
end
|
79
85
|
|
80
86
|
def add_template_scope_helpers(scope)
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
87
|
+
cache = Massimo::Reloader.reload(:helpers) do
|
88
|
+
config.files_in(:helpers, :rb).each do |file|
|
89
|
+
load(file)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
if constants = cache[:constants]
|
94
|
+
constants.each do |const|
|
95
|
+
if (helper = const.to_s.constantize rescue nil)
|
96
|
+
scope.extend(helper)
|
97
|
+
end
|
85
98
|
end
|
86
99
|
end
|
87
100
|
end
|
88
101
|
|
89
102
|
def reload_libs
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
Object.class_eval do
|
94
|
-
remove_const(class_name) if const_defined?(class_name)
|
95
|
-
end
|
103
|
+
Massimo::Reloader.reload(:libs) do
|
104
|
+
config.files_in(:lib, :rb).each do |file|
|
105
|
+
load(file)
|
96
106
|
end
|
97
107
|
end
|
98
|
-
@previous_libs = config.files_in(:lib, :rb).each do |file|
|
99
|
-
load(file)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def class_name_of_file(file)
|
104
|
-
File.basename(file).sub(/\.[^\.]+$/, '').classify
|
105
108
|
end
|
106
109
|
end
|
107
110
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'sass'
|
2
|
+
require 'sprockets'
|
3
|
+
|
4
|
+
# This is an example configuration File
|
5
|
+
# Look here for all the available options:
|
6
|
+
# http://petebrowne.github.com/massimo/configuration/
|
7
|
+
|
8
|
+
if config.environment.production?
|
9
|
+
# Use JSMin for javascript compression
|
10
|
+
# config.javascripts_compressor = :min
|
11
|
+
|
12
|
+
# Compress the output of Sass stylesheets
|
13
|
+
# config.sass = { :style => :compressed }
|
14
|
+
end
|
15
|
+
|
16
|
+
helpers do
|
17
|
+
# Define helper methods here
|
18
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
data/lib/massimo/ui.rb
CHANGED
@@ -35,7 +35,7 @@ module Massimo
|
|
35
35
|
def report_errors
|
36
36
|
begin
|
37
37
|
yield
|
38
|
-
|
38
|
+
true
|
39
39
|
rescue Exception => error
|
40
40
|
say 'massimo had a problem', :red
|
41
41
|
indent do
|
@@ -43,7 +43,7 @@ module Massimo
|
|
43
43
|
say error.backtrace.first, :magenta
|
44
44
|
end
|
45
45
|
growl "#{error.message}\n#{error.backtrace.first}", 'massimo problem'
|
46
|
-
|
46
|
+
false
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
data/lib/massimo/version.rb
CHANGED
data/lib/massimo/watcher.rb
CHANGED
@@ -8,8 +8,9 @@ module Massimo
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def initialize(site)
|
11
|
-
@site
|
12
|
-
@
|
11
|
+
@site = site
|
12
|
+
@previous_files = []
|
13
|
+
check_config
|
13
14
|
end
|
14
15
|
|
15
16
|
# Runs a loop, processing the Site whenever files have changed.
|
@@ -26,8 +27,13 @@ module Massimo
|
|
26
27
|
|
27
28
|
# Processes the Site if any of the files have changed.
|
28
29
|
def process
|
29
|
-
|
30
|
-
|
30
|
+
Massimo::UI.report_errors do
|
31
|
+
if config_changed?
|
32
|
+
Massimo::UI.say 'massimo is reloading your site'
|
33
|
+
@site.reload
|
34
|
+
@site.process
|
35
|
+
Massimo::UI.say 'massimo has built your site', :growl => true
|
36
|
+
elsif changed?
|
31
37
|
Massimo::UI.say 'massimo has noticed a change'
|
32
38
|
@site.process
|
33
39
|
Massimo::UI.say 'massimo has built your site', :growl => true
|
@@ -37,13 +43,22 @@ module Massimo
|
|
37
43
|
|
38
44
|
# Determine if any of the Site's files have changed.
|
39
45
|
def changed?
|
40
|
-
@
|
46
|
+
@previous_files != check_files
|
47
|
+
end
|
48
|
+
|
49
|
+
# Determine if the Site's config file has chanaged.
|
50
|
+
def config_changed?
|
51
|
+
@previous_config != check_config
|
41
52
|
end
|
42
53
|
|
43
54
|
protected
|
44
55
|
|
45
|
-
def
|
46
|
-
@
|
56
|
+
def check_config
|
57
|
+
@previous_config = File.exist?(@site.config.config_path) && File.mtime(@site.config.config_path)
|
58
|
+
end
|
59
|
+
|
60
|
+
def check_files
|
61
|
+
@previous_files = Dir[*glob].map { |file| File.mtime(file) }
|
47
62
|
end
|
48
63
|
|
49
64
|
def glob
|
data/lib/massimo.rb
CHANGED
@@ -1,27 +1,19 @@
|
|
1
1
|
module Massimo
|
2
2
|
autoload :Config, 'massimo/config'
|
3
|
+
autoload :CLI, 'massimo/cli'
|
3
4
|
autoload :Helpers, 'massimo/helpers'
|
4
5
|
autoload :Javascript, 'massimo/javascript'
|
5
6
|
autoload :Page, 'massimo/page'
|
7
|
+
autoload :Reloader, 'massimo/reloader'
|
6
8
|
autoload :Resource, 'massimo/resource'
|
7
9
|
autoload :Server, 'massimo/server'
|
8
10
|
autoload :Site, 'massimo/site'
|
9
11
|
autoload :Stylesheet, 'massimo/stylesheet'
|
10
12
|
autoload :UI, 'massimo/ui'
|
11
|
-
autoload :
|
13
|
+
autoload :VERSION, 'massimo/version'
|
12
14
|
autoload :View, 'massimo/view'
|
13
15
|
autoload :Watcher, 'massimo/watcher'
|
14
16
|
|
15
|
-
module Commands
|
16
|
-
autoload :Base, 'massimo/commands/base'
|
17
|
-
autoload :Build, 'massimo/commands/build'
|
18
|
-
autoload :Generate, 'massimo/commands/generate'
|
19
|
-
autoload :Help, 'massimo/commands/help'
|
20
|
-
autoload :Server, 'massimo/commands/server'
|
21
|
-
autoload :Version, 'massimo/commands/version'
|
22
|
-
autoload :Watch, 'massimo/commands/watch'
|
23
|
-
end
|
24
|
-
|
25
17
|
class << self
|
26
18
|
def site
|
27
19
|
@site ||= Site.new
|
data/massimo.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/massimo/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'massimo'
|
6
|
+
s.version = Massimo::VERSION
|
7
|
+
s.summary = 'Massimo is a static website builder.'
|
8
|
+
s.description = 'Massimo builds HTML, Javascript, and CSS Files from your source.'
|
9
|
+
|
10
|
+
s.authors = 'Pete Browne'
|
11
|
+
s.email = 'me@petebrowne.com'
|
12
|
+
s.homepage = 'http://petebrowne.github.com/massimo/'
|
13
|
+
s.rubyforge_project = 'massimo'
|
14
|
+
|
15
|
+
s.add_dependency 'activesupport', '~> 3.0.0'
|
16
|
+
s.add_dependency 'i18n', '~> 0.4.0'
|
17
|
+
s.add_dependency 'rack', '~> 1.2.0'
|
18
|
+
s.add_dependency 'sinatra_more', '~> 0.3.0'
|
19
|
+
s.add_dependency 'thor', '~> 0.14.0'
|
20
|
+
s.add_dependency 'tilt', '~> 1.2.0'
|
21
|
+
s.add_dependency 'tzinfo', '~> 0.3.0'
|
22
|
+
s.add_development_dependency 'rspec', '~> 2.4.0'
|
23
|
+
s.add_development_dependency 'rr', '~> 1.0.0'
|
24
|
+
s.add_development_dependency 'test-construct', '~> 1.2.0'
|
25
|
+
s.add_development_dependency 'rack-test', '~> 0.5.0'
|
26
|
+
s.add_development_dependency 'unindent', '~> 0.9.0'
|
27
|
+
s.add_development_dependency 'haml', '~> 3.0.0'
|
28
|
+
s.add_development_dependency 'less', '~> 1.2.0'
|
29
|
+
s.add_development_dependency 'coffee-script', '~> 0.3.0'
|
30
|
+
s.add_development_dependency 'sprockets', '~> 1.0.0'
|
31
|
+
s.add_development_dependency 'jsmin', '~> 1.0.0'
|
32
|
+
s.add_development_dependency 'packr', '~> 3.1.0'
|
33
|
+
s.add_development_dependency 'yui-compressor', '~> 0.9.0'
|
34
|
+
s.add_development_dependency 'closure-compiler', '~> 0.3.0'
|
35
|
+
s.add_development_dependency 'growl', '~> 1.0.0'
|
36
|
+
|
37
|
+
s.files = `git ls-files`.split("\n")
|
38
|
+
s.executables = `git ls-files`.split("\n").map{ |f| f =~ /^bin\/(.*)/ ? $1 : nil }.compact
|
39
|
+
s.require_path = 'lib'
|
40
|
+
end
|