class Statikaj::CLI
Public Class Methods
source_root()
click to toggle source
# File lib/statikaj/cli.rb, line 10 def self.source_root File.expand_path('../../..', __FILE__) end
Public Instance Methods
article()
click to toggle source
# File lib/statikaj/cli.rb, line 85 def article title = ask('Title: ') slug = title.empty?? nil : title.strip.slugize article = {'title' => title, 'date' => Time.now.strftime("%d/%m/%Y"), 'author' => 'User', 'category' => 'category'}.to_yaml article << "\n" article << "Once upon a time...\n\n" path = "src/articles/#{Time.now.strftime("%Y-%m-%d")}#{'-' + slug if slug}.md" unless File.exist? path begin File.open(path, "w") do |file| file.write article end say "An article was created for you at #{path}.", :green rescue say "Impossible to create #{path}, make sure you are in project root", :red end else say "I can't create the article, #{path} already exists.", :red end end
build()
click to toggle source
# File lib/statikaj/cli.rb, line 35 def build source = Pathname.new "./src" destination = Pathname.new "./public" config = {} config[:url] = options[:url].split("/").join("/") articles_files = Dir[source.join('articles/*.md')].sort_by {|entry| File.basename(entry) }.reverse articles = articles_files.map{|f| Article.new(f, config) } categories = {} articles.each do |article| categories[article.category] ||= [] categories[article.category] << article article_file = destination.join("#{article.slug}").to_s render = Render.new(source, article: article) content = render.article do |page| page.title = article.title page.description = article.summary end create_file article_file, content, force: options[:force] end render = Render.new(source, page: 'index', articles: articles.reverse) content = render.page {} create_file destination.join("index.html"), content, force: true render = Render.new(source, page: 'index', articles: articles.reverse, type: :atom) atom_content = render.page do |page| page.url = config[:url] end create_file destination.join("feed.atom"), atom_content, force: true unless options[:"no-category"] empty_directory destination.join("category") categories.each do |key, _articles| key = "No Category" if key.nil? slug = key.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '') render = Render.new(source, page: 'category', url: slug, articles: _articles.reverse) content = render.page{|page| page.category = key } create_file destination.join("category/#{slug}"), content, force: true end end end
new(name)
click to toggle source
# File lib/statikaj/cli.rb, line 15 def new(name) directory('templates', name, verbose: true) end