jekyll-pre-commit 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba0866d2499fbb528292ed308379b106d0fdab53
4
- data.tar.gz: ceb1d3b4cb328cecbfe37fb562dd228ab082af83
3
+ metadata.gz: 048585b617af221517a1f0e0291d0d8da5b100c2
4
+ data.tar.gz: 8b8fd1f8fa90be529c30f97ca2742005c79e8429
5
5
  SHA512:
6
- metadata.gz: 24773f04d3fdbdc8528969df8057e6a695e822366d40fa04ed995472f071af191f37ccceff70a6fdee92dde7ddd4c835bcd9b75febcfcfefb4ee10eda5694582
7
- data.tar.gz: 080f9210aee062769c4f7f1500452a5b77b4dafd73b416eb9490ae989f518b492285bb45fbc4ba17b45dc18a57102381aacfb1093aac81a0757fb104db50865f
6
+ metadata.gz: d12aaa2cd8e9dfc8530edc47fc12951bcf842933005ccd400694ac6587ca14dcfd70c7193e4f1ae6084c2cb4e8af7ed01a07d61dfcbf7b8793480ec8d3b3cfd8
7
+ data.tar.gz: 87d9ac132740f26266df781c8a0941a9354eaf745c2b57b230ec0016aac7fcf28819a27b241877e079a4978dd42283223621c4412174ecc8392a727f67322b03
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ Exclude:
3
+ - spec/**/*
4
+ - jekyll-pre-commit.gemspec
5
+ - Gemfile
6
+ - Rakefile
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2
4
+ cache: bundler
5
+ sudo: false
6
+ before_script: bundle update
7
+ script: ./script/cibuild
8
+ notifications:
9
+ email: false
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in jekyll-pre-commit.gemspec
4
4
  gemspec
5
+
6
+ if ENV["JEKYLL_VERSION"]
7
+ gem "jekyll", "~> #{ENV["JEKYLL_VERSION"]}"
8
+ end
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # jekyll-pre-commit
2
2
 
