drudje 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/drudje +24 -4
  3. data/lib/drudje.rb +22 -10
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8f45deea2cb77dcb89ef19833844964c40cd78c
4
- data.tar.gz: eb1e91c01cb82d747a054fe34d031c7a2ec893cd
3
+ metadata.gz: 4d18f1710e19364a61e8fbf2d1b5a63bf7b85617
4
+ data.tar.gz: e6ed2dcb60ee5894f00fe3af0c479ea30c07b652
5
5
  SHA512:
6
- metadata.gz: 98bf4b2a2d1a31d69faff0fd36aefab9710a687b47fc6edabe1b11c5cc600a4d1bf04d874e3f7a43e09410224557c922de4d29398bf18cfdd275c403c02329da
7
- data.tar.gz: a8446a8b60784c8191e666255ba223e9b76427172e4b07fdaebaa57bb280090a74a619b82541602adba18676551a8be05eaed234cd2cede7160a82c8cece7b00
6
+ metadata.gz: cfb544a364727d2fed4c1b62b573c83aad27f24c58ea5e10c0b680bff80d47454014f734e3f65d18a9e878e44443ab4798671bd8330634e819812e9eef7ff50f
7
+ data.tar.gz: c918cd58c6c3613041c9be1fb06dc2365d73ffc6520967dc9ecf86786cb089c5c31493012c8a04f36a85e93ab3af5f1bbc8e538bcaf8cebabdba1c9740fc121f
data/bin/drudje CHANGED
@@ -1,11 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
-
2
+ require 'optparse'
3
3
  require_relative '../lib/drudje.rb'
4
+
5
+ options = {}
6
+ OptionParser.new do |opts|
7
+ opts.banner = 'Usage: drudje [options] source-dir dest-dir'
8
+
9
+ opts.on('-l lib-dir', '--lib', 'Use template library') do |l|
10
+ options[:lib] = l
11
+ end
12
+ options[:recursive] = false
13
+ opts.on('-r', '--recursive', 'Recursive') do |r|
14
+ options[:recursive] = r
15
+ end
16
+ options[:extension] = 'html'
17
+ opts.on('-e' '--extension', 'File extension to handle') do |e|
18
+ options[:extension] = e
19
+ end
20
+ end.parse!
21
+
22
+ puts options
4
23
  src = ARGV[0]
5
24
  dest = ARGV[1]
6
- ext = ARGV[2] || '.html'
7
25
 
8
- puts 'Processing ' + src + '/*' + ext + ' to ' + dest
9
- d = Drudje.new src, dest, ext
26
+ extension = options[:extension]
27
+ pattern = File.join(src, (options[:recursive] ? '**/*.' : '*.') + extension)
28
+ d = Drudje.new src, dest, extension, options[:lib], pattern
29
+ puts 'Processing ' + pattern + ' to ' + dest
10
30
  d.run
11
31
  puts 'Done'
data/lib/drudje.rb CHANGED
@@ -3,12 +3,15 @@ require_relative 'drudje_io.rb'
3
3
  class Drudje
4
4
  # TODO: Separate file access to separate object
5
5
  # so that we can test everything
6
- attr_accessor :src, :dest, :extension, :io
7
- def initialize(src, dest, ext)
6
+ attr_accessor :src, :dest, :extension, :io, :lib, :pattern
7
+ def initialize(src, dest, ext, lib, pattern)
8
+ lib = src if lib == nil
8
9
  @extension = ext
9
- @src = src
10
- @dest = dest
10
+ @src = src.end_with?('/') ? src.chomp('/') : src
11
+ @dest = dest.end_with?('/') ? dest.chomp('/') : dest
11
12
  @io = DrudjeIo.new
13
+ @lib = lib
14
+ @pattern = pattern || File.join(src, '*.' + extension)
12
15
  end
13
16
 
14
17
  def render(template, args)
@@ -62,12 +65,20 @@ class Drudje
62
65
 
63
66
  def template_file(call_str)
64
67
  parts = call_str.strip.partition(/[\s\n\r]+/)
65
- File.join self.src, parts[0] + self.extension
68
+ File.join self.lib, parts[0] + '.' + self.extension
66
69
  end
67
70
 
68
71
  def output_file(file)
72
+ path = File.dirname file
73
+ if path =~ Regexp.new("\/" + self.src + "\/")
74
+ destpath = path.gsub Regexp.new("\/" + self.src + "\/"), "/" + self.dest + "/"
75
+ elsif path =~ Regexp.new("^" + self.src + "\/")
76
+ destpath = path.gsub Regexp.new("^" + self.src + "\/"), self.dest + "/"
77
+ else
78
+ destpath = self.dest
79
+ end
69
80
  base = File.basename file
70
- File.join self.dest, base
81
+ File.join destpath, base
71
82
  end
72
83
 
73
84
  def expand(call_str)
@@ -90,13 +101,14 @@ class Drudje
90
101
  end
91
102
 
92
103
  def run
93
- pattern = File.join self.src, '*' + self.extension
94
- files = Dir.glob(pattern)
104
+ files = Dir.glob(self.pattern)
105
+ puts "No files found matching " + self.pattern.to_s if files.length == 0
95
106
  files.each do |file|
96
- puts "Processing file " + file
107
+ outfile = output_file(file)
108
+ puts 'Processing file ' + file + ' to ' + outfile
97
109
  contents = self.io.read file
98
110
  processed = process contents
99
- self.io.write output_file(file), processed
111
+ self.io.write outfile, processed
100
112
  end
101
113
  end
102
114
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drudje
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian DeJong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-12-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple text file templating tool
14
14
  email: brian.dejong@gmail.com