jekyll-git_metadata 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +49 -9
- data/Rakefile +6 -0
- data/jekyll-git_metadata.gemspec +2 -0
- data/lib/jekyll/git_metadata/generator.rb +22 -26
- data/lib/jekyll/git_metadata/version.rb +1 -1
- data/test/helper.rb +28 -0
- data/test/test_git_metadata.rb +158 -0
- data/test/test_repo/.gitignore +1 -0
- data/test/test_repo/_config.yml +12 -0
- data/test/test_repo/_includes/footer.html +61 -0
- data/test/test_repo/_includes/head.html +12 -0
- data/test/test_repo/_includes/header.html +28 -0
- data/test/test_repo/_layouts/default.html +19 -0
- data/test/test_repo/_layouts/page.html +14 -0
- data/test/test_repo/_layouts/post.html +15 -0
- data/test/test_repo/_posts/2014-07-14-welcome-to-jekyll.markdown +28 -0
- data/test/test_repo/about.md +9 -0
- data/test/test_repo/css/main.css +410 -0
- data/test/test_repo/dot_git/COMMIT_EDITMSG +1 -0
- data/test/test_repo/dot_git/HEAD +1 -0
- data/test/test_repo/dot_git/config +7 -0
- data/test/test_repo/dot_git/description +1 -0
- data/test/test_repo/dot_git/hooks/applypatch-msg.sample +15 -0
- data/test/test_repo/dot_git/hooks/commit-msg.sample +24 -0
- data/test/test_repo/dot_git/hooks/post-update.sample +8 -0
- data/test/test_repo/dot_git/hooks/pre-applypatch.sample +14 -0
- data/test/test_repo/dot_git/hooks/pre-commit.sample +49 -0
- data/test/test_repo/dot_git/hooks/pre-push.sample +54 -0
- data/test/test_repo/dot_git/hooks/pre-rebase.sample +169 -0
- data/test/test_repo/dot_git/hooks/prepare-commit-msg.sample +36 -0
- data/test/test_repo/dot_git/hooks/update.sample +128 -0
- data/test/test_repo/dot_git/index +0 -0
- data/test/test_repo/dot_git/info/exclude +6 -0
- data/test/test_repo/dot_git/logs/HEAD +5 -0
- data/test/test_repo/dot_git/logs/refs/heads/master +5 -0
- data/test/test_repo/dot_git/objects/00/26c4c5df4d5148a07b9fbd790620f4e11d0802 +0 -0
- data/test/test_repo/dot_git/objects/0e/a9d20342677512902dde3175a73e1dd1059e67 +0 -0
- data/test/test_repo/dot_git/objects/25/d62f6feeb7190483f81564f4a76c1ec33d5118 +0 -0
- data/test/test_repo/dot_git/objects/32/3a65e20f0feb846438bbda1a0396ea2db7616e +0 -0
- data/test/test_repo/dot_git/objects/3e/d64bb62b98b0827096cda5da5a728ec1bf5e3e +1 -0
- data/test/test_repo/dot_git/objects/48/d97759a460f607e077eea99a2df7b3cd5a2601 +0 -0
- data/test/test_repo/dot_git/objects/4c/2dd956115a971f5376a998bc4b243022c8881e +0 -0
- data/test/test_repo/dot_git/objects/4d/1b13c2e1ef1c1a944aae52994682da833a5bef +1 -0
- data/test/test_repo/dot_git/objects/4d/7f8a4c1a1bac8d553ba169e18882a7f51235bd +0 -0
- data/test/test_repo/dot_git/objects/59/821b143fbc62850d08e3f70c70d02af08df684 +0 -0
- data/test/test_repo/dot_git/objects/60/9711c27d50b5ab6ecc7d8fd485082481f9fc4a +0 -0
- data/test/test_repo/dot_git/objects/62/61f5911f204a827c313081c33e2522f0dd457c +0 -0
- data/test/test_repo/dot_git/objects/78/845656f899d0bfd86d2806b85b0c54adddd3c8 +0 -0
- data/test/test_repo/dot_git/objects/7f/9eb0e6044998d71653c06fdc6e359dfbfc4211 +0 -0
- data/test/test_repo/dot_git/objects/83/65a44c640d5c7cafc8788607a274dfd91b89bb +3 -0
- data/test/test_repo/dot_git/objects/83/8ad7a02ebe551a90bea885c94191667f29009c +1 -0
- data/test/test_repo/dot_git/objects/83/8daa5e0163161d6e47bd1b0d783ca7307066c6 +0 -0
- data/test/test_repo/dot_git/objects/88/090a3ea8ce80e49ea42d249836aaa25f257454 +0 -0
- data/test/test_repo/dot_git/objects/8d/1f788990d1f80ebcbe7b78c3e5c393b7a41943 +0 -0
- data/test/test_repo/dot_git/objects/99/117f666995e8836652d9590daa2fdcb4de8b2a +0 -0
- data/test/test_repo/dot_git/objects/9e/00340e45d33e52bb16100f1b613a36f82f9c57 +0 -0
- data/test/test_repo/dot_git/objects/a9/f5097c614e0d4be7f900c04d782d3b1d675ee2 +0 -0
- data/test/test_repo/dot_git/objects/ae/45638b71046b28d46a764d8a2f7780fec58c01 +1 -0
- data/test/test_repo/dot_git/objects/af/415865cd1f1c0a5963a5d45b1335856e23dae8 +0 -0
- data/test/test_repo/dot_git/objects/ba/a938862bbe45533863069649b40fdebf59e81c +0 -0
- data/test/test_repo/dot_git/objects/c0/8f9add7a1d48045bec46451dfdbb5b5ebf8dc0 +0 -0
- data/test/test_repo/dot_git/objects/c8/f101653f2c1de3611232fc4c940246b06779cd +0 -0
- data/test/test_repo/dot_git/objects/da/077394cb4d5bf7ffac527dbfc652ec0592b423 +2 -0
- data/test/test_repo/dot_git/objects/e1/ec08bcf36967f7be9ec6df51c862cc86305f4f +3 -0
- data/test/test_repo/dot_git/objects/e3/c2be348eb0873f7ac3f500ae6daaa93ebd7959 +0 -0
- data/test/test_repo/dot_git/objects/e5/e6f26a0481e83434feb2de4ef29843c8a1b8b2 +0 -0
- data/test/test_repo/dot_git/objects/ff/74852f93c8e337b7ae3088c31cfe8673def356 +0 -0
- data/test/test_repo/dot_git/refs/heads/master +1 -0
- data/test/test_repo/feed.xml +30 -0
- data/test/test_repo/index.html +20 -0
- metadata +161 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 342bad72e62590b3b7e30da46bcf49d1f2ca0f3e
|
4
|
+
data.tar.gz: 24cb75d6bdef4bdeffc284bbb9ef97729cd6a363
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cee24552d6e323f2c88ca4f9efcfbd497639f218accab9c764cfa2820d66c1aae6daf0ae6991ea5f7cd1579a24e1d0edce9d5a18a3147e1402c133290cca948
|
7
|
+
data.tar.gz: a9b28fb433038e6333691eb27589356c159e01acd6fd7e7392249cad6f2593f87a0633442aadd274ed6dc8013c7a9fe4b5a699e4d4a5398ed4a741e814af87a7
|
data/README.md
CHANGED
@@ -1,24 +1,62 @@
|
|
1
1
|
# Jekyll::GitMetadata
|
2
2
|
|
3
|
-
|
3
|
+
Expose Git metadata to Jekyll. Just like how Github exposes [repository metadata](https://help.github.com/articles/repository-metadata-on-github-pages), this plugin will expose information about your git repository for your templates. For example:
|
4
|
+
|
5
|
+
```
|
6
|
+
{{site.git.total_commits}} # => Will return the total number of commits for your Jekyll repository
|
7
|
+
```
|
4
8
|
|
5
9
|
## Installation
|
6
10
|
|
7
|
-
Add
|
11
|
+
Add to your `Gemfile`:
|
8
12
|
|
9
|
-
|
13
|
+
```
|
14
|
+
gem 'jekyll-autolink_email'
|
15
|
+
```
|
10
16
|
|
11
|
-
|
17
|
+
Add to your `_config.yml`:
|
12
18
|
|
13
|
-
|
19
|
+
```yml
|
20
|
+
gems:
|
21
|
+
- jekyll-autolink_email
|
22
|
+
```
|
14
23
|
|
15
|
-
|
24
|
+
## Usage
|
16
25
|
|
17
|
-
|
26
|
+
This plugin adds a hash of git information to the `site` and `page` variables. The hash looks something like this:
|
18
27
|
|
19
|
-
|
28
|
+
```
|
29
|
+
{"authors"=>
|
30
|
+
[
|
31
|
+
{"commits"=>2, "name"=>"Ivan Tse", "email"=>"ivan@example.com"},
|
32
|
+
{"commits"=>5, "name"=>"John Smith", "email"=>"john@example.com"}
|
33
|
+
],
|
34
|
+
"total_commits"=>7,
|
35
|
+
"total_additions"=>57,
|
36
|
+
"total_subtractions"=>22,
|
37
|
+
"first_commit"=>
|
38
|
+
{"short_sha"=>"d15cbe8",
|
39
|
+
"long_sha"=>"d15cbe8d0f4d4db9efda7a3daabbe966c21f3848",
|
40
|
+
"author_name"=>"John Smith",
|
41
|
+
"author_email"=>"john@example.com",
|
42
|
+
"author_date"=>"Thu Jan 16 23:36:00 2014 -0500",
|
43
|
+
"commit_name"=>"John Smith",
|
44
|
+
"commit_email"=>"john@example.com",
|
45
|
+
"commit_date"=>"Thu Jan 16 23:36:00 2014 -0500",
|
46
|
+
"message"=>"A commit!"},
|
47
|
+
"last_commit"=>
|
48
|
+
{"short_sha"=>"f88ca3b",
|
49
|
+
"long_sha"=>"f88ca3bff630efb6cdb356fad3d640534b109572",
|
50
|
+
"author_name"=>"Ivan Tse",
|
51
|
+
"author_email"=>"ivan@example.com",
|
52
|
+
"author_date"=>"Mon Jul 14 04:04:47 2014 -0400",
|
53
|
+
"commit_name"=>"John Smith",
|
54
|
+
"commit_email"=>"john@example.com",
|
55
|
+
"commit_date"=>"Mon Jul 14 04:04:47 2014 -0400",
|
56
|
+
"message"=>"Fix some stuff"}}
|
57
|
+
```
|
20
58
|
|
21
|
-
|
59
|
+
To access this hash, use either `page.git` or `site.git`. `page.git` contains the git information about that particuliar page/file. `site.git` contains the git information for the entire git repository. `site.git` also includes `total_files` and `project_name` variables.
|
22
60
|
|
23
61
|
## Contributing
|
24
62
|
|
@@ -27,3 +65,5 @@ TODO: Write usage instructions here
|
|
27
65
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
66
|
4. Push to the branch (`git push origin my-new-feature`)
|
29
67
|
5. Create a new Pull Request
|
68
|
+
|
69
|
+
Suggestions for more git metadata are welcomed!
|
data/Rakefile
CHANGED
data/jekyll-git_metadata.gemspec
CHANGED
@@ -11,10 +11,7 @@ module Jekyll
|
|
11
11
|
|
12
12
|
Dir.chdir(site.source) do
|
13
13
|
site.config['git'] = site_data
|
14
|
-
site.pages.each do |page|
|
15
|
-
page.data['git'] = page_data(page.relative_path)
|
16
|
-
end
|
17
|
-
site.posts.each do |page|
|
14
|
+
(site.pages + site.posts).each do |page|
|
18
15
|
page.data['git'] = page_data(page.relative_path)
|
19
16
|
end
|
20
17
|
end
|
@@ -22,21 +19,13 @@ module Jekyll
|
|
22
19
|
end
|
23
20
|
|
24
21
|
def site_data
|
25
|
-
authors = self.authors
|
26
|
-
lines = self.lines
|
27
22
|
{
|
28
23
|
'project_name' => project_name,
|
29
|
-
'files_count' => files_count
|
30
|
-
|
31
|
-
'total_commits' => authors.inject(0) { |sum, h| sum += h['commits'] },
|
32
|
-
'total_additions' => lines.inject(0) { |sum, h| sum += h['additions'] },
|
33
|
-
'total_subtractions' => lines.inject(0) { |sum, h| sum += h['subtractions'] },
|
34
|
-
'first_commit' => commit(lines.last['sha']),
|
35
|
-
'last_commit' => commit(lines.first['sha'])
|
36
|
-
}
|
24
|
+
'files_count' => files_count
|
25
|
+
}.merge!(page_data)
|
37
26
|
end
|
38
27
|
|
39
|
-
def page_data(relative_path)
|
28
|
+
def page_data(relative_path = nil)
|
40
29
|
authors = self.authors(relative_path)
|
41
30
|
lines = self.lines(relative_path)
|
42
31
|
{
|
@@ -53,7 +42,7 @@ module Jekyll
|
|
53
42
|
results = []
|
54
43
|
cmd = 'git shortlog -se'
|
55
44
|
cmd << " -- #{file}" if file
|
56
|
-
result = %x{#{cmd}}
|
45
|
+
result = %x{ #{cmd} }
|
57
46
|
result.lines.each do |line|
|
58
47
|
commits, name, email = line.scan(/(.*)\t(.*)<(.*)>/).first.map(&:strip)
|
59
48
|
results << { 'commits' => commits.to_i, 'name' => name, 'email' => email }
|
@@ -64,32 +53,39 @@ module Jekyll
|
|
64
53
|
def lines(file = nil)
|
65
54
|
cmd = "git log --numstat --format='%h'"
|
66
55
|
cmd << " -- #{file}" if file
|
67
|
-
result = %x{#{cmd}}
|
68
|
-
results = result.scan(/(.*)\n\n(
|
69
|
-
results.map
|
56
|
+
result = %x{ #{cmd} }
|
57
|
+
results = result.scan(/(.*)\n\n((?:.*\t.*\t.*\n)*)/)
|
58
|
+
results.map do |line|
|
59
|
+
files = line[1].scan(/(.*)\t(.*)\t(.*)\n/)
|
60
|
+
line[1] = files.inject(0){|s,a| s+=a[0].to_i}
|
61
|
+
line[2] = files.inject(0){|s,a| s+=a[1].to_i}
|
62
|
+
end
|
70
63
|
results.map do |line|
|
71
|
-
{ 'sha' => line[0], 'additions' => line[1], 'subtractions' => line[2]
|
64
|
+
{ 'sha' => line[0], 'additions' => line[1], 'subtractions' => line[2] }
|
72
65
|
end
|
73
66
|
end
|
74
67
|
|
75
68
|
def commit(sha)
|
76
|
-
result = %x{git show --format=fuller -q #{sha}}
|
77
|
-
author_name, author_email, author_date, commit_name, commit_email, commit_date, message = result
|
78
|
-
.scan(
|
69
|
+
result = %x{ git show --format=fuller -q #{sha} }
|
70
|
+
long_sha, author_name, author_email, author_date, commit_name, commit_email, commit_date, message = result
|
71
|
+
.scan(/commit (.*)\nAuthor:(.*)<(.*)>\nAuthorDate:(.*)\nCommit:(.*)<(.*)>\nCommitDate:(.*)\n\n(.*)/)
|
79
72
|
.first
|
80
73
|
.map(&:strip)
|
81
74
|
{
|
75
|
+
'short_sha' => sha,
|
76
|
+
'long_sha' => long_sha,
|
82
77
|
'author_name' => author_name,
|
83
78
|
'author_email' => author_email,
|
84
79
|
'author_date' => author_date,
|
85
80
|
'commit_name' => commit_name,
|
81
|
+
'commit_email' => commit_email,
|
86
82
|
'commit_date' => commit_date,
|
87
83
|
'message' => message
|
88
84
|
}
|
89
85
|
end
|
90
86
|
|
91
87
|
def project_name
|
92
|
-
File.basename(%x{git rev-parse --show-toplevel}.strip)
|
88
|
+
File.basename(%x{ git rev-parse --show-toplevel }.strip)
|
93
89
|
end
|
94
90
|
|
95
91
|
def files_count
|
@@ -97,8 +93,8 @@ module Jekyll
|
|
97
93
|
end
|
98
94
|
|
99
95
|
def git_installed?
|
100
|
-
|
101
|
-
system "git --version >>#{
|
96
|
+
null = RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
|
97
|
+
system "git --version >>#{null} 2>&1"
|
102
98
|
end
|
103
99
|
end
|
104
100
|
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'mocha/mini_test'
|
5
|
+
require 'jekyll'
|
6
|
+
require 'jekyll-git_metadata'
|
7
|
+
|
8
|
+
class Minitest::Test
|
9
|
+
def jekyll_test_repo_path
|
10
|
+
File.join(File.dirname(__FILE__), 'test_repo')
|
11
|
+
end
|
12
|
+
|
13
|
+
def dot_git_path
|
14
|
+
File.join(jekyll_test_repo_path, 'dot_git')
|
15
|
+
end
|
16
|
+
|
17
|
+
def real_dot_git_path
|
18
|
+
File.join(jekyll_test_repo_path, '.git')
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_temp_git_dir
|
22
|
+
FileUtils.cp_r(dot_git_path, real_dot_git_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
def remove_temp_git_dir
|
26
|
+
FileUtils.rm_rf(real_dot_git_path)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class Jekyll::GitMetadataTest < Minitest::Test
|
4
|
+
context 'GitMetadata' do
|
5
|
+
|
6
|
+
setup do
|
7
|
+
create_temp_git_dir
|
8
|
+
Jekyll.instance_variable_set(:@logger, Jekyll::LogAdapter.new(Jekyll::Stevenson.new, :error))
|
9
|
+
|
10
|
+
config = Jekyll.configuration(
|
11
|
+
:source => jekyll_test_repo_path,
|
12
|
+
:destination => File.join(jekyll_test_repo_path, '_site'))
|
13
|
+
@site = Jekyll::Site.new(config)
|
14
|
+
@site.read
|
15
|
+
@site.generate
|
16
|
+
end
|
17
|
+
|
18
|
+
teardown do
|
19
|
+
remove_temp_git_dir
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'site data' do
|
23
|
+
setup do
|
24
|
+
@site_data = @site.config['git']
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'have correct project name' do
|
28
|
+
assert_equal 'test_repo', @site_data['project_name']
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'have correct files count' do
|
32
|
+
assert_equal 13, @site_data['files_count']
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'have correct totals count' do
|
36
|
+
assert_equal 5, @site_data['total_commits']
|
37
|
+
assert_equal 670, @site_data['total_additions']
|
38
|
+
assert_equal 11, @site_data['total_subtractions']
|
39
|
+
end
|
40
|
+
|
41
|
+
should 'have correct authors data' do
|
42
|
+
assert_equal 2, @site_data['authors'].count
|
43
|
+
assert @site_data['authors'].include?({"commits"=>4, "name"=>"Ivan Tse", "email"=>"ivan.tse1@gmail.com"})
|
44
|
+
assert @site_data['authors'].include?({"commits"=>1, "name"=>"LeBron James", "email"=>"lbj@example.com"})
|
45
|
+
end
|
46
|
+
|
47
|
+
should 'have correct first commit data' do
|
48
|
+
assert_equal '7884565', @site_data['first_commit']['short_sha']
|
49
|
+
assert_equal '78845656f899d0bfd86d2806b85b0c54adddd3c8', @site_data['first_commit']['long_sha']
|
50
|
+
assert_equal 'Ivan Tse', @site_data['first_commit']['author_name']
|
51
|
+
assert_equal 'ivan.tse1@gmail.com', @site_data['first_commit']['author_email']
|
52
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @site_data['first_commit']['author_date']
|
53
|
+
assert_equal 'Ivan Tse', @site_data['first_commit']['commit_name']
|
54
|
+
assert_equal 'ivan.tse1@gmail.com', @site_data['first_commit']['commit_email']
|
55
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @site_data['first_commit']['commit_date']
|
56
|
+
assert_equal 'First commit with jekyll scaffold', @site_data['first_commit']['message']
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'have correct last commit data' do
|
60
|
+
assert_equal '25d62f6', @site_data['last_commit']['short_sha']
|
61
|
+
assert_equal '25d62f6feeb7190483f81564f4a76c1ec33d5118', @site_data['last_commit']['long_sha']
|
62
|
+
assert_equal 'LeBron James', @site_data['last_commit']['author_name']
|
63
|
+
assert_equal 'lbj@example.com', @site_data['last_commit']['author_email']
|
64
|
+
assert_equal 'Mon Jul 14 02:12:31 2014 -0400', @site_data['last_commit']['author_date']
|
65
|
+
assert_equal 'Ivan Tse', @site_data['last_commit']['commit_name']
|
66
|
+
assert_equal 'ivan.tse1@gmail.com', @site_data['last_commit']['commit_email']
|
67
|
+
assert_equal 'Mon Jul 14 02:12:31 2014 -0400', @site_data['last_commit']['commit_date']
|
68
|
+
assert_equal 'Be more friendly', @site_data['last_commit']['message']
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'page data' do
|
73
|
+
setup do
|
74
|
+
@about_page = @site.pages.select{|p| p.name == 'about.md'}.first
|
75
|
+
@page_data = @about_page.data['git']
|
76
|
+
end
|
77
|
+
|
78
|
+
should 'have correct totals count' do
|
79
|
+
assert_equal 3, @page_data['total_commits']
|
80
|
+
assert_equal 14, @page_data['total_additions']
|
81
|
+
assert_equal 5, @page_data['total_subtractions']
|
82
|
+
end
|
83
|
+
|
84
|
+
should 'have correct authors data' do
|
85
|
+
assert_equal 2, @page_data['authors'].count
|
86
|
+
assert @page_data['authors'].include?({"commits"=>2, "name"=>"Ivan Tse", "email"=>"ivan.tse1@gmail.com"})
|
87
|
+
assert @page_data['authors'].include?({"commits"=>1, "name"=>"LeBron James", "email"=>"lbj@example.com"})
|
88
|
+
end
|
89
|
+
|
90
|
+
should 'have correct first commit data' do
|
91
|
+
assert_equal '7884565', @page_data['first_commit']['short_sha']
|
92
|
+
assert_equal '78845656f899d0bfd86d2806b85b0c54adddd3c8', @page_data['first_commit']['long_sha']
|
93
|
+
assert_equal 'Ivan Tse', @page_data['first_commit']['author_name']
|
94
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['first_commit']['author_email']
|
95
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @page_data['first_commit']['author_date']
|
96
|
+
assert_equal 'Ivan Tse', @page_data['first_commit']['commit_name']
|
97
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['first_commit']['commit_email']
|
98
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @page_data['first_commit']['commit_date']
|
99
|
+
assert_equal 'First commit with jekyll scaffold', @page_data['first_commit']['message']
|
100
|
+
end
|
101
|
+
|
102
|
+
should 'have correct last commit data' do
|
103
|
+
assert_equal '25d62f6', @page_data['last_commit']['short_sha']
|
104
|
+
assert_equal '25d62f6feeb7190483f81564f4a76c1ec33d5118', @page_data['last_commit']['long_sha']
|
105
|
+
assert_equal 'LeBron James', @page_data['last_commit']['author_name']
|
106
|
+
assert_equal 'lbj@example.com', @page_data['last_commit']['author_email']
|
107
|
+
assert_equal 'Mon Jul 14 02:12:31 2014 -0400', @page_data['last_commit']['author_date']
|
108
|
+
assert_equal 'Ivan Tse', @page_data['last_commit']['commit_name']
|
109
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['last_commit']['commit_email']
|
110
|
+
assert_equal 'Mon Jul 14 02:12:31 2014 -0400', @page_data['last_commit']['commit_date']
|
111
|
+
assert_equal 'Be more friendly', @page_data['last_commit']['message']
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'post data' do
|
116
|
+
setup do
|
117
|
+
@welcome_post = @site.posts.select{|p| p.name == '2014-07-14-welcome-to-jekyll.markdown'}.first
|
118
|
+
@page_data = @welcome_post.data['git']
|
119
|
+
end
|
120
|
+
|
121
|
+
should 'have correct totals count' do
|
122
|
+
assert_equal 2, @page_data['total_commits']
|
123
|
+
assert_equal 28, @page_data['total_additions']
|
124
|
+
assert_equal 0, @page_data['total_subtractions']
|
125
|
+
end
|
126
|
+
|
127
|
+
should 'have correct authors data' do
|
128
|
+
assert_equal 1, @page_data['authors'].count
|
129
|
+
assert @page_data['authors'].include?({"commits"=>2, "name"=>"Ivan Tse", "email"=>"ivan.tse1@gmail.com"})
|
130
|
+
end
|
131
|
+
|
132
|
+
should 'have correct first commit data' do
|
133
|
+
assert_equal '7884565', @page_data['first_commit']['short_sha']
|
134
|
+
assert_equal '78845656f899d0bfd86d2806b85b0c54adddd3c8', @page_data['first_commit']['long_sha']
|
135
|
+
assert_equal 'Ivan Tse', @page_data['first_commit']['author_name']
|
136
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['first_commit']['author_email']
|
137
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @page_data['first_commit']['author_date']
|
138
|
+
assert_equal 'Ivan Tse', @page_data['first_commit']['commit_name']
|
139
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['first_commit']['commit_email']
|
140
|
+
assert_equal 'Mon Jul 14 02:01:29 2014 -0400', @page_data['first_commit']['commit_date']
|
141
|
+
assert_equal 'First commit with jekyll scaffold', @page_data['first_commit']['message']
|
142
|
+
end
|
143
|
+
|
144
|
+
should 'have correct last commit data' do
|
145
|
+
assert_equal '8365a44', @page_data['last_commit']['short_sha']
|
146
|
+
assert_equal '8365a44c640d5c7cafc8788607a274dfd91b89bb', @page_data['last_commit']['long_sha']
|
147
|
+
assert_equal 'Ivan Tse', @page_data['last_commit']['author_name']
|
148
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['last_commit']['author_email']
|
149
|
+
assert_equal 'Mon Jul 14 02:10:03 2014 -0400', @page_data['last_commit']['author_date']
|
150
|
+
assert_equal 'Ivan Tse', @page_data['last_commit']['commit_name']
|
151
|
+
assert_equal 'ivan.tse1@gmail.com', @page_data['last_commit']['commit_email']
|
152
|
+
assert_equal 'Mon Jul 14 02:10:03 2014 -0400', @page_data['last_commit']['commit_date']
|
153
|
+
assert_equal 'Edit first post', @page_data['last_commit']['message']
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
_site
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Site settings
|
2
|
+
title: Jekyll Test Site for Jekyll::GitMetadata
|
3
|
+
email: ivan.tse1@gmail.com
|
4
|
+
description: "This is a test jekyll site with git contents to properly test the Jekyll::GitMetadata generator"
|
5
|
+
baseurl: ""
|
6
|
+
url: "http://tseivan.com"
|
7
|
+
twitter_username: ivan_tse
|
8
|
+
github_username: ivantsepp
|
9
|
+
|
10
|
+
# Build settings
|
11
|
+
markdown: kramdown
|
12
|
+
permalink: pretty
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<footer class="site-footer">
|
2
|
+
|
3
|
+
<div class="wrap">
|
4
|
+
|
5
|
+
<h2 class="footer-heading">{{ site.title }}</h2>
|
6
|
+
|
7
|
+
<div class="footer-col-1 column">
|
8
|
+
<ul>
|
9
|
+
<li>{{ site.title }}</li>
|
10
|
+
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
11
|
+
</ul>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="footer-col-2 column">
|
15
|
+
<ul>
|
16
|
+
{% if site.github_username %}<li>
|
17
|
+
<a href="https://github.com/{{ site.github_username }}">
|
18
|
+
<span class="icon github">
|
19
|
+
<svg version="1.1" class="github-icon-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
20
|
+
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
21
|
+
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C2C2C2" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761
|
22
|
+
c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32
|
23
|
+
c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472
|
24
|
+
c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037
|
25
|
+
C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65
|
26
|
+
c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261
|
27
|
+
c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082
|
28
|
+
c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129
|
29
|
+
c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
|
30
|
+
</svg>
|
31
|
+
</span>
|
32
|
+
<span class="username">{{ site.github_username }}</span>
|
33
|
+
</a>
|
34
|
+
</li>{% endif %}
|
35
|
+
{% if site.twitter_username %}<li>
|
36
|
+
<a href="https://twitter.com/{{ site.twitter_username }}">
|
37
|
+
<span class="icon twitter">
|
38
|
+
<svg version="1.1" class="twitter-icon-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
39
|
+
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
40
|
+
<path fill="#C2C2C2" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
|
41
|
+
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27
|
42
|
+
c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767
|
43
|
+
c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206
|
44
|
+
C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271
|
45
|
+
c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469
|
46
|
+
c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/>
|
47
|
+
</svg>
|
48
|
+
</span>
|
49
|
+
<span class="username">{{ site.twitter_username }}</span>
|
50
|
+
</a>
|
51
|
+
</li>{% endif %}
|
52
|
+
</ul>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div class="footer-col-3 column">
|
56
|
+
<p class="text">{{ site.description }}</p>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
</div>
|
60
|
+
|
61
|
+
</footer>
|