pupu 0.1.pre → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/CHANGELOG +23 -4
- data/Gemfile +9 -0
- data/LICENSE +1 -1
- data/README.textile +3 -3
- data/TODO.txt +8 -3
- data/bin/pupu +19 -24
- data/examples/merb/.gitignore +17 -0
- data/examples/merb/Gemfile +27 -0
- data/examples/merb/README.textile +3 -5
- data/examples/merb/Rakefile +3 -3
- data/examples/merb/config/framework.rb +4 -4
- data/examples/merb/config/init.rb +7 -0
- data/examples/merb/public/pupu/autocompleter/.gitignore +5 -0
- data/examples/merb/public/pupu/autocompleter/README.textile +2 -2
- data/examples/merb/public/pupu/autocompleter/config.rb +1 -1
- data/examples/merb/public/pupu/blueprint/.gitignore +5 -0
- data/examples/merb/public/pupu/blueprint/config.rb +7 -7
- data/examples/merb/public/pupu/flash/.gitignore +5 -0
- data/examples/merb/public/pupu/flash/config.rb +1 -1
- data/examples/merb/public/pupu/lighter/.gitignore +10 -0
- data/examples/merb/public/pupu/lighter/config.rb +2 -2
- data/{spec/pupu/adapters/merb_spec.rb → examples/merb/public/pupu/lighter/images/.gitignore} +0 -0
- data/examples/merb/public/pupu/mootools/.gitignore +5 -0
- data/examples/merb/public/pupu/mootools/README.textile +1 -1
- data/examples/merb/public/pupu/mootools/config.rb +1 -1
- data/examples/rails/.gitignore +7 -0
- data/examples/rails/Gemfile +28 -0
- data/examples/rails/README.textile +5 -0
- data/examples/rails/Rakefile +10 -0
- data/examples/rails/app/controllers/application_controller.rb +10 -0
- data/examples/rails/app/controllers/home_controller.rb +8 -0
- data/examples/rails/app/helpers/application_helper.rb +3 -0
- data/{spec/pupu/adapters/rango_spec.rb → examples/rails/app/views/examples/arguments.html.erb} +0 -0
- data/examples/rails/app/views/examples/dependencies.html.erb +0 -0
- data/examples/rails/app/views/examples/simple.html.erb +4 -0
- data/examples/rails/app/views/index.html.erb +7 -0
- data/examples/rails/app/views/layout.html.erb +12 -0
- data/examples/rails/config/boot.rb +110 -0
- data/examples/rails/config/environment.rb +55 -0
- data/examples/rails/config/environments/development.rb +17 -0
- data/examples/rails/config/environments/production.rb +28 -0
- data/examples/rails/config/environments/test.rb +28 -0
- data/examples/rails/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/rails/config/initializers/inflections.rb +10 -0
- data/examples/rails/config/initializers/mime_types.rb +5 -0
- data/examples/rails/config/initializers/new_rails_defaults.rb +21 -0
- data/examples/rails/config/initializers/session_store.rb +15 -0
- data/examples/rails/config/routes.rb +43 -0
- data/examples/rails/db/seeds.rb +7 -0
- data/examples/rails/public/404.html +30 -0
- data/examples/rails/public/422.html +30 -0
- data/examples/rails/public/500.html +30 -0
- data/examples/rails/public/favicon.ico +0 -0
- data/examples/rails/public/robots.txt +5 -0
- data/examples/rails/script/about +4 -0
- data/examples/rails/script/console +3 -0
- data/examples/rails/script/dbconsole +3 -0
- data/examples/rails/script/destroy +3 -0
- data/examples/rails/script/generate +3 -0
- data/examples/rails/script/performance/benchmarker +3 -0
- data/examples/rails/script/performance/profiler +3 -0
- data/examples/rails/script/plugin +3 -0
- data/examples/rails/script/runner +3 -0
- data/examples/rails/script/server +3 -0
- data/examples/rails/spec/application_spec.rb +37 -0
- data/examples/rails/spec/spec_helper.rb +0 -0
- data/examples/rango/.gitignore +4 -0
- data/examples/rango/Gemfile +56 -0
- data/examples/rango/README.textile +4 -6
- data/examples/rango/init.rb +7 -0
- data/examples/rango/media/pupu/autocompleter/.gitignore +5 -0
- data/examples/rango/media/pupu/autocompleter/README.textile +2 -2
- data/examples/rango/media/pupu/autocompleter/config.rb +1 -1
- data/examples/rango/media/pupu/blueprint/.gitignore +5 -0
- data/examples/rango/media/pupu/blueprint/config.rb +7 -7
- data/examples/rango/media/pupu/flash/.gitignore +5 -0
- data/examples/rango/media/pupu/flash/config.rb +1 -1
- data/examples/rango/media/pupu/lighter/.gitignore +10 -0
- data/examples/rango/media/pupu/lighter/config.rb +2 -2
- data/examples/rango/media/pupu/lighter/images/.gitignore +0 -0
- data/examples/rango/media/pupu/mootools/.gitignore +5 -0
- data/examples/rango/media/pupu/mootools/README.textile +1 -1
- data/examples/rango/media/pupu/mootools/config.rb +1 -1
- data/gems/cache/media-path-0.1.2.gem +0 -0
- data/gems/cache/nake-0.0.8.gem +0 -0
- data/gems/cache/rspec-1.3.0.gem +0 -0
- data/gems/cache/term-ansicolor-1.0.4.gem +0 -0
- data/lib/pupu.rb +2 -1
- data/lib/pupu/adapters/merb.rb +12 -0
- data/lib/pupu/adapters/rails.rb +12 -0
- data/lib/pupu/adapters/rango.rb +25 -3
- data/lib/pupu/cli.rb +13 -11
- data/lib/pupu/dsl.rb +34 -13
- data/lib/pupu/exceptions.rb +5 -0
- data/lib/pupu/github.rb +26 -14
- data/lib/pupu/helpers.rb +8 -2
- data/lib/pupu/metadata.rb +2 -0
- data/lib/pupu/parser.rb +19 -4
- data/lib/pupu/pupu.rb +53 -27
- data/lib/pupu/tasks/pupu.nake +52 -0
- data/lib/pupu/version.rb +1 -3
- data/pupu.gemspec +15 -7
- data/pupu.pre.gemspec +5 -33
- data/spec/data/public/pupu/autocompleter/.gitignore +5 -0
- data/spec/data/public/pupu/autocompleter/README.textile +2 -2
- data/spec/data/public/pupu/autocompleter/config.rb +3 -1
- data/spec/pupu/dsl_spec.rb +3 -0
- data/spec/pupu/exceptions_spec.rb +3 -0
- data/spec/pupu/github_spec.rb +4 -1
- data/spec/pupu/helpers_spec.rb +5 -2
- data/spec/pupu/metadata_spec.rb +3 -0
- data/spec/pupu/parser_spec.rb +4 -1
- data/spec/pupu/pupu_spec.rb +3 -0
- data/stubs/pupu/content/%name%.gemspec.rbt +47 -0
- data/stubs/pupu/content/%name%.pre.gemspec.rbt +8 -0
- data/stubs/pupu/content/.gitignore +12 -0
- data/stubs/pupu/content/config.rb.rbt +3 -1
- data/stubs/pupu/content/deps.rip +5 -0
- data/stubs/pupu/content/images/.gitignore +0 -0
- data/stubs/pupu/content/init.rb.rbt +17 -0
- data/stubs/pupu/content/lib/%name%.rb.rbt +4 -0
- data/stubs/pupu/content/lib/%name%/adapters/rails.rb +0 -0
- data/stubs/pupu/content/lib/%name%/adapters/rango.rb +0 -0
- data/stubs/pupu/content/spec/%name%/.gitignore +0 -0
- data/stubs/pupu/content/spec/%name%_spec.rb.rbt +10 -0
- data/stubs/pupu/content/spec/spec.opts +5 -0
- data/stubs/pupu/content/spec/spec_helper.rb.rbt +7 -0
- data/stubs/pupu/postprocess.rb +8 -0
- data/stubs/pupu/setup.rb +4 -0
- data/tasks.rb +37 -0
- metadata +284 -200
- data/Rakefile +0 -28
- data/script/spec +0 -14
- data/tasks/benchmark.rake +0 -11
- data/tasks/gem.rake +0 -23
- data/tasks/hooks.rake +0 -12
- data/tasks/release.rake +0 -68
- data/tasks/spec.rake +0 -27
- data/tasks/submodules.rake +0 -33
- data/tasks/yardoc.rake +0 -9
data/lib/pupu/cli.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "fileutils"
|
2
4
|
require "yaml"
|
3
5
|
require "ostruct"
|
@@ -7,7 +9,7 @@ require "pupu/pupu"
|
|
7
9
|
require "pupu/github"
|
8
10
|
|
9
11
|
# copyied from merb.thor, this part is actually my code as well :)
|
10
|
-
module
|
12
|
+
module Kernel
|
11
13
|
# red
|
12
14
|
def error(*messages)
|
13
15
|
puts messages.map { |msg| "\033[1;31m#{msg}\033[0m" }
|
@@ -38,16 +40,15 @@ end
|
|
38
40
|
|
39
41
|
module Pupu
|
40
42
|
class CLI
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
@args = args
|
43
|
+
attr_reader :args, :options
|
44
|
+
def initialize(args, options = Hash.new)
|
45
|
+
@args, @options = args, options
|
45
46
|
self.detect
|
46
47
|
self.load_config
|
47
48
|
self.parse_argv
|
48
49
|
self.check_setup
|
49
50
|
note "Using media directory: #{::Pupu.media_root}"
|
50
|
-
note "Using strategy: #{Pupu.strategy}"
|
51
|
+
note "Using strategy: #{::Pupu.strategy}"
|
51
52
|
end
|
52
53
|
|
53
54
|
def parse_argv
|
@@ -62,7 +63,7 @@ module Pupu
|
|
62
63
|
elsif argument.match(/--strategy=(.+)/)
|
63
64
|
self.args.delete(argument)
|
64
65
|
if %[copy submodules].include?($1)
|
65
|
-
Pupu.strategy = $1.to_sym
|
66
|
+
::Pupu.strategy = $1.to_sym
|
66
67
|
else
|
67
68
|
abort "Available strategies: copy, submodules"
|
68
69
|
end
|
@@ -76,7 +77,7 @@ module Pupu
|
|
76
77
|
path ||= ["media", "public"].find { |directory| File.directory?(directory) }
|
77
78
|
return if path.nil?
|
78
79
|
::Pupu.media_root = File.expand_path(path)
|
79
|
-
Pupu.strategy ||= :copy
|
80
|
+
::Pupu.strategy ||= :copy
|
80
81
|
end
|
81
82
|
|
82
83
|
def check_setup
|
@@ -86,8 +87,9 @@ module Pupu
|
|
86
87
|
def install
|
87
88
|
self.args.each do |pupu|
|
88
89
|
begin
|
89
|
-
GitHub.install(pupu)
|
90
|
-
rescue PluginIsAlreadyInstalled
|
90
|
+
GitHub.install(pupu, options)
|
91
|
+
rescue PluginIsAlreadyInstalled => e
|
92
|
+
puts e.backtrace.join("\n- ")
|
91
93
|
info "Plugin #{pupu} is already installed, skipping"
|
92
94
|
end
|
93
95
|
end
|
@@ -146,7 +148,7 @@ module Pupu
|
|
146
148
|
# search on github
|
147
149
|
require "yaml"
|
148
150
|
require "open-uri"
|
149
|
-
open("
|
151
|
+
open("https://github.com/api/v1/yaml/search/pupu") do |stream|
|
150
152
|
repositories = YAML::load(stream.read)["repositories"]
|
151
153
|
repositories.each do |repository|
|
152
154
|
repository = OpenStruct.new(repository)
|
data/lib/pupu/dsl.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "ostruct"
|
2
4
|
require "media-path"
|
5
|
+
require "pupu/parser"
|
3
6
|
|
4
7
|
class Hash
|
5
8
|
def to_html_attrs
|
@@ -9,12 +12,19 @@ end
|
|
9
12
|
|
10
13
|
module Pupu
|
11
14
|
class DSL
|
12
|
-
attr_reader :output, :
|
13
|
-
|
14
|
-
|
15
|
+
attr_reader :output, :path
|
16
|
+
|
17
|
+
def files
|
18
|
+
@page.files
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(pupu, page = Page.new)
|
22
|
+
@pupu = pupu
|
23
|
+
@page = page
|
15
24
|
@output = Array.new
|
16
|
-
@files =
|
25
|
+
@files = files
|
17
26
|
@dependencies = Array.new
|
27
|
+
puts "DSL: #{page.inspect}"
|
18
28
|
@path = pupu.file("config.rb")
|
19
29
|
end
|
20
30
|
|
@@ -49,17 +59,28 @@ module Pupu
|
|
49
59
|
def javascript(basename, params = Hash.new)
|
50
60
|
path = @pupu.javascript(basename).url
|
51
61
|
tag = "<script src='#{path}' type='text/javascript'></script>"
|
52
|
-
|
53
|
-
|
62
|
+
if params[:if]
|
63
|
+
tag = "<!--[if #{params[:if]}]>" + tag + "<![endif]-->"
|
64
|
+
end
|
65
|
+
unless files.include?(path)
|
66
|
+
files.push(path)
|
67
|
+
@output.push(tag)
|
68
|
+
end
|
54
69
|
end
|
55
70
|
|
56
71
|
def stylesheet(basename, params = Hash.new)
|
57
72
|
path = @pupu.stylesheet(basename).url
|
73
|
+
condition = params.delete(:if)
|
58
74
|
default = {media: 'screen', rel: 'stylesheet', type: 'text/css'}
|
59
75
|
params = default.merge(params)
|
60
76
|
tag = "<link href='#{path}' #{params.to_html_attrs} />"
|
61
|
-
|
62
|
-
|
77
|
+
if condition
|
78
|
+
tag = "<!--[if #{condition}]>" + tag + "<![endif]-->"
|
79
|
+
end
|
80
|
+
unless files.include?(path)
|
81
|
+
files.push(path)
|
82
|
+
@output.push(tag)
|
83
|
+
end
|
63
84
|
end
|
64
85
|
|
65
86
|
def javascripts(*names)
|
@@ -74,7 +95,7 @@ module Pupu
|
|
74
95
|
end
|
75
96
|
end
|
76
97
|
|
77
|
-
# parameter :type, :
|
98
|
+
# parameter :type, optional: ["local", "request"] do |type|
|
78
99
|
# javascript "autocompleter.#{type}"
|
79
100
|
# end
|
80
101
|
|
@@ -82,11 +103,11 @@ module Pupu
|
|
82
103
|
# javascript "mootools-1.2-more" if boolean
|
83
104
|
# end
|
84
105
|
def parameter(name, params = Hash.new, &block)
|
85
|
-
# pupu :autocompleter, :
|
86
|
-
# @pupu.params: { :
|
106
|
+
# pupu :autocompleter, type: "request"
|
107
|
+
# @pupu.params: { type: "request" }
|
87
108
|
|
88
|
-
# pupu :mootools, :
|
89
|
-
# @pupu.params: { :
|
109
|
+
# pupu :mootools, more: true
|
110
|
+
# @pupu.params: { more: true }
|
90
111
|
if @pupu.params.key?(name)
|
91
112
|
block.call(@pupu.params[name])
|
92
113
|
end
|
data/lib/pupu/exceptions.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Pupu
|
2
4
|
class PupuRootNotFound < StandardError
|
3
5
|
end
|
4
6
|
|
5
7
|
class PluginNotFoundError < StandardError
|
8
|
+
def initialize(plugin)
|
9
|
+
super("Plugin not found: #{plugin.inspect}")
|
10
|
+
end
|
6
11
|
end
|
7
12
|
|
8
13
|
class PluginIsAlreadyInstalled < StandardError
|
data/lib/pupu/github.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "fileutils"
|
2
4
|
require "yaml"
|
3
5
|
require "ostruct"
|
@@ -7,7 +9,7 @@ require "pupu/exceptions"
|
|
7
9
|
|
8
10
|
module ShellExtensions
|
9
11
|
def run(command)
|
10
|
-
puts "[SHELL] #{command}"
|
12
|
+
puts "[SHELL] #{command} # in #{Dir.pwd}"
|
11
13
|
%x(#{command})
|
12
14
|
$?.exitstatus == 0
|
13
15
|
end
|
@@ -19,20 +21,21 @@ module Pupu
|
|
19
21
|
class << self
|
20
22
|
include ShellExtensions
|
21
23
|
# GitHub.install("autocompleter")
|
22
|
-
# GitHub.install("botanicus/autocompleter")
|
23
|
-
def install(repo)
|
24
|
+
# GitHub.install("botanicus/autocompleter", force: true)
|
25
|
+
def install(repo, options = Hash.new)
|
24
26
|
user, repo = repo.split("/") if repo.match(%r{/})
|
25
27
|
user = ENV["USER"] unless user
|
26
28
|
url = "git://github.com/#{user}/pupu-#{repo}.git"
|
27
|
-
|
28
|
-
self.
|
29
|
+
info "Installing #{repo}"
|
30
|
+
self.install_files(repo, url, options)
|
31
|
+
self.install_dependencies(@pupu, options)
|
29
32
|
# TODO: git commit [files] -m "Added pupu #{repo} from #{url}"
|
30
33
|
end
|
31
34
|
|
32
35
|
def update(pupu_name)
|
33
36
|
if pupu_name
|
34
37
|
pupu = Pupu[pupu_name]
|
35
|
-
if Pupu.strategy.eql?(:submodules)
|
38
|
+
if ::Pupu.strategy.eql?(:submodules)
|
36
39
|
puts %(git fetch)
|
37
40
|
puts %(git reset origin/master --hard)
|
38
41
|
else
|
@@ -63,7 +66,7 @@ module Pupu
|
|
63
66
|
revision = %x(git log | head -1).chomp.sub(/^commit /, "")
|
64
67
|
dsl = DSL.new(pupu)
|
65
68
|
dependencies = dsl.get_dependencies.map { |dependency| dependency.name }
|
66
|
-
params = {:
|
69
|
+
params = {revision: revision, repozitory: url, dependencies: dependencies}
|
67
70
|
Dir.chdir(@pupu.root.to_s) do
|
68
71
|
File.open("metadata.yml", "w") do |file|
|
69
72
|
file.puts(params.to_yaml)
|
@@ -71,17 +74,26 @@ module Pupu
|
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
74
|
-
def install_dependencies(pupu)
|
77
|
+
def install_dependencies(pupu, options = Hash.new)
|
75
78
|
dsl = DSL.new(pupu)
|
76
79
|
dsl.instance_eval(File.read(pupu.file("config.rb").path))
|
77
80
|
dsl.get_dependencies.each do |dependency|
|
78
|
-
|
81
|
+
begin
|
82
|
+
info "Installing dependency #{dependency}"
|
83
|
+
self.install(dependency.name.to_s, options) # FIXME: "user/repo"
|
84
|
+
rescue PluginIsAlreadyInstalled => exception
|
85
|
+
puts "~ #{exception.message}"
|
86
|
+
end
|
79
87
|
end
|
80
88
|
end
|
81
89
|
|
82
|
-
def install_files(repo, url)
|
90
|
+
def install_files(repo, url, options = Hash.new)
|
83
91
|
chdir do |media_dir|
|
84
|
-
|
92
|
+
if File.directory?(repo) && !options[:force]
|
93
|
+
raise PluginIsAlreadyInstalled, "Pupu #{repo} already exist"
|
94
|
+
elsif File.directory?(repo) && options[:force]
|
95
|
+
FileUtils.rm_r(repo)
|
96
|
+
end
|
85
97
|
run("git clone #{url} #{repo}") || abort("Git failed")
|
86
98
|
Dir.chdir(repo) do
|
87
99
|
proceed_files(repo, url)
|
@@ -104,7 +116,7 @@ module Pupu
|
|
104
116
|
end
|
105
117
|
@pupu = Pupu[repo]
|
106
118
|
self.save_metadata(@pupu, url)
|
107
|
-
FileUtils.rm_r(".git") if Pupu.strategy.eql?(:copy)
|
119
|
+
FileUtils.rm_r(".git") if ::Pupu.strategy.eql?(:copy)
|
108
120
|
rescue Exception => exception
|
109
121
|
FileUtils.rm_r(repo) if File.directory?(repo)
|
110
122
|
raise exception
|
@@ -112,8 +124,8 @@ module Pupu
|
|
112
124
|
|
113
125
|
def chdir(pupu = nil, &block)
|
114
126
|
FileUtils.mkdir_p(Pupu.root_path) unless File.directory?(Pupu.root_path)
|
115
|
-
Dir.chdir(Pupu.
|
116
|
-
pupu ? block.call(pupu.root) : block.call(Pupu.
|
127
|
+
Dir.chdir(Pupu.root_path.to_s) do
|
128
|
+
pupu ? block.call(pupu.root) : block.call(Pupu.root_path)
|
117
129
|
end
|
118
130
|
end
|
119
131
|
end
|
data/lib/pupu/helpers.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "pupu/parser"
|
2
4
|
|
3
5
|
module Pupu
|
4
6
|
module Helpers
|
7
|
+
def pupu_page
|
8
|
+
@page ||= Page.new
|
9
|
+
end
|
10
|
+
|
5
11
|
# Use it in your layout
|
6
|
-
# Example: pupu :autocompleter, :
|
12
|
+
# Example: pupu :autocompleter, type: "local"
|
7
13
|
def pupu(name, params = Hash.new)
|
8
14
|
comment = if params.empty? then "<!-- Pupu #{name} without params -->"
|
9
15
|
else "<!-- Pupu #{name} with params #{params.inspect} -->" end
|
10
|
-
[comment,
|
16
|
+
[comment, pupu_page.parse(name, params).parse!, "", ""].join("\n")
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
data/lib/pupu/metadata.rb
CHANGED
data/lib/pupu/parser.rb
CHANGED
@@ -1,19 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "pupu/dsl"
|
2
4
|
require "pupu/pupu"
|
3
5
|
|
4
6
|
module Pupu
|
7
|
+
class Page
|
8
|
+
attr_reader :files
|
9
|
+
def initialize
|
10
|
+
@files = Array.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse(name, options)
|
14
|
+
Parser.new(name, options, self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
5
18
|
class Parser
|
6
|
-
def initialize(plugin_name, plugin_params)
|
19
|
+
def initialize(plugin_name, plugin_params, page = Page.new)
|
7
20
|
@plugin = Pupu[plugin_name, plugin_params]
|
8
21
|
@output = Array.new
|
9
|
-
|
22
|
+
puts "Parser: #{page.inspect}"
|
23
|
+
@page = page
|
24
|
+
@dsl = DSL.new(@plugin, page)
|
10
25
|
@@loaded ||= Hash.new
|
11
26
|
@@loaded[@plugin.name] = Array.new
|
12
27
|
end
|
13
28
|
|
14
29
|
def loaded?
|
15
30
|
# The reason why just array with plugin names isn't enough is that every time it can be called
|
16
|
-
# with different parameters. For example pupu :mootools and then pupu :mootools, :
|
31
|
+
# with different parameters. For example pupu :mootools and then pupu :mootools, more: true
|
17
32
|
@@loaded[@plugin.name] && @dsl.files.all? do |file|
|
18
33
|
@@loaded[@plugin.name].include?(file)
|
19
34
|
end
|
@@ -30,7 +45,7 @@ module Pupu
|
|
30
45
|
|
31
46
|
def add_dependencies
|
32
47
|
@dsl.get_dependencies.each do |dependency|
|
33
|
-
parser = Parser.new(dependency.name, dependency.params)
|
48
|
+
parser = Parser.new(dependency.name, dependency.params, @page)
|
34
49
|
@output.push(parser.parse!) unless parser.loaded?
|
35
50
|
end
|
36
51
|
end
|
data/lib/pupu/pupu.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "yaml"
|
2
4
|
require "ostruct"
|
3
5
|
require "fileutils"
|
@@ -7,36 +9,63 @@ require "pupu/metadata"
|
|
7
9
|
|
8
10
|
module Pupu
|
9
11
|
# this must be set in adapters
|
10
|
-
|
11
|
-
|
12
|
+
def self.root
|
13
|
+
@@root ||= Dir.pwd
|
14
|
+
end
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
MediaPath.rewrite { |path| File.join(prefix, path) }
|
17
|
-
end
|
16
|
+
def self.root=(path)
|
17
|
+
@@root = path
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@media_root = path
|
23
|
-
end
|
24
|
-
attr_reader :media_root
|
20
|
+
def self.framework
|
21
|
+
@@framework
|
22
|
+
end
|
25
23
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
def self.framework=(framework)
|
25
|
+
@@framework = framework
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.environment?(environment)
|
29
|
+
self.environment.eql?(environment)
|
30
|
+
end
|
31
|
+
|
32
|
+
# @example Pupu.media_prefix("media").url
|
33
|
+
# => "/media/pupu/autocompleter/javascripts/autocompleter.js"
|
34
|
+
def self.media_prefix=(prefix)
|
35
|
+
MediaPath.rewrite { |path| File.join(prefix, path) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.media_root
|
39
|
+
@@media_root ||= Dir.pwd
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.media_root=(path)
|
43
|
+
MediaPath.media_root = path
|
44
|
+
@@media_root = path
|
45
|
+
end
|
46
|
+
|
47
|
+
# @example Pupu.rewrite { |path| "http://media.domain.org/#{path}" }.url
|
48
|
+
# # => "http://media.domain.org/pupu/autocompleter/javascripts/autocompleter.js"
|
49
|
+
def rewrite(&block)
|
50
|
+
MediaPath.rewrite(&block)
|
51
|
+
end
|
52
|
+
|
53
|
+
# strategies: submodules, copy
|
54
|
+
def self.strategy
|
55
|
+
@@strategy ||= :copy
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.strategy=(strategy)
|
59
|
+
@@strategy = strategy
|
31
60
|
end
|
32
61
|
|
33
62
|
class Pupu
|
34
63
|
class << self
|
35
64
|
# TODO: return Pupu object, not string
|
36
65
|
def all
|
37
|
-
Dir["#{self.
|
38
|
-
|
39
|
-
|
66
|
+
files = Dir["#{self.root_path}/*"]
|
67
|
+
dirs = files.select(&File.method(:directory?))
|
68
|
+
dirs.map(&File.method(:basename))
|
40
69
|
end
|
41
70
|
|
42
71
|
# same as root, but doesn't raise any exception
|
@@ -44,9 +73,6 @@ module Pupu
|
|
44
73
|
File.join(::Pupu.media_root, "pupu")
|
45
74
|
end
|
46
75
|
|
47
|
-
# strategies: submodules, copy
|
48
|
-
cattr_accessor :strategy
|
49
|
-
|
50
76
|
def root
|
51
77
|
# TODO: it should be configurable
|
52
78
|
# root = ::Pupu.root.sub(%r[#{Regexp::quote(::Pupu.root)}], '').chomp("/")
|
@@ -58,8 +84,8 @@ module Pupu
|
|
58
84
|
# # exception
|
59
85
|
# end
|
60
86
|
raise "Pupu.media_root has to be initialized" if ::Pupu.media_root.nil?
|
61
|
-
raise Errno::ENOENT, "#{
|
62
|
-
@root ||= MediaPath.new(
|
87
|
+
raise Errno::ENOENT, "#{self.root_path} doesn't exist, you have to create it first!" unless File.directory?(self.root_path)
|
88
|
+
@root ||= MediaPath.new(self.root_path)
|
63
89
|
end
|
64
90
|
|
65
91
|
# TODO: reflect changes on root method
|
@@ -74,7 +100,7 @@ module Pupu
|
|
74
100
|
if self.all.include?(plugin)
|
75
101
|
self.new(plugin, params)
|
76
102
|
else
|
77
|
-
raise PluginNotFoundError
|
103
|
+
raise PluginNotFoundError.new(plugin)
|
78
104
|
end
|
79
105
|
end
|
80
106
|
end
|