| @@ -0,0 +1,9 @@ | |||||
| /.bundle/ | |||||
| /.yardoc | |||||
| /Gemfile.lock | |||||
| /_yardoc/ | |||||
| /coverage/ | |||||
| /doc/ | |||||
| /pkg/ | |||||
| /spec/reports/ | |||||
| /tmp/ | |||||
| @@ -0,0 +1,4 @@ | |||||
| source "https://rubygems.org" | |||||
| # Specify your gem's dependencies in petrify.gemspec | |||||
| gemspec | |||||
| @@ -0,0 +1,35 @@ | |||||
| # Petrify | |||||
| Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/petrify`. To experiment with that code, run `bin/console` for an interactive prompt. | |||||
| TODO: Delete this and the text above, and describe your gem | |||||
| ## Installation | |||||
| Add this line to your application's Gemfile: | |||||
| ```ruby | |||||
| gem 'petrify' | |||||
| ``` | |||||
| And then execute: | |||||
| $ bundle | |||||
| Or install it yourself as: | |||||
| $ gem install petrify | |||||
| ## Usage | |||||
| TODO: Write usage instructions here | |||||
| ## Development | |||||
| After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. | |||||
| To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). | |||||
| ## Contributing | |||||
| Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/petrify. | |||||
| @@ -0,0 +1,2 @@ | |||||
| require "bundler/gem_tasks" | |||||
| task :default => :spec | |||||
| @@ -0,0 +1,14 @@ | |||||
| #!/usr/bin/env ruby | |||||
| require "bundler/setup" | |||||
| require "petrify" | |||||
| # You can add fixtures and/or initialization code here to make experimenting | |||||
| # with your gem easier. You can also use a different console, if you like. | |||||
| # (If you use this, don't forget to add pry to your Gemfile!) | |||||
| # require "pry" | |||||
| # Pry.start | |||||
| require "irb" | |||||
| IRB.start(__FILE__) | |||||
| @@ -0,0 +1,8 @@ | |||||
| #!/usr/bin/env bash | |||||
| set -euo pipefail | |||||
| IFS=$'\n\t' | |||||
| set -vx | |||||
| bundle install | |||||
| # Do any other automated setup that you need to do here | |||||
| @@ -0,0 +1,60 @@ | |||||
| require 'haml' | |||||
| require 'csv' | |||||
| require 'logger' | |||||
| require "petrify/version" | |||||
| module Petrify | |||||
| @@output_dir = '_site' | |||||
| @@working_dir = File.join(Dir.pwd, @@output_dir) | |||||
| @@views_dir = 'views' | |||||
| @@layout_fn = File.join(@@views_dir, 'layout.haml') | |||||
| # https://stackoverflow.com/questions/917566/ruby-share-logger-instance-among-module-classes#6768164 | |||||
| @@log = Logger.new($stdout) | |||||
| @@log.level = Logger::INFO | |||||
| def self.page(path_items, template, locals = {}) | |||||
| dir = create_path(path_items) | |||||
| fn = File.join(dir, 'index.html') | |||||
| # https://stackoverflow.com/questions/6125265/using-layouts-in-haml-files-independently-of-rails | |||||
| html = Haml::Engine.new(File.read(@@layout_fn)).render do | |||||
| Haml::Engine.new(File.read(File.join(@@views_dir, "#{template}.haml"))).render(Object.new, locals) | |||||
| end | |||||
| File.write(fn, html) | |||||
| @@log.info fn | |||||
| # TODO - add page to sitemap.xml or sitemap.txt | |||||
| # https://support.google.com/webmasters/answer/183668?hl=en&ref_topic=4581190 | |||||
| end | |||||
| def self.csv(path_items, filename, data) | |||||
| dir = create_path(path_items) | |||||
| fn = File.join(dir, filename + '.csv') | |||||
| csv_string = CSV.generate do |csv| | |||||
| csv << data.first.keys # header row | |||||
| data.each { |row| csv << row.values } | |||||
| end | |||||
| File.write(fn, csv_string) | |||||
| @@log.info fn | |||||
| end | |||||
| def self.setup | |||||
| # Recursively delete working directory to ensure no redundant files are left behind from previous builds. | |||||
| # FileUtils.rm_rf(@working_dir) | |||||
| Dir.mkdir(@@working_dir) unless File.directory?(@@working_dir) | |||||
| # Dir.chdir(@working_dir) | |||||
| # Copy `public` dir to output dir | |||||
| FileUtils.copy_entry('public', @@working_dir) | |||||
| end | |||||
| def self.create_path(path_items) | |||||
| dir = File.join(@@output_dir, path_items) | |||||
| FileUtils.mkdir_p(dir) | |||||
| @@log.debug dir | |||||
| dir | |||||
| end | |||||
| end | |||||
| @@ -0,0 +1,3 @@ | |||||
| module Petrify | |||||
| VERSION = "0.1.0" | |||||
| end | |||||
| @@ -0,0 +1,35 @@ | |||||
| # coding: utf-8 | |||||
| lib = File.expand_path("../lib", __FILE__) | |||||
| $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | |||||
| require "petrify/version" | |||||
| Gem::Specification.new do |spec| | |||||
| spec.name = "petrify" | |||||
| spec.version = Petrify::VERSION | |||||
| spec.authors = ["Adrian Short"] | |||||
| spec.email = [] | |||||
| spec.summary = %q{A data(base)-driven static site generator with Haml templates.} | |||||
| #spec.description = %q{TODO: Write a longer description or delete this line.} | |||||
| spec.homepage = "https://github.com/adrianshort/petrify/" | |||||
| # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host' | |||||
| # to allow pushing to a single host or delete this section to allow pushing to any host. | |||||
| if spec.respond_to?(:metadata) | |||||
| spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'" | |||||
| else | |||||
| raise "RubyGems 2.0 or newer is required to protect against " \ | |||||
| "public gem pushes." | |||||
| end | |||||
| spec.files = `git ls-files -z`.split("\x0").reject do |f| | |||||
| f.match(%r{^(test|spec|features)/}) | |||||
| end | |||||
| spec.bindir = "exe" | |||||
| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } | |||||
| spec.require_paths = ["lib"] | |||||
| spec.add_development_dependency "bundler", "~> 1.15" | |||||
| spec.add_development_dependency "rake", "~> 10.0" | |||||
| spec.add_runtime_dependency "haml" | |||||
| end | |||||