middleman-robots 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +14 -9
- data/features/robots.feature +39 -1
- data/lib/middleman-robots/extension.rb +36 -26
- data/lib/middleman-robots/version.rb +2 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed8435b671910bf6bef582f73d1daaf2697ffc5c
|
4
|
+
data.tar.gz: f6a673e16af25cb55af1cf1fc5c33654e25140be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2138d6831db51ec5465c199546ffd42823748f2101f50427178d7fa88f810c97f547b29b6eb3f1b6217e7c71c72d860a4691c197f8bfea4703c49e5976eb84ed
|
7
|
+
data.tar.gz: 198d3e0a6d7ab5f8a792877b3e33544cdbd53e5059b1d5108cfde0628c39fcfd16c462a37fcfcaea5f55b975ebe67e78d09db317672a6b1b08097d9fb0ed749a
|
data/.travis.yml
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
language: ruby
|
2
|
-
script:
|
2
|
+
script: bundle exec cucumber
|
3
3
|
rvm:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
- ruby-head
|
5
|
+
- jruby-head
|
6
|
+
- jruby-19mode
|
7
|
+
- 2.2
|
8
|
+
- 2.1
|
9
|
+
- 2.0
|
10
|
+
- 1.9.3
|
11
|
+
os:
|
12
|
+
- linux
|
13
|
+
- osx
|
8
14
|
env: TEST=true TRAVIS=true
|
9
15
|
gemfile:
|
10
|
-
|
16
|
+
- Gemfile
|
11
17
|
notifications:
|
12
|
-
|
13
|
-
|
14
|
-
|
18
|
+
slack:
|
19
|
+
secure: C8xb94J4fstzAI7t9GcvKQieKc1k+ECA96ydcxDwBI1fAbupQjz4jafMwnOnD1g9QMe8hlykSNUlCXNCbcA9DZG7COjPZHCY3Icv1+0Dp44bBTDQldR8DPACPMU5Qe+pWoTZViPgJQ7tq2V9TXrGdOnOtkPTwZ9KtZrmNhxW7tM=
|
data/features/robots.feature
CHANGED
@@ -11,7 +11,45 @@ Feature: Middleman-Robots
|
|
11
11
|
And a successfully built app at "basic-app"
|
12
12
|
When I cd to "build"
|
13
13
|
Then a file named "robots.txt" should exist
|
14
|
-
And the output should contain "middleman-robots: robots.txt created"
|
14
|
+
And the output should contain "== middleman-robots: robots.txt created =="
|
15
|
+
|
16
|
+
Scenario: Rules option with user_agent
|
17
|
+
Given a fixture app "basic-app"
|
18
|
+
And a file named "config.rb" with:
|
19
|
+
"""
|
20
|
+
configure :build do
|
21
|
+
activate :robots, :rules => [
|
22
|
+
{:user_agent => '*'}
|
23
|
+
]
|
24
|
+
end
|
25
|
+
"""
|
26
|
+
And a successfully built app at "basic-app"
|
27
|
+
When I cd to "build"
|
28
|
+
Then the file "robots.txt" should contain exactly:
|
29
|
+
"""
|
30
|
+
User-Agent: *
|
31
|
+
|
32
|
+
"""
|
33
|
+
|
34
|
+
Scenario: Rules option with user_agent using block
|
35
|
+
Given a fixture app "basic-app"
|
36
|
+
And a file named "config.rb" with:
|
37
|
+
"""
|
38
|
+
configure :build do
|
39
|
+
activate :robots do |r|
|
40
|
+
r.rules = [
|
41
|
+
{:user_agent => '*'}
|
42
|
+
]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
"""
|
46
|
+
And a successfully built app at "basic-app"
|
47
|
+
When I cd to "build"
|
48
|
+
Then the file "robots.txt" should contain exactly:
|
49
|
+
"""
|
50
|
+
User-Agent: *
|
51
|
+
|
52
|
+
"""
|
15
53
|
|
16
54
|
Scenario: Rules option with user_agent
|
17
55
|
Given a fixture app "basic-app"
|
@@ -1,60 +1,70 @@
|
|
1
1
|
module Middleman
|
2
2
|
module Robots
|
3
|
+
# Robots Extension Class
|
4
|
+
#
|
5
|
+
# Create robots.txt when `$ middleman build`
|
3
6
|
class Extension < ::Middleman::Extension
|
4
7
|
option :rules, [], 'List of rules about sitemap.xml'
|
5
8
|
option :sitemap, false, 'URI of sitemap.xml'
|
6
9
|
|
7
10
|
def initialize(app, options_hash = {}, &block)
|
8
11
|
super
|
12
|
+
build_dir = app.build_dir
|
9
13
|
|
10
14
|
data = rules(options.rules) + sitemap(options.sitemap)
|
11
15
|
data.gsub!(/\n+$/, "\n")
|
12
16
|
|
13
|
-
build_dir = app.build_dir
|
14
17
|
app.after_build do
|
15
|
-
File.open(File.join(build_dir,
|
18
|
+
File.open(File.join(build_dir, 'robots.txt'), 'w') do |file|
|
16
19
|
file.puts(data)
|
17
20
|
end
|
18
|
-
|
21
|
+
logger.info '== middleman-robots: robots.txt created =='
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
22
25
|
def rules(rules)
|
23
26
|
return '' if rules.empty?
|
24
|
-
|
25
27
|
data = []
|
26
28
|
rules.each do |rule|
|
27
29
|
row = []
|
30
|
+
row << user_agent(rule)
|
31
|
+
row << disallow(rule)
|
32
|
+
row << allow(rule)
|
33
|
+
row.compact!
|
34
|
+
data << row.join("\n") + "\n\n" if row.length > 0
|
35
|
+
end
|
36
|
+
data.join('')
|
37
|
+
end
|
28
38
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
if (rule[:disallow])
|
35
|
-
rule[:disallow].each do |path|
|
36
|
-
path = "/" + path unless /^\// =~ path
|
37
|
-
row << "Disallow: #{path}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
if (rule[:allow])
|
42
|
-
rule[:allow].each do |path|
|
43
|
-
path = "/" + path unless /^\// =~ path
|
44
|
-
row << "Allow: #{path}"
|
45
|
-
end
|
46
|
-
end
|
39
|
+
def user_agent(rule)
|
40
|
+
return unless rule.key?('user-agent') || rule.key?(:user_agent)
|
41
|
+
user_agent = rule[:user_agent] || rule['user-agent']
|
42
|
+
"User-Agent: #{user_agent}"
|
43
|
+
end
|
47
44
|
|
48
|
-
|
45
|
+
def disallow(rule)
|
46
|
+
return unless rule.key?(:disallow)
|
47
|
+
lines = []
|
48
|
+
rule[:disallow].each do |path|
|
49
|
+
path = File.join('/', path) unless /^\// =~ path
|
50
|
+
lines << "Disallow: #{path}"
|
49
51
|
end
|
52
|
+
lines
|
53
|
+
end
|
50
54
|
|
51
|
-
|
55
|
+
def allow(rule)
|
56
|
+
return unless rule.key?(:allow)
|
57
|
+
lines = []
|
58
|
+
rule[:allow].each do |path|
|
59
|
+
path = File.join('/' + path) unless /^\// =~ path
|
60
|
+
lines << "Allow: #{path}"
|
61
|
+
end
|
62
|
+
lines
|
52
63
|
end
|
53
64
|
|
54
65
|
def sitemap(path)
|
55
|
-
path ? "Sitemap: #{path}" :
|
66
|
+
path ? "Sitemap: #{path}" : ''
|
56
67
|
end
|
57
68
|
end
|
58
69
|
end
|
59
70
|
end
|
60
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-robots
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yterajima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: middleman
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
127
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.4.5
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Create robots.txt when do 'build'.
|