Sha256: 9d05e961796b258df1d3be11988601178b42dd48c1533ced38a183c4af00a95e

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby
require 'dirtree'
require 'optparse'
require 'json'
require 'erb'

templates_dir = File.join(File.dirname(__FILE__), '..', 'templates')
templates = Dir.open(templates_dir).map do |file|
  file[0...file.index('.')]
end.reject(&:empty?)

options = {
  template: 'tree'
}

OptionParser.new do |opts|
  opts.banner = 'Usage: dirtree [options]... [file]...'

  opts.on(
    '-v',
    '--version',
    'Print version'
  ) do
    puts "Dirtree version #{Dirtree::VERSION}"
    exit
  end

  opts.on(
    '-h',
    '--help',
    'Show this help text'
  ) do
    puts opts
    exit
  end

  opts.on(
    '-oFile.html',
    '--output=File.html',
    'Specify a path to write output, by default will be printed to STDOUT'
  ) do |value|
    options[:output] = value
  end

  opts.on(
    '-tTemplateName',
    '--template=TemplateName',
    'Specify the template name, available templates ' + templates.to_s
  ) do |value|
    options[:template] = value
  end
end.parse!

files = ARGV.empty? ? STDIN.read.lines : ARGV
files.map!(&:strip)

root = Dirtree::Node.new('/')
files.each { |file| root.insert(file.split('/')) }
template_file = File.join(templates_dir, options[:template] + '.html.erb')
template = File.read(File.expand_path(template_file))

tree = root.as_json
result = ERB.new(template).result binding

if options.key?(:output)
  File.write(options[:output], result)
else
  puts result
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dirtree-0.2.0 exe/dirtree