jeni 0.2.0

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.
Files changed (49) hide show
  1. data/Bugs.rdoc +6 -0
  2. data/Gemfile +14 -0
  3. data/History.txt +9 -0
  4. data/Intro.txt +3 -0
  5. data/LICENCE.rdoc +159 -0
  6. data/README.md +188 -0
  7. data/lib/jeni.rb +374 -0
  8. data/lib/jeni/actions.rb +400 -0
  9. data/lib/jeni/errors.rb +22 -0
  10. data/lib/jeni/io.rb +71 -0
  11. data/lib/jeni/options.rb +68 -0
  12. data/lib/jeni/optparse.rb +84 -0
  13. data/lib/jeni/utils.rb +181 -0
  14. data/lib/jeni/version.rb +13 -0
  15. data/spec/jeni_spec.rb +85 -0
  16. data/spec/jeni_utils_spec.rb +297 -0
  17. data/spec/spec_helper.rb +26 -0
  18. data/test/examples/source/coati.haml.conf +37 -0
  19. data/test/examples/source/executable +3 -0
  20. data/test/examples/source/jenny-diff.rb +64 -0
  21. data/test/examples/source/jenny.rb +63 -0
  22. data/test/examples/source/shebang.rb +3 -0
  23. data/test/examples/source/subfiles/subfile_1.rb +63 -0
  24. data/test/examples/source/template.haml.rb +10 -0
  25. data/test/examples/target/archive/coati.haml.conf +37 -0
  26. data/test/examples/target/archive/executable +3 -0
  27. data/test/examples/target/archive/jenny-diff.rb +64 -0
  28. data/test/examples/target/archive/jenny.rb +63 -0
  29. data/test/examples/target/archive/shebang.rb +3 -0
  30. data/test/examples/target/archive/subfiles/subfile_1.rb +63 -0
  31. data/test/examples/target/archive/template.haml.rb +10 -0
  32. data/test/examples/target/jenny.rb +63 -0
  33. data/test/examples/target/jenny_link.rb +63 -0
  34. data/test/examples/target2/coati.conf +36 -0
  35. data/test/examples/target2/coati.haml.conf +37 -0
  36. data/test/examples/target2/executable +3 -0
  37. data/test/examples/target2/jenny-diff.rb +64 -0
  38. data/test/examples/target2/jenny.rb +63 -0
  39. data/test/examples/target2/jenny_link.rb +63 -0
  40. data/test/examples/target2/jenny_template.rb +10 -0
  41. data/test/examples/target2/jenny_test.rb +63 -0
  42. data/test/examples/target2/shebang.rb +3 -0
  43. data/test/examples/target2/std_template.rb +12 -0
  44. data/test/examples/target2/template.haml.rb +10 -0
  45. data/test/examples/test1.rb +30 -0
  46. data/test/examples/test2.rb +27 -0
  47. data/test/examples/test_args +24 -0
  48. data/test/examples/test_users +16 -0
  49. metadata +162 -0
