diff --git a/lib/jekyll/commands/new_theme.rb b/lib/jekyll/commands/new_theme.rb index 08eb4291..a703ca85 100644 --- a/lib/jekyll/commands/new_theme.rb +++ b/lib/jekyll/commands/new_theme.rb @@ -6,20 +6,23 @@ class Jekyll::Commands::NewTheme < Jekyll::Command prog.command(:"new-theme") do |c| c.syntax "new-theme NAME" 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, _| - Jekyll::Commands::NewTheme.process(args) + c.action do |args, opts| + Jekyll::Commands::NewTheme.process(args, opts) end end end - def process(args) + def process(args, opts) if !args || args.empty? raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name." end new_theme_name = args.join("_") - theme = Jekyll::ThemeBuilder.new(new_theme_name) + theme = Jekyll::ThemeBuilder.new(new_theme_name, opts) if theme.path.exist? Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists." end diff --git a/lib/jekyll/theme_builder.rb b/lib/jekyll/theme_builder.rb index b0e82e3a..0145ff3c 100644 --- a/lib/jekyll/theme_builder.rb +++ b/lib/jekyll/theme_builder.rb @@ -3,11 +3,12 @@ class Jekyll::ThemeBuilder _layouts _includes _sass ).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!_+!, "_") @path = Pathname.new(File.expand_path(name, Dir.pwd)) + @code_of_conduct = !!opts["code_of_conduct"] end def create! @@ -71,7 +72,9 @@ class Jekyll::ThemeBuilder end 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)) end end