filegen 0.0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/.gitignore +1 -0
  2. data/.rdebugrc +7 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +10 -0
  5. data/.simplecov +9 -0
  6. data/.travis.yml +7 -0
  7. data/.yardopts +6 -0
  8. data/Gemfile +30 -0
  9. data/{LICENSE.txt → LICENSE.md} +1 -1
  10. data/README.DEVELOPER.md +28 -0
  11. data/README.md +106 -7
  12. data/Rakefile +60 -1
  13. data/bin/filegen +1 -1
  14. data/config/rubocop-disabled.yml +0 -0
  15. data/config/rubocop-enabled.yml +140 -0
  16. data/cucumber.yml +2 -0
  17. data/features/evaluate_template.feature +134 -0
  18. data/features/output_meta_data.feature +20 -0
  19. data/features/step_definitions.rb +9 -0
  20. data/features/support/env.rb +20 -0
  21. data/filegen.gemspec +8 -9
  22. data/lib/filegen.rb +11 -1
  23. data/lib/filegen/data.rb +48 -0
  24. data/lib/filegen/data_source_builder.rb +49 -0
  25. data/lib/filegen/data_sources.rb +5 -0
  26. data/lib/filegen/data_sources/environment.rb +21 -0
  27. data/lib/filegen/data_sources/yaml.rb +18 -0
  28. data/lib/filegen/erb_generator.rb +21 -6
  29. data/lib/filegen/exceptions.rb +8 -0
  30. data/lib/filegen/options.rb +77 -6
  31. data/lib/filegen/runner.rb +29 -9
  32. data/lib/filegen/version.rb +2 -1
  33. data/rubocop-todo.yml +144 -0
  34. data/scripts/terminal +12 -0
  35. data/spec/data_source_builder_spec.rb +53 -0
  36. data/spec/data_sources/environment_spec.rb +20 -0
  37. data/spec/data_sources/yaml_spec.rb +31 -0
  38. data/spec/data_spec.rb +60 -0
  39. data/spec/erb_generator_spec.rb +31 -0
  40. data/spec/options_spec.rb +32 -0
  41. data/spec/spec_helper.rb +10 -0
  42. data/spec/support/config.rb +6 -0
  43. data/spec/support/debugging.rb +5 -0
  44. data/spec/support/environment.rb +7 -0
  45. data/spec/support/filesystem.rb +11 -0
  46. data/spec/support/here_doc.rb +2 -0
  47. metadata +58 -25
  48. data/lib/filegen/env.rb +0 -14
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ vendor/cache/
@@ -0,0 +1,7 @@
1
+ set listsize 30
2
+ set history save on
3
+ set history size 99999
4
+ set history filename ~/.rdebug_history
5
+ set autolist
6
+ set autoeval
7
+ set autoreload
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format Fuubar
2
+ --order rand
3
+ --color
@@ -0,0 +1,10 @@
1
+ inherit_from:
2
+ - config/rubocop-enabled.yml
3
+ - config/rubocop-disabled.yml
4
+
5
+ AllCops:
6
+ Includes:
7
+ - '**/*.gemspec'
8
+ - '**/Rakefile'
9
+ Excludes:
10
+ - vendor/**
@@ -0,0 +1,9 @@
1
+ SimpleCov.start do
2
+ add_filter "/features/"
3
+ add_filter "/spec/"
4
+ add_filter "/tmp"
5
+ add_filter "/db"
6
+ add_filter "/vendor"
7
+
8
+ add_group "lib", "lib"
9
+ end
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+ script: bundle exec rake test:coveralls
@@ -0,0 +1,6 @@
1
+ -o doc/yard
2
+ --verbose
3
+ -
4
+ LICENSE.md
5
+ README.md
6
+ README.DEVELOPER.md
data/Gemfile CHANGED
@@ -2,3 +2,33 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in filegen.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'aruba', git: 'https://github.com/cucumber/aruba.git'
8
+ gem 'cucumber'
9
+ gem 'fuubar'
10
+ gem 'rspec'
11
+ gem 'simplecov'
12
+ gem 'rubocop'
13
+ gem 'coveralls'
14
+ end
15
+
16
+ group :development do
17
+ gem 'debugger'
18
+ gem 'awesome_print'
19
+ gem 'debugger-completion'
20
+ gem 'pry'
21
+ gem 'pry-debugger'
22
+ gem 'pry-doc'
23
+ gem 'tmrb'
24
+ gem 'yard'
25
+ gem 'github-markup'
26
+ gem 'redcarpet'
27
+ end
28
+
29
+ gem 'rake', group: [:development, :test]
30
+ gem 'fedux_org-stdlib', group: [:development, :test]
31
+ gem 'bundler', '~> 1.3', group: [:development, :test]
32
+ gem 'erubis', group: [:development, :test]
33
+ gem 'versionomy', group: [:development, :test]
34
+ gem 'activesupport', group: [:development, :test]
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Dennis Günnewig
1
+ Copyright (c) 2014 Dennis Günnewig, VR Netze GmbH
2
2
 
3
3
  MIT License
4
4
 
@@ -0,0 +1,28 @@
1
+ # Filegen (Developer Readme)
2
+
3
+ ## Utilities
4
+
5
+ * Code coverage: simplecov
6
+ * Code quality: rubocop
7
+ * Documentation: yard
8
+ * Tasks: rake
9
+ * Testing: rspec, cucumber + aruba
10
+ * Testing-Helper: fedux_org-stdlib
11
+
12
+ ## Contributing
13
+
14
+ 1. Fork it
15
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
16
+ 3. Write your tests
17
+ 4. Commit your changes (`git commit -am 'Add some tests for feature'`)
18
+ 5. Write your code
19
+ 6. Commit your changes (`git commit -am 'Add some feature'`)
20
+ 7. Make sure all tests pass (`bundle exec rspec && bundle exec cucumber`)
21
+ 8. Make sure rubocop does not find any offences (`rubocop`)
22
+ 9. Push to the branch (`git push origin my-new-feature`)
23
+ 10. Create new Pull Request
24
+ 11. Make sure all tests pass on travis
25
+
26
+ Commits must not...
27
+ * change the version-number
28
+ * contain rubocop:disable-comments
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Filegen
2
2
 
3
- TODO: Write a gem description
3
+ [![Build Status](https://travis-ci.org/dg-vrnetze/filegen.png?branch=master)](https://travis-ci.org/dg-vrnetze/filegen)
4
+ [![Code Climate](https://codeclimate.com/github/dg-vrnetze/filegen.png)](https://codeclimate.com/github/dg-vrnetze/filegen)
5
+
6
+ Have you ever felt the need to generate files based on environment variables or
7
+ yaml files? If your answer is yes, then `filegen` can be quite helpful for
8
+ you. If your answer is no, than sorry Ma'am, this gem is not for you.
4
9
 
5
10
  ## Installation
6
11
 
@@ -16,14 +21,108 @@ Or install it yourself as:
16
21
 
17
22
  $ gem install filegen
18
23
 
24
+ This gem ships with an executable called `filegen`. It makes the power of ERB
25
+ available on the commandline.
26
+
19
27
  ## Usage
20
28
 
21
- TODO: Write usage instructions here
29
+ ### General advice
30
+
31
+ Please make sure you have an ERB-template available. It needs to end with
32
+ `.erb`! Place in anywhere you like. It's important that the name of variable in
33
+ the template matches the name of environment variable or yaml-key: wording,
34
+ case. The lookup is case-sensitive. If you want to get access to the variable,
35
+ you need to use the `lookup`-method.
36
+
37
+ ```
38
+ lookup(<variable>)
39
+ ```
40
+
41
+ If you want to write the output to a file you need
42
+ to redirect stdout with `>`. Otherwise it will output the content on `$stdout`.
43
+
44
+ ### Variable lookup
45
+
46
+ The default order of data sources to lookup a variable, is: 1st environment
47
+ variable and 2nd yaml file. The yaml file needs be given as command line argument
48
+ see below at [Generate a file based on YAML file](#yaml).
49
+
50
+ The order of data sources can be changed by using:
51
+
52
+ ```
53
+ --data-sources env,yaml
54
+ --data-sources yaml,env
55
+ ```
56
+
57
+ A short cut for `--data-sources` is `-d`. This option can also be used to ommit
58
+ a data source. But it makes sense only for the enviroment data source today,
59
+ because the yaml data source is only added if a yaml file name is given on the
60
+ commandline
61
+
62
+ ```
63
+ --data-sources yaml
64
+ ```
65
+
66
+
67
+
68
+
69
+ ### Generate a file based on Environment Variables
70
+
71
+ The content of `template.erb`:
72
+
73
+ ```erb
74
+ Hello my name is: <%= lookup('NAME') %>
75
+ ```
76
+
77
+ After that you can use it with filegen.
78
+
79
+ ```bash
80
+ NAME=Karl filegen template.erb > file
81
+ ```
82
+
83
+ And get the following result.
84
+
85
+ ```text
86
+ Hello my name is: Karl
87
+ ```
88
+
89
+ ### Generate a file based on YAML file
90
+ <a id="yaml"></a>
91
+
92
+ The content of `template.erb`:
93
+
94
+ ```erb
95
+ Hello my name is: <%= lookup('NAME') %>
96
+ ```
97
+
98
+ Additionally you need to create a `YAML`-file - e.g. `names.yaml`.
99
+
100
+ ```yaml
101
+ ---
102
+ NAME: Karl
103
+ ```
104
+
105
+ After that you can use it with filegen.
106
+
107
+ ```bash
108
+ #short format
109
+ filegen -y names.yaml template.erb > file
110
+
111
+ #long format
112
+ filegen --yaml-file names.yaml template.erb > file
113
+ ```
114
+
115
+ And get the following result.
116
+
117
+ ```text
118
+ Hello my name is: Karl
119
+ ```
120
+
121
+ ## Future
122
+
123
+ * Maybe I will add additional data sources. Please see the
124
+ [Moneta](https://github.com/minad/moneta)-gem for possible candidates.
22
125
 
23
126
  ## Contributing
24
127
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
128
+ Please have a look at the {file:README.DEVELOPER.md developer readme}
data/Rakefile CHANGED
@@ -1 +1,60 @@
1
- require "bundler/gem_tasks"
1
+ #!/usr/bin/env rake
2
+
3
+ require 'fedux_org/stdlib/rake'
4
+
5
+ require 'filegen/version'
6
+
7
+ def software
8
+ 'filegen'
9
+ end
10
+
11
+ def version
12
+ Filegen::VERSION
13
+ end
14
+
15
+ def root_directory
16
+ File.expand_path('../', __FILE__)
17
+ end
18
+
19
+ def tar_file
20
+ File.join(pkg_directory, "#{software}-#{version}.tar.gz")
21
+ end
22
+
23
+ def tmp_directory
24
+ File.join(root_directory, 'tmp', "#{software}-#{version}")
25
+ end
26
+
27
+ def gem_file
28
+ File.join(root_directory, 'pkg', "#{software}-#{version}.gem")
29
+ end
30
+
31
+ def pkg_directory
32
+ File.join(root_directory, 'pkg')
33
+ end
34
+
35
+ task :default => 'gem:build'
36
+
37
+ file gem_file => 'gem:build'
38
+
39
+ file tmp_directory do
40
+ FileUtils.mkdir_p tmp_directory
41
+ end
42
+
43
+ namespace :gem do
44
+ desc 'build tar file'
45
+ task :package => [gem_file, tmp_directory] do
46
+ FileUtils.mv File.join(pkg_directory,"#{software}-#{version}.gem"), tmp_directory
47
+
48
+ Dir.chdir('tmp') do
49
+ sh "tar -czf #{tar_file} #{File.basename tmp_directory}"
50
+ end
51
+ end
52
+ end
53
+
54
+ require 'coveralls/rake/task'
55
+ Coveralls::RakeTask.new
56
+
57
+ namespace :test do
58
+ desc 'Test with coveralls'
59
+ task :coveralls => ['test:rspec', 'test:cucumber', 'coveralls:push']
60
+ end
@@ -3,4 +3,4 @@
3
3
 
4
4
  require 'filegen'
5
5
 
6
- Filegen::Runner.new(ARGV).run
6
+ Filegen::Runner.new(ARGV).execute!
File without changes
@@ -0,0 +1,140 @@
1
+ AccessModifierIndentation:
2
+ Enabled: true
3
+
4
+ Alias:
5
+ Enabled: true
6
+
7
+ AlignParameters:
8
+ Enabled: true
9
+
10
+ Blocks:
11
+ Enabled: true
12
+
13
+ BracesAroundHashParameters:
14
+ Enabled: true
15
+
16
+ CharacterLiteral:
17
+ Enabled: true
18
+
19
+ ClassVars:
20
+ Enabled: true
21
+
22
+ CollectionMethods:
23
+ Enabled: true
24
+
25
+ ColonMethodCall:
26
+ Enabled: true
27
+
28
+ Documentation:
29
+ Enabled: true
30
+
31
+ EmptyLinesAroundAccessModifier:
32
+ Enabled: true
33
+
34
+ CaseEquality:
35
+ Enabled: true
36
+
37
+ EmptyLinesAroundBody:
38
+ Enabled: true
39
+
40
+ Encoding:
41
+ Enabled: true
42
+
43
+ Eval:
44
+ Enabled: true
45
+
46
+ FinalNewline:
47
+ Enabled: true
48
+
49
+ HashSyntax:
50
+ Enabled: true
51
+
52
+ IfUnlessModifier:
53
+ Enabled: true
54
+
55
+ IndentationWidth:
56
+ Enabled: true
57
+
58
+ Lambda:
59
+ Enabled: true
60
+
61
+ LeadingCommentSpace:
62
+ Enabled: true
63
+
64
+ LineLength:
65
+ Max: 188
66
+
67
+ MethodLength:
68
+ Max: 23
69
+
70
+ ParenthesesAroundCondition:
71
+ Enabled: true
72
+
73
+ PerlBackrefs:
74
+ Enabled: true
75
+
76
+ RaiseArgs:
77
+ Enabled: true
78
+
79
+ RedundantSelf:
80
+ Enabled: true
81
+
82
+ RegexpLiteral:
83
+ Enabled: true
84
+
85
+ Semicolon:
86
+ Enabled: true
87
+
88
+ SignalException:
89
+ Enabled: true
90
+
91
+ SingleLineBlockParams:
92
+ Enabled: true
93
+
94
+ SpaceAfterComma:
95
+ Enabled: true
96
+
97
+ SpaceAfterControlKeyword:
98
+ Enabled: true
99
+
100
+ SpaceAfterNot:
101
+ Enabled: true
102
+
103
+ SpaceAroundBlockBraces:
104
+ Enabled: true
105
+
106
+ SpaceAroundEqualsInParameterDefault:
107
+ Enabled: true
108
+
109
+ SpaceAroundOperators:
110
+ Enabled: true
111
+
112
+ SpaceInsideBrackets:
113
+ Enabled: true
114
+
115
+ SpaceInsideHashLiteralBraces:
116
+ Enabled: true
117
+
118
+ SpaceInsideParens:
119
+ Enabled: true
120
+
121
+ SpecialGlobalVars:
122
+ Enabled: true
123
+
124
+ StringLiterals:
125
+ Enabled: true
126
+
127
+ TrailingBlankLines:
128
+ Enabled: true
129
+
130
+ TrailingWhitespace:
131
+ Enabled: true
132
+
133
+ TrivialAccessors:
134
+ Enabled: true
135
+
136
+ UselessAssignment:
137
+ Enabled: true
138
+
139
+ WordArray:
140
+ Enabled: true