Add CoC and README for theme; make standard with Rubocop
This commit is contained in:
		
							parent
							
								
									e3df910533
								
							
						
					
					
						commit
						473d85b580
					
				| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
require 'erb'
 | 
			
		||||
require "erb"
 | 
			
		||||
 | 
			
		||||
class Jekyll::Commands::NewTheme < Jekyll::Command
 | 
			
		||||
  class << self
 | 
			
		||||
    def init_with_program(prog)
 | 
			
		||||
      prog.command(:"new-theme") do |c|
 | 
			
		||||
        c.syntax 'new-theme NAME'
 | 
			
		||||
        c.description 'Creates a new Jekyll theme scaffold'
 | 
			
		||||
        c.syntax "new-theme NAME"
 | 
			
		||||
        c.description "Creates a new Jekyll theme scaffold"
 | 
			
		||||
 | 
			
		||||
        c.action do |args, _|
 | 
			
		||||
          Jekyll::Commands::NewTheme.process(args)
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ class Jekyll::Commands::NewTheme < Jekyll::Command
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    def process(args)
 | 
			
		||||
      raise InvalidThemeName, 'You must specify a theme name.' if args.empty?
 | 
			
		||||
      raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name." if args.empty?
 | 
			
		||||
 | 
			
		||||
      new_theme_name = args.join("_")
 | 
			
		||||
      theme = Jekyll::ThemeBuilder.new(new_theme_name)
 | 
			
		||||
| 
						 | 
				
			
			@ -23,7 +23,8 @@ class Jekyll::Commands::NewTheme < Jekyll::Command
 | 
			
		|||
      end
 | 
			
		||||
 | 
			
		||||
      theme.create!
 | 
			
		||||
      Jekyll.logger.info "Your new Jekyll theme, #{theme.name}, is ready for you in #{theme.path}!"
 | 
			
		||||
      Jekyll.logger.info "Your new Jekyll theme, #{theme.name}," \
 | 
			
		||||
        " is ready for you in #{theme.path}!"
 | 
			
		||||
      Jekyll.logger.info "For help getting started, read #{theme.path}/README.md."
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,8 @@ module Jekyll
 | 
			
		|||
  module Errors
 | 
			
		||||
    FatalException = Class.new(::RuntimeError)
 | 
			
		||||
 | 
			
		||||
    InvalidThemeName = Class.new(FatalException)
 | 
			
		||||
 | 
			
		||||
    DropMutationException       = Class.new(FatalException)
 | 
			
		||||
    InvalidPermalinkError       = Class.new(FatalException)
 | 
			
		||||
    InvalidYAMLFrontMatterError = Class.new(FatalException)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,12 @@
 | 
			
		|||
class Jekyll::ThemeBuilder
 | 
			
		||||
  SCAFFOLD_DIRECTORIES = %w{
 | 
			
		||||
  SCAFFOLD_DIRECTORIES = %w(
 | 
			
		||||
    _layouts _includes _sass
 | 
			
		||||
  }.freeze
 | 
			
		||||
  ).freeze
 | 
			
		||||
 | 
			
		||||
  attr_reader :name, :path
 | 
			
		||||
 | 
			
		||||
  def initialize(theme_name)
 | 
			
		||||
    @name = theme_name.to_s.gsub(/ /, "_").gsub(/_+/, "_")
 | 
			
		||||
    @name = theme_name.to_s.tr(" ", "_").gsub(/_+/, "_")
 | 
			
		||||
    @path = Pathname.new(File.expand_path(name, Dir.pwd))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -26,10 +26,8 @@ class Jekyll::ThemeBuilder
 | 
			
		|||
  def template_file(filename)
 | 
			
		||||
    [
 | 
			
		||||
      root.join("theme_template", "#{filename}.erb"),
 | 
			
		||||
      root.join("theme_template", "#{filename}")
 | 
			
		||||
    ].find do |pathname|
 | 
			
		||||
      pathname.exist?
 | 
			
		||||
    end
 | 
			
		||||
      root.join("theme_template", filename.to_s)
 | 
			
		||||
    ].find(&:exist?)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def template(filename)
 | 
			
		||||
