filegen 0.1.1 → 0.1.2
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/README.md +34 -0
- data/Rakefile +6 -1
- data/lib/filegen/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/dg-vrnetze/filegen)
|
4
4
|
[](https://codeclimate.com/github/dg-vrnetze/filegen)
|
5
|
+
[](https://coveralls.io/r/dg-vrnetze/filegen?branch=master)
|
5
6
|
|
6
7
|
Have you ever felt the need to generate files based on environment variables or
|
7
8
|
yaml files? If your answer is yes, then `filegen` can be quite helpful for
|
@@ -118,6 +119,39 @@ And get the following result.
|
|
118
119
|
Hello my name is: Karl
|
119
120
|
```
|
120
121
|
|
122
|
+
## Use Cases
|
123
|
+
|
124
|
+
### RPM packaging
|
125
|
+
|
126
|
+
Say you would like to package a ruby-based application for a rpm-based
|
127
|
+
distribution. You can build a rpm package for each gem it depends on or build
|
128
|
+
one rpm for the whole application containing all needed gems. After using the
|
129
|
+
first approach at first I switched to the second one at last: No need to care
|
130
|
+
about different version of one rubygem as dependency of different applications.
|
131
|
+
|
132
|
+
To make this possible I decided to use a small wrapper which sets all
|
133
|
+
neccessary paths: `GEM_PATH`, `GEM_ROOT` and `GEM_HOME`. After that it executes
|
134
|
+
the ruby application. Because every application resists below a different path,
|
135
|
+
I needed to generate a different wrapper for each application. For this I use
|
136
|
+
this small template:
|
137
|
+
|
138
|
+
```erb
|
139
|
+
#!/usr/bin/env bash
|
140
|
+
|
141
|
+
export GEM_ROOT='<%= lookup('SOFTWARE_LIB') %>'
|
142
|
+
export GEM_PATH='<%= lookup('SOFTWARE_LIB') %>'
|
143
|
+
export GEM_HOME='<%= lookup('SOFTWARE_LIB') %>'
|
144
|
+
|
145
|
+
exec <%= lookup('SOFTWARE_BINARY') %> $*
|
146
|
+
```
|
147
|
+
|
148
|
+
The wrapper is then generated within the rpm spec:
|
149
|
+
|
150
|
+
```
|
151
|
+
SOFTWARE_BINARY=<path to rubygems bin> SOFTWARE_LIB=<library_path> filegen gem.erb > <wrapper>
|
152
|
+
chmod +x <wrapper>
|
153
|
+
```
|
154
|
+
|
121
155
|
## Future
|
122
156
|
|
123
157
|
* Maybe I will add additional data sources. Please see the
|
data/Rakefile
CHANGED
@@ -32,6 +32,10 @@ def pkg_directory
|
|
32
32
|
File.join(root_directory, 'pkg')
|
33
33
|
end
|
34
34
|
|
35
|
+
def gem_directory
|
36
|
+
File.join(root_directory, 'vendor', 'cache')
|
37
|
+
end
|
38
|
+
|
35
39
|
task :default => 'gem:build'
|
36
40
|
|
37
41
|
file gem_file => 'gem:build'
|
@@ -43,7 +47,8 @@ end
|
|
43
47
|
namespace :gem do
|
44
48
|
desc 'build tar file'
|
45
49
|
task :package => [gem_file, tmp_directory] do
|
46
|
-
FileUtils.mv File.join(pkg_directory,"#{software}-#{version}.gem"), tmp_directory
|
50
|
+
FileUtils.mv File.join(pkg_directory, "#{software}-#{version}.gem"), tmp_directory
|
51
|
+
FileUtils.mv File.join(gem_directory, "moneta-0.7.20.gem"), tmp_directory
|
47
52
|
|
48
53
|
Dir.chdir('tmp') do
|
49
54
|
sh "tar -czf #{tar_file} #{File.basename tmp_directory}"
|
data/lib/filegen/version.rb
CHANGED