yamljam 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Gemfile +4 -0
- data/README.md +4 -0
- data/Rakefile +1 -0
- data/bin/yamljam +10 -0
- data/lib/yamljam/concatenator.rb +39 -0
- data/lib/yamljam/version.rb +3 -0
- data/lib/yamljam.rb +7 -0
- data/yamljam.gemspec +25 -0
- metadata +56 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
test_files/
|
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/yamljam
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yamljam'
|
4
|
+
|
5
|
+
if !ARGV[0] || ARGV[0] == "--help"
|
6
|
+
puts "usage: yamljam <directory>"
|
7
|
+
puts "Creates a <directory>.yml file containing the keys from all yml files found in <directory>. Does not work recursively yet!"
|
8
|
+
else
|
9
|
+
Yamljam::Concatenator.new.jam(Dir.getwd, ARGV[0])
|
10
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Yamljam
|
2
|
+
class Concatenator
|
3
|
+
def concatenate(input_files, output_file)
|
4
|
+
output_hashmap = merge_files(input_files)
|
5
|
+
write_output(output_hashmap, output_file)
|
6
|
+
end
|
7
|
+
|
8
|
+
def write_output(output_hashmap, output_file)
|
9
|
+
File.open(output_file, 'w') do |f|
|
10
|
+
f.puts("# Generated by Yamljam. Do not directly edit this file.")
|
11
|
+
f.write(output_hashmap.to_yaml)
|
12
|
+
end
|
13
|
+
rescue Exception => ex # if it's any solace I cringed when I wrote that
|
14
|
+
puts "hit exception when writing output file! #{ex.class} #{ex.message} #{ex.backtrace}"
|
15
|
+
raise ex
|
16
|
+
end
|
17
|
+
|
18
|
+
def merge_files(input_files)
|
19
|
+
{@namespace => input_files.map{|input_file| make_hashmap(input_file)}.reduce({}, &:merge)}
|
20
|
+
end
|
21
|
+
|
22
|
+
def make_hashmap(input_file)
|
23
|
+
base_hashmap = YAML::load_file(input_file)
|
24
|
+
end
|
25
|
+
|
26
|
+
def jam(input_directory_path = nil, namespace)
|
27
|
+
# input directory will contain #{namespace}.yml (output file, which will be blown away)
|
28
|
+
# and a directory called #{namespace}. All files in the #{namespace} directory will be
|
29
|
+
# assumed to be yaml input files if they end in .yml or .yaml, and ignored otherwise.
|
30
|
+
@namespace = namespace
|
31
|
+
input_directory_path ||= Dir.getwd
|
32
|
+
input_file_dir = File.join(input_directory_path, namespace)
|
33
|
+
Dir.chdir(input_file_dir) do
|
34
|
+
input_files = Dir.glob("*.yaml") + Dir.glob("*.yml")
|
35
|
+
concatenate(input_files, File.join("..", "#{namespace}.yml"))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/yamljam.rb
ADDED
data/yamljam.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "yamljam/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "yamljam"
|
7
|
+
s.version = Yamljam::VERSION
|
8
|
+
s.authors = ["Bill Abney"]
|
9
|
+
s.email = ["bill.abney@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = "Jam your yaml files"
|
12
|
+
s.description = "concatenates multiple yaml files from a subdirectory into one yaml file. Useful for splitting up and re-joining en.yml"
|
13
|
+
|
14
|
+
s.rubyforge_project = "yamljam"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
#s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.executables = 'yamljam'
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
# specify any dependencies here; for example:
|
23
|
+
# s.add_development_dependency "rspec"
|
24
|
+
# s.add_runtime_dependency "rest-client"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yamljam
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bill Abney
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-11 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: concatenates multiple yaml files from a subdirectory into one yaml file.
|
15
|
+
Useful for splitting up and re-joining en.yml
|
16
|
+
email:
|
17
|
+
- bill.abney@gmail.com
|
18
|
+
executables:
|
19
|
+
- yamljam
|
20
|
+
extensions: []
|
21
|
+
extra_rdoc_files: []
|
22
|
+
files:
|
23
|
+
- .gitignore
|
24
|
+
- Gemfile
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- lib/yamljam.rb
|
28
|
+
- lib/yamljam/concatenator.rb
|
29
|
+
- lib/yamljam/version.rb
|
30
|
+
- yamljam.gemspec
|
31
|
+
- bin/yamljam
|
32
|
+
homepage: ''
|
33
|
+
licenses: []
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
requirements: []
|
51
|
+
rubyforge_project: yamljam
|
52
|
+
rubygems_version: 1.8.15
|
53
|
+
signing_key:
|
54
|
+
specification_version: 3
|
55
|
+
summary: Jam your yaml files
|
56
|
+
test_files: []
|