| 
						 | 
				
			
			@ -43,14 +41,14 @@ class Jekyll::ThemeBuilder
 | 
			
		|||
  def mkdir_p(directories)
 | 
			
		||||
    Array(directories).each do |directory|
 | 
			
		||||
      full_path = path.join(directory)
 | 
			
		||||
      Jekyll.logger.info "create", "#{full_path}"
 | 
			
		||||
      Jekyll.logger.info "create", full_path.to_s
 | 
			
		||||
      FileUtils.mkdir_p(full_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def write_file(filename, contents)
 | 
			
		||||
    full_path = path.join(filename)
 | 
			
		||||
    Jekyll.logger.info "create", "#{full_path}"
 | 
			
		||||
    Jekyll.logger.info "create", full_path.to_s
 | 
			
		||||
    File.write(full_path, contents)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -64,13 +62,13 @@ class Jekyll::ThemeBuilder
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def create_accessories
 | 
			
		||||
    %w{README.md CODE_OF_CONDUCT.md LICENSE.txt}.each do |filename|
 | 
			
		||||
    %w(README.md CODE_OF_CONDUCT.md LICENSE.txt).each do |filename|
 | 
			
		||||
      write_file(filename, template(filename))
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def initialize_git_repo
 | 
			
		||||
    Jekyll.logger.info "initialize", "#{path.join(".git")}"
 | 
			
		||||
    Jekyll.logger.info "initialize", path.join(".git").to_s
 | 
			
		||||
    Dir.chdir(path.to_s) { `git init` }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
# Contributor Covenant Code of Conduct
 | 
			
		||||
 | 
			
		||||
## Our Pledge
 | 
			
		||||
 | 
			
		||||
In the interest of fostering an open and welcoming environment, we as
 | 
			
		||||
contributors and maintainers pledge to making participation in our project and
 | 
			
		||||
our community a harassment-free experience for everyone, regardless of age, body
 | 
			
		||||
size, disability, ethnicity, gender identity and expression, level of experience,
 | 
			
		||||
nationality, personal appearance, race, religion, or sexual identity and
 | 
			
		||||
orientation.
 | 
			
		||||
 | 
			
		||||
## Our Standards
 | 
			
		||||
 | 
			
		||||
Examples of behavior that contributes to creating a positive environment
 | 
			
		||||
include:
 | 
			
		||||
 | 
			
		||||
* Using welcoming and inclusive language
 | 
			
		||||
* Being respectful of differing viewpoints and experiences
 | 
			
		||||
* Gracefully accepting constructive criticism
 | 
			
		||||
* Focusing on what is best for the community
 | 
			
		||||
* Showing empathy towards other community members
 | 
			
		||||
 | 
			
		||||
Examples of unacceptable behavior by participants include:
 | 
			
		||||
 | 
			
		||||
* The use of sexualized language or imagery and unwelcome sexual attention or
 | 
			
		||||
advances
 | 
			
		||||
* Trolling, insulting/derogatory comments, and personal or political attacks
 | 
			
		||||
* Public or private harassment
 | 
			
		||||
* Publishing others' private information, such as a physical or electronic
 | 
			
		||||
  address, without explicit permission
 | 
			
		||||
* Other conduct which could reasonably be considered inappropriate in a
 | 
			
		||||
  professional setting
 | 
			
		||||
 | 
			
		||||
## Our Responsibilities
 | 
			
		||||
 | 
			
		||||
Project maintainers are responsible for clarifying the standards of acceptable
 | 
			
		||||
behavior and are expected to take appropriate and fair corrective action in
 | 
			
		||||
response to any instances of unacceptable behavior.
 | 
			
		||||
 | 
			
		||||
Project maintainers have the right and responsibility to remove, edit, or
 | 
			
		||||
reject comments, commits, code, wiki edits, issues, and other contributions
 | 
			
		||||
that are not aligned to this Code of Conduct, or to ban temporarily or
 | 
			
		||||
permanently any contributor for other behaviors that they deem inappropriate,
 | 
			
		||||
threatening, offensive, or harmful.
 | 
			
		||||
 | 
			
		||||
## Scope
 | 
			
		||||
 | 
			
		||||
This Code of Conduct applies both within project spaces and in public spaces
 | 
			
		||||
when an individual is representing the project or its community. Examples of
 | 
			
		||||
representing a project or community include using an official project e-mail
 | 
			
		||||
address, posting via an official social media account, or acting as an appointed
 | 
			
		||||
representative at an online or offline event. Representation of a project may be
 | 
			
		||||
further defined and clarified by project maintainers.
 | 
			
		||||
 | 
			
		||||
## Enforcement
 | 
			
		||||
 | 
			
		||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
 | 
			
		||||
reported by contacting the project team at <%= user_email %>. All
 | 
			
		||||
complaints will be reviewed and investigated and will result in a response that
 | 
			
		||||
is deemed necessary and appropriate to the circumstances. The project team is
 | 
			
		||||
obligated to maintain confidentiality with regard to the reporter of an incident.
 | 
			
		||||
Further details of specific enforcement policies may be posted separately.
 | 
			
		||||
 | 
			
		||||
Project maintainers who do not follow or enforce the Code of Conduct in good
 | 
			
		||||
faith may face temporary or permanent repercussions as determined by other
 | 
			
		||||
members of the project's leadership.
 | 
			
		||||
 | 
			
		||||
## Attribution
 | 
			
		||||
 | 
			
		||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
 | 
			
		||||
available at [http://contributor-covenant.org/version/1/4][version]
 | 
			
		||||
 | 
			
		||||
[homepage]: http://contributor-covenant.org
 | 
			
		||||
[version]: http://contributor-covenant.org/version/1/4/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
# <%= theme_name %>
 | 
			
		||||
 | 
			
		||||
Welcome to your new Jekyll theme! In this directory, you'll find the files you need to be able to package up your theme into a gem. Put your layouts in `_layouts`, your includes in `_includes` and your sass in `_sass`. To experiment with this code, add some sample content and run `bundle exec jekyll serve` – this directory is setup just like a Jekyll site!
 | 
			
		||||
 | 
			
		||||
TODO: Delete this and the text above, and describe your gem
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
Add this line to your Jekyll site's Gemfile:
 | 
			
		||||
 | 
			
		||||
```ruby
 | 
			
		||||
gem <%= theme_name.inspect %>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
And add this line to your Jekyll site:
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
theme: <%= theme_name %>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
And then execute:
 | 
			
		||||
 | 
			
		||||
    $ bundle
 | 
			
		||||
 | 
			
		||||
Or install it yourself as:
 | 
			
		||||
 | 
			
		||||
    $ gem install <%= theme_name %>
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
TODO: Write usage instructions here. Describe your available layouts, includes, and/or sass.
 | 
			
		||||
 | 
			
		||||
## Contributing
 | 
			
		||||
 | 
			
		||||
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/hello. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue