adva-static 0.0.2 → 0.0.3
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/lib/bundler/repository.rb +118 -0
- metadata +5 -35
- data/lib/adva-static.rb +0 -1
- data/lib/adva/static.rb +0 -13
- data/lib/adva/static/export.rb +0 -104
- data/lib/adva/static/export/page.rb +0 -45
- data/lib/adva/static/export/path.rb +0 -49
- data/lib/adva/static/export/queue.rb +0 -27
- data/lib/adva/static/export/store.rb +0 -30
- data/lib/adva/static/export/templates/config.ru +0 -14
- data/lib/adva/static/import.rb +0 -42
- data/lib/adva/static/import/format.rb +0 -58
- data/lib/adva/static/import/model.rb +0 -21
- data/lib/adva/static/import/model/base.rb +0 -78
- data/lib/adva/static/import/model/blog.rb +0 -33
- data/lib/adva/static/import/model/page.rb +0 -33
- data/lib/adva/static/import/model/post.rb +0 -78
- data/lib/adva/static/import/model/section.rb +0 -51
- data/lib/adva/static/import/model/site.rb +0 -59
- data/lib/adva/static/import/request.rb +0 -92
- data/lib/adva/static/import/source.rb +0 -82
- data/lib/adva/static/rack.rb +0 -15
- data/lib/adva/static/rack/export.rb +0 -59
- data/lib/adva/static/rack/request.rb +0 -39
- data/lib/adva/static/rack/static.rb +0 -40
- data/lib/adva/static/rack/watch.rb +0 -88
- data/lib/adva/static/setup.rb +0 -68
- data/lib/adva/static/watch.rb +0 -7
- data/lib/adva/static/watch/handler.rb +0 -57
- data/lib/adva/tasks/static.rb +0 -73
- data/lib/adva_static/version.rb +0 -3
- data/lib/testing/step_definitions.rb +0 -85
- data/lib/testing/test_helper.rb +0 -133
data/lib/adva/static/watch.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'observer'
|
2
|
-
require 'watchr'
|
3
|
-
require 'watchr/event_handlers/portable'
|
4
|
-
|
5
|
-
module Adva
|
6
|
-
class Static
|
7
|
-
module Watch
|
8
|
-
class Handler
|
9
|
-
include Observable
|
10
|
-
|
11
|
-
def initialize(observable, pattern)
|
12
|
-
add_observer(observable)
|
13
|
-
@pattern = pattern
|
14
|
-
@current = Dir[pattern]
|
15
|
-
@mtime = Time.now
|
16
|
-
end
|
17
|
-
|
18
|
-
def listen
|
19
|
-
loop { trigger; sleep(0.5) }
|
20
|
-
end
|
21
|
-
|
22
|
-
def trigger
|
23
|
-
events.each do |path, event|
|
24
|
-
changed(true)
|
25
|
-
notify_observers(path, event)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
protected
|
30
|
-
|
31
|
-
def events
|
32
|
-
@last = @current.dup
|
33
|
-
@current = Dir[@pattern]
|
34
|
-
deleted + created + modified
|
35
|
-
end
|
36
|
-
|
37
|
-
def modified
|
38
|
-
(@current & @last).each do |path|
|
39
|
-
mtime = File.mtime(path)
|
40
|
-
if mtime > @mtime
|
41
|
-
@mtime = mtime
|
42
|
-
return [[path, :modified]]
|
43
|
-
end
|
44
|
-
end && []
|
45
|
-
end
|
46
|
-
|
47
|
-
def created
|
48
|
-
(@current - @last).map { |path| [path, :created] }
|
49
|
-
end
|
50
|
-
|
51
|
-
def deleted
|
52
|
-
(@last - @current).map { |path| [path, :deleted] }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
data/lib/adva/tasks/static.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require 'thor/group'
|
3
|
-
require 'patches/thor/core_ext/hash'
|
4
|
-
require 'patches/thor/group/symbolized_options'
|
5
|
-
|
6
|
-
module Adva
|
7
|
-
module Tasks
|
8
|
-
class Static
|
9
|
-
class Setup < Thor::Group
|
10
|
-
namespace 'adva:static:setup'
|
11
|
-
desc 'Setup a static version of your site'
|
12
|
-
class_option :source, :required => false, :banner => 'source directory (defaults to import)'
|
13
|
-
class_option :target, :required => false, :banner => 'source directory (defaults to export)'
|
14
|
-
class_option :host, :required => false, :banner => 'hostname of your site (defaults to example.org)'
|
15
|
-
class_option :title, :required => false, :banner => 'title of your site (defaults to the hostname)'
|
16
|
-
class_option :remote, :required => false, :banner => 'github repository url (defaults to none)'
|
17
|
-
|
18
|
-
def export
|
19
|
-
require 'config/environment'
|
20
|
-
Adva::Static::Setup.new(symbolized_options).run
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class Import < Thor::Group
|
25
|
-
namespace 'adva:static:import'
|
26
|
-
desc 'Import a site from a directory'
|
27
|
-
class_option :source, :required => false
|
28
|
-
|
29
|
-
def import
|
30
|
-
require 'config/environment'
|
31
|
-
Adva::Static::Import.new(symbolized_options).run
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class Export < Thor::Group
|
36
|
-
namespace 'adva:static:export'
|
37
|
-
desc 'Export a static version of a site'
|
38
|
-
class_option :target, :required => false
|
39
|
-
|
40
|
-
def export
|
41
|
-
require 'config/environment'
|
42
|
-
Adva::Static::Export.new(Rails.application, symbolized_options).run
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class Update < Thor::Group
|
47
|
-
namespace 'adva:static:update'
|
48
|
-
desc 'Import and export a static version of a site'
|
49
|
-
class_option :source, :required => false
|
50
|
-
class_option :target, :required => false
|
51
|
-
|
52
|
-
def export
|
53
|
-
require 'config/environment'
|
54
|
-
Adva::Static::Import.new(symbolized_options).run
|
55
|
-
Adva::Static::Export.new(Rails.application, symbolized_options).run
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class Server < Thor::Group
|
60
|
-
namespace 'adva:static:server'
|
61
|
-
desc 'Start the adva:static server and watcher'
|
62
|
-
class_option :root, :required => false, :default => 'export'
|
63
|
-
|
64
|
-
def server
|
65
|
-
ARGV.shift
|
66
|
-
Dir.chdir(symbolized_options[:root])
|
67
|
-
require "rack"
|
68
|
-
::Rack::Server.start
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
data/lib/adva_static/version.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
Given /^an empty import directory "([^"]+)"$/ do |name|
|
2
|
-
@import_dir = Pathname.new("/tmp/adva-static-test/import/#{name}")
|
3
|
-
import_dir.mkpath
|
4
|
-
end
|
5
|
-
|
6
|
-
Given /^an empty export directory$/ do
|
7
|
-
@export_dir = Pathname.new("/tmp/adva-static-test/export")
|
8
|
-
export_dir.mkpath
|
9
|
-
end
|
10
|
-
|
11
|
-
Given /^a source file "([^\"]*)"$/ do |filename|
|
12
|
-
setup_files([filename, '']) unless filename.blank?
|
13
|
-
end
|
14
|
-
|
15
|
-
Given /^a source file "([^\"]*)" with the following values:$/ do |filename, table|
|
16
|
-
setup_files([filename, YAML.dump(table.rows_hash)]) unless filename.blank?
|
17
|
-
end
|
18
|
-
|
19
|
-
Given /^the following source files:$/ do |table|
|
20
|
-
table.hashes.each do |hash|
|
21
|
-
setup_files([hash.delete('file'), YAML.dump(hash)])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
Given /^a watcher has started$/ do
|
26
|
-
@watch ||= begin
|
27
|
-
Adva::Static::Rack::Watch.any_instance.stubs(:run!)
|
28
|
-
Adva::Static::Rack::Watch.new(Adva::Static::Rack::Export.new(Rails.application, :target => export_dir), :dir => import_dir)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
When /^I run the import task$/ do
|
33
|
-
Adva::Static::Import.new(:source => import_dir).run
|
34
|
-
end
|
35
|
-
|
36
|
-
When /^I create the file "([^"]*)" with the following values triggering the watcher:$/ do |filename, table|
|
37
|
-
setup_files([filename, YAML.dump(table.rows_hash)]) unless filename.blank?
|
38
|
-
@watch.send(:handler).trigger
|
39
|
-
end
|
40
|
-
|
41
|
-
When /^I update the file "([^"]*)" with the following values triggering the watcher:$/ do |filename, table|
|
42
|
-
setup_files([filename, YAML.dump(table.rows_hash)])
|
43
|
-
file = import_dir.join(filename)
|
44
|
-
file.utime(file.atime, future)
|
45
|
-
@watch.send(:handler).trigger
|
46
|
-
end
|
47
|
-
|
48
|
-
When /^I delete the file "([^"]*)" triggering the watcher$/ do |filename|
|
49
|
-
import_dir.join(filename).unlink
|
50
|
-
@watch.send(:handler).trigger
|
51
|
-
end
|
52
|
-
|
53
|
-
Then /^the watcher should "([^\"]*)" the following "([^\"]*)" params for the file "([^\"]*)":$/ do |method, key, file, table|
|
54
|
-
import = Adva::Static::Import.new(:source => import_dir)
|
55
|
-
request = import.request_for(file)
|
56
|
-
params = request.params
|
57
|
-
method.downcase!
|
58
|
-
|
59
|
-
# model = import.send(:recognize, file).first
|
60
|
-
# debugger
|
61
|
-
|
62
|
-
case method
|
63
|
-
when 'put', 'delete'
|
64
|
-
assert_equal method, params['_method'].try(:downcase)
|
65
|
-
when 'post'
|
66
|
-
assert !params.key?('_method')
|
67
|
-
end
|
68
|
-
|
69
|
-
expected = table.rows_hash.symbolize_keys
|
70
|
-
actual = request.params[key.to_sym].slice(*expected.keys)
|
71
|
-
assert_equal expected, actual
|
72
|
-
end
|
73
|
-
|
74
|
-
Then /^there should be an export file "([^"]*)" containing "([^"]*)"$/ do |filename, text|
|
75
|
-
file = export_dir.join(filename)
|
76
|
-
assert file.exist?, "expected #{file.to_s.inspect} to exist"
|
77
|
-
file = File.read(file)
|
78
|
-
assert file.include?(text), "expected #{file.inspect} to include #{text.inspect} "
|
79
|
-
end
|
80
|
-
|
81
|
-
Then /^there should not be an export file "([^"]*)"$/ do |filename|
|
82
|
-
file = export_dir.join(filename)
|
83
|
-
assert !file.exist?, "expected #{file.to_s.inspect} not to exist"
|
84
|
-
end
|
85
|
-
|
data/lib/testing/test_helper.rb
DELETED
@@ -1,133 +0,0 @@
|
|
1
|
-
module TestHelper
|
2
|
-
module Static
|
3
|
-
def setup
|
4
|
-
setup_import_directory
|
5
|
-
super
|
6
|
-
end
|
7
|
-
|
8
|
-
def teardown_import_directory
|
9
|
-
import_dir.rmtree rescue nil
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown_export_directory
|
13
|
-
export_dir.rmtree rescue nil
|
14
|
-
end
|
15
|
-
|
16
|
-
def import_dir
|
17
|
-
@import_dir ||= Pathname.new('/tmp/adva-static-test/import/ruby-i18n.org')
|
18
|
-
end
|
19
|
-
|
20
|
-
def export_dir
|
21
|
-
@export_dir ||= Pathname.new('/tmp/adva-static-test/export')
|
22
|
-
end
|
23
|
-
|
24
|
-
def teardown
|
25
|
-
teardown_import_directory
|
26
|
-
super
|
27
|
-
end
|
28
|
-
|
29
|
-
def request(path)
|
30
|
-
Adva::Static::Import.new(:source => import_dir).request_for(path)
|
31
|
-
end
|
32
|
-
|
33
|
-
def source(path)
|
34
|
-
Adva::Static::Import::Source.new(path, import_dir)
|
35
|
-
end
|
36
|
-
|
37
|
-
def setup_site_record
|
38
|
-
Factory(:site, :host => 'ruby-i18n.org')
|
39
|
-
end
|
40
|
-
|
41
|
-
def setup_root_page_record
|
42
|
-
setup_site_record
|
43
|
-
end
|
44
|
-
|
45
|
-
def setup_non_root_page_record
|
46
|
-
site = setup_site_record
|
47
|
-
site.pages.create!(:name => 'Contact')
|
48
|
-
end
|
49
|
-
|
50
|
-
def setup_root_blog_record
|
51
|
-
site = setup_site_record
|
52
|
-
site.pages.first.destroy
|
53
|
-
|
54
|
-
site.blogs.create!(:name => 'Home', :posts_attributes => [
|
55
|
-
{ :title => 'Welcome to the future of I18n in Ruby on Rails', :body => 'Welcome to the future!', :created_at => '2008-07-31' }
|
56
|
-
])
|
57
|
-
end
|
58
|
-
|
59
|
-
def setup_non_root_blog_record
|
60
|
-
site = setup_site_record
|
61
|
-
site.blogs.create!(:name => 'Blog', :posts_attributes => [
|
62
|
-
{ :title => 'Welcome to the future of I18n in Ruby on Rails', :body => 'Welcome to the future!', :created_at => '2008-07-31' }
|
63
|
-
])
|
64
|
-
end
|
65
|
-
|
66
|
-
def setup_import_directory
|
67
|
-
import_dir.mkpath
|
68
|
-
setup_dirs(%w(images javascripts stylesheets))
|
69
|
-
setup_files(['config.ru', 'foo'], ['site.yml', YAML.dump(:host => 'ruby-i18n.org', :name => 'Ruby I18n', :title => 'Ruby I18n')])
|
70
|
-
end
|
71
|
-
|
72
|
-
def setup_root_blog
|
73
|
-
setup_files(
|
74
|
-
['2008/07/31/welcome-to-the-future-of-i18n-in-ruby-on-rails.yml', YAML.dump(:body => 'Welcome to the future')],
|
75
|
-
['2009/07/12/ruby-i18n-gem-hits-0-2-0.yml', YAML.dump(:body => 'Ruby I18n hits 0.2.0')]
|
76
|
-
)
|
77
|
-
end
|
78
|
-
|
79
|
-
def setup_non_root_blog
|
80
|
-
setup_files(
|
81
|
-
['blog/2008/07/31/welcome-to-the-future-of-i18n-in-ruby-on-rails.yml', YAML.dump(:body => 'Welcome to the future')],
|
82
|
-
['blog/2009/07/12/ruby-i18n-gem-hits-0-2-0.yml', YAML.dump(:body => 'Ruby I18n hits 0.2.0')]
|
83
|
-
)
|
84
|
-
end
|
85
|
-
|
86
|
-
def setup_root_page
|
87
|
-
setup_files(
|
88
|
-
['index.yml', YAML.dump(:name => 'Home', :body => 'home')]
|
89
|
-
)
|
90
|
-
end
|
91
|
-
|
92
|
-
def setup_root_nested_page
|
93
|
-
setup_files(
|
94
|
-
['home/nested.yml', YAML.dump(:body => 'nested under home')]
|
95
|
-
)
|
96
|
-
end
|
97
|
-
|
98
|
-
def setup_non_root_page
|
99
|
-
setup_files(
|
100
|
-
['contact.yml', YAML.dump(:body => 'contact')]
|
101
|
-
)
|
102
|
-
end
|
103
|
-
|
104
|
-
def setup_non_root_nested_page
|
105
|
-
setup_files(
|
106
|
-
['contact/nested.yml', YAML.dump(:body => 'nested under contact')]
|
107
|
-
)
|
108
|
-
end
|
109
|
-
|
110
|
-
def setup_nested_page
|
111
|
-
setup_files(
|
112
|
-
['contact/mailer.yml', YAML.dump(:body => 'contact mailer')]
|
113
|
-
)
|
114
|
-
end
|
115
|
-
|
116
|
-
def setup_dirs(paths)
|
117
|
-
paths.each do |path|
|
118
|
-
FileUtils.mkdir_p(import_dir.join(path))
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def setup_files(*files)
|
123
|
-
files.each do |path, content|
|
124
|
-
import_dir.join(File.dirname(path)).mkpath
|
125
|
-
File.open(import_dir.join(path), 'w') { |f| f.write(content) }
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def future
|
130
|
-
Time.local(Time.now.year + 1, Time.now.month, Time.now.day)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|