3
+ [![Build Status](https://travis-ci.org/mpchadwick/jekyll-pre-commit.svg?branch=master)](https://travis-ci.org/mpchadwick/jekyll-pre-commit) [![Gem Version](https://badge.fury.io/rb/jekyll-pre-commit.svg)](https://badge.fury.io/rb/jekyll-pre-commit)
4
+
3
5
  A Jekyll plugin to make sure your post is _really_ ready for publishing.
4
6
 
5
7
  ![Terminal showing failed check](http://i.imgur.com/9PzDMiB.jpg)
@@ -10,7 +12,7 @@ Add this line to your `Gemfile`:
10
12
 
11
13
  ```ruby
12
14
  group :jekyll_plugins do
13
- gem 'jekyll-migrate-permalink'
15
+ gem 'jekyll-pre-commit'
14
16
  end
15
17
  ```
16
18
 
@@ -34,6 +36,7 @@ pre-commit:
34
36
  variables: ['description']
35
37
  - check: FrontMatterVariableMeetsLengthRequirements
36
38
  variables: ['description', 'title']
39
+ - check: NoDuplicateTags
37
40
  ```
38
41
 
39
42
  ## Available Checks
@@ -74,6 +77,10 @@ For example...
74
77
 
75
78
  In the above, there would be a maximum length of 50 characters for the title (rather than the default of 59)
76
79
 
80
+ #### NoDuplicateTags
81
+
82
+ Checks that you have not accidentally introduced a duplicate tag. For example, if you have posts that are already using "MySQL" as a tag and you attempt to commit a post with the tag "mysql" (notice the difference in case-sensitivity) you will not be allowed to commit.
83
+
77
84
  ## Roll Your Own
78
85
 
79
86
  You can also add your own checks. To do so, create a class in the `Jekyll::PreCommit::Checks` module and and define a `check` method. Your class should extend the `Jekyll::PreCommit::Checks::Check` class and return the `@result` instance variable.
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
21
+ spec.add_development_dependency "jekyll", ">= 3.3.0"
22
+ spec.add_development_dependency "bundler", "~> 1.6"
22
23
  spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec", "~> 3.0"
23
25
  end
@@ -1,9 +1,11 @@
1
1
  module Jekyll
2
2
  module PreCommit
3
3
  module Checks
4
+ # The baseline check class
5
+ # All checks should extend this class
4
6
  class Check
5
7
  def initialize
6
- @result = { :ok => true, :message => "" }
8
+ @result = { ok: true, message: '' }
7
9
  end
8
10
  end
9
11
  end
@@ -0,0 +1,41 @@
1
+ module Jekyll
2
+ module PreCommit
3
+ module Checks
4
+ class NoDuplicateTags < Check
5
+ def check(staged, not_staged, site, args)
6
+ raw = Hash.new
7
+ normalized = Hash.new
8
+ not_staged.each do |post|
9
+ if post.data["tags"].size > 0
10
+ post.data["tags"].each do |tag|
11
+ if !raw[tag]
12
+ raw[tag] = post.relative_path
13
+ end
14
+
15
+ n = Jekyll::Utils.slugify(tag)
16
+ if !normalized[n]
17
+ normalized[n] = post.relative_path
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ staged.each do |post|
24
+ if post.data["tags"].size > 0
25
+ post.data["tags"].each do |tag|
26
+ n = Jekyll::Utils.slugify(tag)
27
+
28
+ if normalized[n] && !raw[tag]
29
+ @result[:ok] = false
30
+ @result[:message] += "#{tag} appears to be duplicated in #{normalized[n]}!"
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ @result
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,18 @@
1
+ module Jekyll
2
+ module PreCommit
3
+ module Checks
4
+ # This is a work-in-progress.
5
+ class SpellCheck < Check
6
+ def check(staged, not_staged, site, args)
7
+ staged.each do |post|
8
+ rendered = Jekyll::Renderer.new(site, post).run
9
+ rendered.gsub!('"', '\"')
10
+ mispells = `echo "#{rendered}" | sed "s/’/'/g" | aspell list -H --add-html-skip=pre --add-html-skip=code`
11
+ puts mispells
12
+ end
13
+ exit 1
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module PreCommit
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -10,3 +10,4 @@ require 'jekyll-pre-commit/checks/check.rb'
10
10
  require 'jekyll-pre-commit/checks/front_matter_variable_exists.rb'
11
11
  require 'jekyll-pre-commit/checks/front_matter_variable_is_not_duplicate.rb'
12
12
  require 'jekyll-pre-commit/checks/front_matter_variable_meets_length_requirements.rb'
13
+ require 'jekyll-pre-commit/checks/no_duplicate_tags.rb'
data/script/cibuild ADDED
@@ -0,0 +1,6 @@
1
+ #! /bin/bash
2
+
3
+ set -e
4
+
5
+ bundle exec rspec
6
+ bundle exec rake build
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-pre-commit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Chadwick
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-11 00:00:00.000000000 Z
11
+ date: 2017-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.3.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.3.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ~>
18
32
  - !ruby/object:Gem::Version
19
- version: '1.10'
33
+ version: '1.6'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ~>
25
39
  - !ruby/object:Gem::Version
26
- version: '1.10'
40
+ version: '1.6'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - ~>
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
41
69
  description:
42
70
  email:
43
71
  - mpchadwick@gmail.com
@@ -48,6 +76,8 @@ files:
48
76
  - .editorconfig
49
77
  - .gitignore
50
78
  - .rspec
79
+ - .rubocop.yml
80
+ - .travis.yml
51
81
  - Gemfile
52
82
  - LICENSE.txt
53
83
  - README.md
@@ -58,10 +88,13 @@ files:
58
88
  - lib/jekyll-pre-commit/checks/front_matter_variable_exists.rb
59
89
  - lib/jekyll-pre-commit/checks/front_matter_variable_is_not_duplicate.rb
60
90
  - lib/jekyll-pre-commit/checks/front_matter_variable_meets_length_requirements.rb
91
+ - lib/jekyll-pre-commit/checks/no_duplicate_tags.rb
92
+ - lib/jekyll-pre-commit/checks/spell_check.rb
61
93
  - lib/jekyll-pre-commit/commands.rb
62
94
  - lib/jekyll-pre-commit/pre-commit
63
95
  - lib/jekyll-pre-commit/runner.rb
64
96
  - lib/jekyll-pre-commit/version.rb
97
+ - script/cibuild
65
98
  homepage: https://github.com/mpchadwick/jekyll-pre-commit
66
99
  licenses:
67
100
  - MIT