Merge pull request #5042 from jekyll/fix-more-theme-things
Fix more theme things
This commit is contained in:
commit
f417cf8a0f
|
@ -8,6 +8,12 @@ Feature: Writing themes
|
||||||
Then I should get a zero exit status
|
Then I should get a zero exit status
|
||||||
And the my-cool-theme directory should exist
|
And the my-cool-theme directory should exist
|
||||||
|
|
||||||
|
Scenario: Generating a new theme scaffold with a code of conduct
|
||||||
|
When I run jekyll new-theme my-cool-theme --code-of-conduct
|
||||||
|
Then I should get a zero exit status
|
||||||
|
And the my-cool-theme directory should exist
|
||||||
|
And the "my-cool-theme/CODE_OF_CONDUCT.md" file should exist
|
||||||
|
|
||||||
Scenario: A theme with SCSS
|
Scenario: A theme with SCSS
|
||||||
Given I have a configuration file with "theme" set to "test-theme"
|
Given I have a configuration file with "theme" set to "test-theme"
|
||||||
And I have a css directory
|
And I have a css directory
|
||||||
|
|
|
@ -6,20 +6,23 @@ class Jekyll::Commands::NewTheme < Jekyll::Command
|
||||||
prog.command(:"new-theme") do |c|
|
prog.command(:"new-theme") do |c|
|
||||||
c.syntax "new-theme NAME"
|
c.syntax "new-theme NAME"
|
||||||
c.description "Creates a new Jekyll theme scaffold"
|
c.description "Creates a new Jekyll theme scaffold"
|
||||||
|
c.option "code_of_conduct", \
|
||||||
|
"-c", "--code-of-conduct", \
|
||||||
|
"Include a Code of Conduct. (defaults to false)"
|
||||||
|
|
||||||
c.action do |args, _|
|
c.action do |args, opts|
|
||||||
Jekyll::Commands::NewTheme.process(args)
|
Jekyll::Commands::NewTheme.process(args, opts)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def process(args)
|
def process(args, opts)
|
||||||
if !args || args.empty?
|
if !args || args.empty?
|
||||||
raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name."
|
raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name."
|
||||||
end
|
end
|
||||||
|
|
||||||
new_theme_name = args.join("_")
|
new_theme_name = args.join("_")
|
||||||
theme = Jekyll::ThemeBuilder.new(new_theme_name)
|
theme = Jekyll::ThemeBuilder.new(new_theme_name, opts)
|
||||||
if theme.path.exist?
|
if theme.path.exist?
|
||||||
Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists."
|
Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists."
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,11 +3,12 @@ class Jekyll::ThemeBuilder
|
||||||
_layouts _includes _sass
|
_layouts _includes _sass
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
attr_reader :name, :path
|
attr_reader :name, :path, :code_of_conduct
|
||||||
|
|
||||||
def initialize(theme_name)
|
def initialize(theme_name, opts)
|
||||||
@name = theme_name.to_s.tr(" ", "_").gsub(%r!_+!, "_")
|
@name = theme_name.to_s.tr(" ", "_").gsub(%r!_+!, "_")
|
||||||
@path = Pathname.new(File.expand_path(name, Dir.pwd))
|
@path = Pathname.new(File.expand_path(name, Dir.pwd))
|
||||||
|
@code_of_conduct = !!opts["code_of_conduct"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def create!
|
def create!
|
||||||
|
@ -71,7 +72,9 @@ class Jekyll::ThemeBuilder
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_accessories
|
def create_accessories
|
||||||
%w(README.md Rakefile CODE_OF_CONDUCT.md LICENSE.txt).each do |filename|
|
accessories = %w(README.md Rakefile LICENSE.txt)
|
||||||
|
accessories << "CODE_OF_CONDUCT.md" if code_of_conduct
|
||||||
|
accessories.each do |filename|
|
||||||
write_file(filename, template(filename))
|
write_file(filename, template(filename))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,11 +10,7 @@ Gem::Specification.new do |spec|
|
||||||
spec.homepage = "TODO: Put your gem's website or public repo URL here."
|
spec.homepage = "TODO: Put your gem's website or public repo URL here."
|
||||||
spec.license = "MIT"
|
spec.license = "MIT"
|
||||||
|
|
||||||
spec.metadata["plugin_type"] = "theme"
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(<%= theme_directories.join("|") %>)/}) }
|
||||||
|
|
||||||
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(exe|<%= theme_directories.join("|") %>)/}) }
|
|
||||||
spec.bindir = "exe"
|
|
||||||
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
||||||
|
|
||||||
spec.add_development_dependency "jekyll", "~> <%= jekyll_version_with_minor %>"
|
spec.add_development_dependency "jekyll", "~> <%= jekyll_version_with_minor %>"
|
||||||
spec.add_development_dependency "bundler", "~> 1.12"
|
spec.add_development_dependency "bundler", "~> 1.12"
|
||||||
|
|
Loading…
Reference in New Issue