@@ -0,0 +1,10 @@
1
+ # Author: Me
2
+ # Created at: 10:28 14-09-12
3
+
4
+ module Amodule
5
+ class Aclass
6
+ def amethod
7
+ puts "Welcome and well met"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,63 @@
1
+ #
2
+ # Author:: R.J.Sharp
3
+ # Email:: robert(a)osburn-sharp.ath.cx
4
+ # Copyright:: Copyright (c) 2012
5
+ # License:: Open Software Licence v3.0
6
+ #
7
+ # This software is licensed for use under the Open Software Licence v. 3.0
8
+ # The terms of this licence can be found at http://www.opensource.org/licenses/osl-3.0.php
9
+ # and in the file LICENCE. Under the terms of this licence, all derivative works
10
+ # must themselves be licensed under the Open Software Licence v. 3.0
11
+ #
12
+ #
13
+ # [requires go here]
14
+ require 'rubygems'
15
+
16
+ # = Jeni
17
+ #
18
+ # [Description of the main module]
19
+ module Jeni
20
+ class Installer
21
+
22
+ def initialize(gem_name)
23
+ @gem_name = gem_name
24
+ @gem_spec = Gem::Specification.find_by_name(@gem_name)
25
+ @commands = []
26
+ end
27
+
28
+ def self.construct(gem_name, options={}, &block)
29
+ @pretend = options[:pretend] || true # JUST FOR NOW!
30
+ installer = self.new(gem_name)
31
+ block.call(installer)
32
+ return self
33
+ end
34
+
35
+ def run!(pretent=false)
36
+
37
+ end
38
+
39
+ # copy a file from the source, relative to the gem home to the target
40
+ # which is absolute
41
+ def file(source, target, opts={})
42
+ @commands << {:file => {source => target}}
43
+ if opts.has_key?(:chown) then
44
+ @commands << {:chown => opts[:chown]}
45
+ end
46
+ end
47
+
48
+ # copy all of the files in a directory
49
+ def directory(source, target, opts={})
50
+
51
+ end
52
+
53
+ # create a wrapper at target to call source
54
+ def wrapper(source, target)
55
+
56
+ end
57
+
58
+ def link(source, target)
59
+
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/ruby -w
2
+
3
+ puts "Just a test"
@@ -0,0 +1,12 @@
1
+ # THIS IS A STANDARD TEMPLATE
2
+ # Author: Robert
3
+ # Created at: 10:28 14-09-12
4
+
5
+ module Amodule
6
+ class Aclass
7
+ def amethod
8
+ puts "How do you do?"
9
+ end
10
+ end
11
+ end
12
+ # the standard
@@ -0,0 +1,10 @@
1
+ # Author: #{author}
2
+ # Created at: #{Time.now.strftime("%H:%M %d-%m-%y")}
3
+
4
+ module Amodule
5
+ class Aclass
6
+ def amethod
7
+ puts "#{greeting}"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby18
2
+ # simple etst of Jeeni
3
+ require 'rubygems'
4
+ $LOAD_PATH.unshift File.expand_path('../../lib', File.dirname(__FILE__))
5
+ require 'jeni'
6
+ require 'rspec/mocks/standalone'
7
+
8
+ gspec = double("Gem::Specification")
9
+ Gem::Specification.stub(:find_by_name).and_return(gspec)
10
+ test_dir = File.dirname(__FILE__)
11
+ target_dir = File.join(test_dir, 'target2')
12
+ FileUtils.mkdir(target_dir) unless FileTest.directory?(target_dir)
13
+ FileUtils.rm_f Dir.glob("#{target_dir}/**")
14
+ gspec.should_receive(:gem_dir).and_return(test_dir)
15
+ pretend = true
16
+
17
+ Jeni::Installer.new_from_gem('jeni') do |jeni|
18
+ jeni.pretend(false)
19
+ jeni.verbose(false)
20
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni_test.rb'), :chown=>'robert')
21
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni.rb'), :chown=>'robert')
22
+ jeni.file('source/shebang.rb', File.join(target_dir, 'shebang.rb'), :chown=>'robert', :chmod=>0755)
23
+ jeni.directory('source', target_dir)
24
+ jeni.message('invoke', 'templating', :white)
25
+ jeni.template('source/template.haml.rb', File.join(target_dir, 'jeni_template'), :chown=>'robert', :greeting=>'Welcome and well met', :author=>'Me')
26
+ jeni.wrapper('source/executable', File.join(target_dir, 'executable'), :chmod=>true)
27
+ jeni.link('source/jeni.rb', File.join(target_dir, 'jeni_link.rb'))
28
+ jeni.link('source/shebang.rb', File.join(target_dir, 'jeni_link.rb'))
29
+ jeni.link('/etc/conf.d/unicorn', File.join(target_dir, 'unicorn.jeni'))
30
+ end.run!
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby18
2
+ # simple etst of Jeeni
3
+ require 'rubygems'
4
+ $LOAD_PATH.unshift File.expand_path('../../lib', File.dirname(__FILE__))
5
+ require 'jeni'
6
+
7
+ test_dir = File.dirname(__FILE__)
8
+ target_dir = File.join(test_dir, 'target2')
9
+ FileUtils.mkdir(target_dir) unless FileTest.directory?(target_dir)
10
+ FileUtils.rm_f Dir.glob("#{target_dir}/**")
11
+
12
+ pretend = true
13
+
14
+ Jeni::Installer.new(test_dir, 'jeni') do |jeni|
15
+ jeni.pretend(false)
16
+ jeni.verbose(false)
17
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni_test.rb'), :chown=>'robert')
18
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni.rb'), :chown=>'robert')
19
+ jeni.file('source/shebang.rb', File.join(target_dir, 'shebang.rb'), :chown=>'robert', :chmod=>0755)
20
+ jeni.directory('source', target_dir)
21
+ jeni.template('source/template.haml.rb', File.join(target_dir, 'jeni_template.rb'), :greeting=>'Welcome and well met', :author=>'Me')
22
+ jeni.template('source/coati.haml.conf', File.join(target_dir, 'coati.conf'), :root=>'/home/robert/dev/rails/coati', :app_name=>'coati')
23
+ jeni.standard_template('template.haml.rb', File.join(target_dir, 'std_template.rb'), :greeting=>'How do you do?', :author=>'Robert')
24
+ jeni.link('source/jeni.rb', File.join(target_dir, 'jeni_link.rb'))
25
+ jeni.link('source/shebang.rb', File.join(target_dir, 'jeni_link.rb'))
26
+ jeni.link('source/jeni.rb', File.join(target_dir, 'jeni.rb'))
27
+ end.run!
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby18
2
+ # simple etst of Jeeni
3
+ require 'rubygems'
4
+ $LOAD_PATH.unshift File.expand_path('../../lib', File.dirname(__FILE__))
5
+ require 'jeni'
6
+ require 'rspec/mocks/standalone'
7
+
8
+ gspec = double("Gem::Specification")
9
+ Gem::Specification.stub(:find_by_name).and_return(gspec)
10
+ test_dir = File.dirname(__FILE__)
11
+ target_dir = File.join(test_dir, 'target2')
12
+ FileUtils.mkdir(target_dir) unless FileTest.directory?(target_dir)
13
+ FileUtils.rm_f Dir.glob("#{target_dir}/**")
14
+ gspec.should_receive(:gem_dir).and_return(test_dir)
15
+ pretend = true
16
+
17
+ Jeni::Installer.new_from_gem('jeni') do |jeni|
18
+ jeni.optparse(ARGV)
19
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni_test.rb'), :chown=>'robert')
20
+ jeni.file('source/jeni.rb', File.join(target_dir, 'jeni.rb'), :chown=>'robert', :chgrp=>'users')
21
+ jeni.directory('source', target_dir)
22
+ jeni.wrapper('source/executable', File.join(target_dir, 'executable'), :chmod=>true)
23
+ jeni.link('source/jeni.rb', File.join(target_dir, 'jeni_link.rb'))
24
+ end.run!
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby18
2
+
3
+ require 'rubygems'
4
+ $LOAD_PATH.unshift File.expand_path('../../lib', File.dirname(__FILE__))
5
+ require 'jeni'
6
+
7
+ test_dir = File.dirname(__FILE__)
8
+ target_dir = File.join(test_dir, 'target2')
9
+ FileUtils.mkdir(target_dir) unless FileTest.directory?(target_dir)
10
+ FileUtils.rm_f Dir.glob("#{target_dir}/**")
11
+
12
+ Jeni::Installer.new(test_dir, 'jeni') do |jeni|
13
+ jeni.optparse(ARGV)
14
+ jeni.group("piglets", :gid=>10101, :skip=>true)
15
+ jeni.user("peppapig", :uid=>10101, :user_group=>true, :skip=>true)
16
+ end.run!
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jeni
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
+ platform: ruby
12
+ authors:
13
+ - Dr Robert
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-10-04 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ type: :runtime
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ name: colored
32
+ version_requirements: *id001
33
+ prerelease: false
34
+ - !ruby/object:Gem::Dependency
35
+ type: :runtime
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ name: diffy
46
+ version_requirements: *id002
47
+ prerelease: false
48
+ - !ruby/object:Gem::Dependency
49
+ type: :runtime
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ name: haml
60
+ version_requirements: *id003
61
+ prerelease: false
62
+ description: |
63
+ A simple alternative to rubigen and thor that can be used to create a post-install script
64
+ for a gem needing more than the standard file ops covered by rubygems. It can also be
65
+ used for straight directories instead of gems, if required.
66
+
67
+ email: robert@osburn-sharp.ath.cx
68
+ executables: []
69
+
70
+ extensions: []
71
+
72
+ extra_rdoc_files:
73
+ - History.txt
74
+ - Bugs.rdoc
75
+ - Intro.txt
76
+ - LICENCE.rdoc
77
+ - Gemfile
78
+ - README.md
79
+ files:
80
+ - History.txt
81
+ - Bugs.rdoc
82
+ - Intro.txt
83
+ - LICENCE.rdoc
84
+ - Gemfile
85
+ - README.md
86
+ - lib/jeni/errors.rb
87
+ - lib/jeni/version.rb
88
+ - lib/jeni/utils.rb
89
+ - lib/jeni/options.rb
90
+ - lib/jeni/optparse.rb
91
+ - lib/jeni/io.rb
92
+ - lib/jeni/actions.rb
93
+ - lib/jeni.rb
94
+ - spec/spec_helper.rb
95
+ - spec/jeni_spec.rb
96
+ - spec/jeni_utils_spec.rb
97
+ - test/examples/source/jenny-diff.rb
98
+ - test/examples/source/jenny.rb
99
+ - test/examples/source/shebang.rb
100
+ - test/examples/source/executable
101
+ - test/examples/source/template.haml.rb
102
+ - test/examples/source/coati.haml.conf
103
+ - test/examples/source/subfiles/subfile_1.rb
104
+ - test/examples/test1.rb
105
+ - test/examples/test_args
106
+ - test/examples/test2.rb
107
+ - test/examples/test_users
108
+ - test/examples/target/jenny.rb
109
+ - test/examples/target/archive/jenny-diff.rb
110
+ - test/examples/target/archive/jenny.rb
111
+ - test/examples/target/archive/shebang.rb
112
+ - test/examples/target/archive/executable
113
+ - test/examples/target/archive/template.haml.rb
114
+ - test/examples/target/archive/coati.haml.conf
115
+ - test/examples/target/archive/subfiles/subfile_1.rb
116
+ - test/examples/target/jenny_link.rb
117
+ - test/examples/target2/jenny_test.rb
118
+ - test/examples/target2/jenny.rb
119
+ - test/examples/target2/shebang.rb
120
+ - test/examples/target2/jenny-diff.rb
121
+ - test/examples/target2/executable
122
+ - test/examples/target2/template.haml.rb
123
+ - test/examples/target2/coati.haml.conf
124
+ - test/examples/target2/jenny_template.rb
125
+ - test/examples/target2/coati.conf
126
+ - test/examples/target2/std_template.rb
127
+ - test/examples/target2/jenny_link.rb
128
+ homepage:
129
+ licenses:
130
+ - Open Software Licence v3.0
131
+ post_install_message:
132
+ rdoc_options:
133
+ - --main=README.rdoc
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: 3
151
+ segments:
152
+ - 0
153
+ version: "0"
154
+ requirements: []
155
+
156
+ rubyforge_project:
157
+ rubygems_version: 1.8.24
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: A little post-install helper for Gems to install things Gems can't reach, and can be used for non-gems too.
161
+ test_files: []
162
+