noe 1.1.0 → 1.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.
@@ -0,0 +1,77 @@
1
+ # Installs a rake task for debuging the announcement mail.
2
+ #
3
+ # This file installs the 'rake debug_mail' that flushes an announcement mail
4
+ # for your library on the standard output. It is automatically generated
5
+ # by Noe from your .noespec file, and should therefore be configured there,
6
+ # under the variables/rake_tasks/debug_mail entry, as illustrated below:
7
+ #
8
+ # variables:
9
+ # rake_tasks:
10
+ # debug_mail:
11
+ # rx_changelog_sections: /^#/
12
+ # nb_changelog_sections: 1
13
+ # ...
14
+ #
15
+ # If you have specific needs requiring manual intervention on this file,
16
+ # don't forget to set safe-override to false in your noe specification:
17
+ #
18
+ # template-info:
19
+ # manifest:
20
+ # tasks/debug_mail.rake:
21
+ # safe-override: false
22
+ #
23
+ # The mail template used can be found in debug_mail.txt. That file may be
24
+ # changed to tune the mail you want to send. If you do so, don't forget to
25
+ # add a manifest entry in your .noespec file to avoid overriding you
26
+ # changes. The mail template uses wlang, with parentheses for block
27
+ # delimiters.
28
+ #
29
+ # template-info:
30
+ # manifest:
31
+ # tasks/debug_mail.txt:
32
+ # safe-override: false
33
+ #
34
+ begin
35
+ require 'wlang'
36
+ require 'yaml'
37
+
38
+ task :debug_mail do
39
+ # Check that a .noespec file exists
40
+ noespec_file = File.expand_path('../../!{lower}.noespec', __FILE__)
41
+ unless File.exists?(noespec_file)
42
+ raise "Unable to find .noespec project file, sorry."
43
+ end
44
+
45
+ # Load it as well as variables and options
46
+ noespec = YAML::load(File.read(noespec_file))
47
+ vars = noespec['variables'] || {}
48
+
49
+ # Changes are taken from CHANGELOG
50
+ logs = Dir[File.expand_path("../../CHANGELOG.*", __FILE__)]
51
+ unless logs.size == 1
52
+ abort "Unable to find a changelog file"
53
+ end
54
+
55
+ # Load interesting changesets
56
+ changes, end_found = [], 0
57
+ File.readlines(logs.first).select{|line|
58
+ if line =~ !{rake_tasks.debug_mail.rx_changelog_sections}
59
+ break if end_found >= +{rake_tasks.debug_mail.nb_changelog_sections}
60
+ end_found += 1
61
+ end
62
+ changes << line
63
+ }
64
+ vars['changes'] = changes.join
65
+
66
+ # WLang template
67
+ template = File.expand_path('../debug_mail.txt', __FILE__)
68
+
69
+ # Let's go!
70
+ $stdout << WLang::file_instantiate(template, vars, "wlang/active-text")
71
+ end
72
+
73
+ rescue LoadError
74
+ task :debug_mail do
75
+ abort "wlang is not available. Try 'gem install wlang'"
76
+ end
77
+ end
@@ -0,0 +1,13 @@
1
+ Subject: [ANN] !{lower} !{version} Released
2
+
3
+ !{lower} version !{version} has been released!
4
+
5
+ !{summary}
6
+
7
+ *{links as l}{* <!{l}>}{!{"\n"}}
8
+
9
+ !{description}
10
+
11
+ Changes:
12
+
13
+ !{changes}
@@ -1,4 +1,28 @@
1
- # Install .gem project packaging
1
+ # Installs rake tasks for gemming and packaging
2
+ #
3
+ # This file installs the 'rake package', 'rake gem' tasks and associates
4
+ # (clobber_package, repackage, ...). It is automatically generated by Noe
5
+ # from your .noespec file, and should therefore be configured there, under
6
+ # the variables/rake_tasks/gem entry, as illustrated below:
7
+ #
8
+ # variables:
9
+ # rake_tasks:
10
+ # gem:
11
+ # package_dir: pkg
12
+ # need_tar: false
13
+ # need_tar_gz: false
14
+ # need_tar_bz2: false
15
+ # need_zip: false
16
+ # ...
17
+ #
18
+ # If you have specific needs requiring manual intervention on this file,
19
+ # don't forget to set safe-override to false in your noe specification:
20
+ #
21
+ # template-info:
22
+ # manifest:
23
+ # tasks/gem.rake:
24
+ # safe-override: false
25
+ #
2
26
  begin
3
27
  require 'rubygems/package_task'
4
28
  Gem::PackageTask.new($gemspec) do |t|
@@ -10,28 +34,28 @@ begin
10
34
  t.version = $gemspec.version
11
35
 
12
36
  # Directory used to store the package files
13
- t.package_dir = 'pkg'
37
+ t.package_dir = +{rake_tasks.gem.package_dir}
14
38
 
15
39
  # True if a gzipped tar file (tgz) should be produced
16
- t.need_tar = false
40
+ t.need_tar = +{rake_tasks.gem.need_tar}
17
41
 
18
42
  # True if a gzipped tar file (tar.gz) should be produced
19
- t.need_tar_gz = true
43
+ t.need_tar_gz = +{rake_tasks.gem.need_tar_gz}
20
44
 
21
45
  # True if a bzip2'd tar file (tar.bz2) should be produced
22
- t.need_tar_bz2 = false
46
+ t.need_tar_bz2 = +{rake_tasks.gem.need_tar_bz2}
23
47
 
24
48
  # True if a zip file should be produced (default is false)
25
- t.need_zip = true
49
+ t.need_zip = +{rake_tasks.gem.need_zip}
26
50
 
27
51
  # List of files to be included in the package.
28
52
  t.package_files = $gemspec.files
29
53
 
30
54
  # Tar command for gzipped or bzip2ed archives.
31
- t.tar_command = 'tar'
55
+ t.tar_command = +{rake_tasks.gem.tar_command}
32
56
 
33
57
  # Zip command for zipped archives.
34
- t.zip_command = 'zip'
58
+ t.zip_command = +{rake_tasks.gem.zip_command}
35
59
 
36
60
  end
37
61
  rescue LoadError
@@ -1,55 +1,73 @@
1
+ # Installs a rake task for for running examples written using rspec.
1
2
  #
2
- # Install a rake task for running examples written using rspec.
3
+ # This file installs the 'rake spec_test' (aliased as 'rake spec') as well as
4
+ # extends 'rake test' to run spec tests, if any. It is automatically generated
5
+ # by Noe from your .noespec file, and should therefore be configured there,
6
+ # under the variables/rake_tasks/spec_test entry, as illustrated below:
3
7
  #
4
- # More information about rspec: http://relishapp.com/rspec
5
- # This file has been written to conform to RSpec v2.4.0
8
+ # variables:
9
+ # rake_tasks:
10
+ # spec_test:
11
+ # pattern: spec/**/*_spec.rb
12
+ # verbose: true
13
+ # rspec_opts: [--color, --backtrace]
14
+ # ...
15
+ #
16
+ # If you have specific needs requiring manual intervention on this file,
17
+ # don't forget to set safe-override to false in your noe specification:
18
+ #
19
+ # template-info:
20
+ # manifest:
21
+ # tasks/spec_test.rake:
22
+ # safe-override: false
23
+ #
24
+ # This file has been written to conform to RSpec v2.4.0. More information about
25
+ # rspec and options of the rake task defined below can be found on
26
+ # http://relishapp.com/rspec
6
27
  #
7
28
  begin
8
29
  require "rspec/core/rake_task"
9
30
  desc "Run RSpec code examples"
10
31
  RSpec::Core::RakeTask.new(:spec_test) do |t|
11
32
  # Glob pattern to match files.
12
- t.pattern = 'spec/**/*_spec.rb'
33
+ t.pattern = +{rake_tasks.spec_test.pattern}
13
34
 
14
35
  # By default, if there is a Gemfile, the generated command will include
15
36
  # 'bundle exec'. Set this to true to ignore the presence of a Gemfile,
16
37
  # and not add 'bundle exec' to the command.
17
- t.skip_bundler = false
38
+ t.skip_bundler = +{rake_tasks.spec_test.skip_bundler}
18
39
 
19
40
  # Name of Gemfile to use
20
- t.gemfile = 'Gemfile'
41
+ t.gemfile = +{rake_tasks.spec_test.gemfile}
21
42
 
22
43
  # Whether or not to fail Rake when an error occurs (typically when
23
44
  # examples fail).
24
- t.fail_on_error = true
45
+ t.fail_on_error = +{rake_tasks.spec_test.fail_on_error}
25
46
 
26
47
  # A message to print to stderr when there are failures.
27
- t.failure_message = nil
48
+ t.failure_message = +{rake_tasks.spec_test.failure_message}
28
49
 
29
50
  # Use verbose output. If this is set to true, the task will print the
30
51
  # executed spec command to stdout.
31
- t.verbose = true
52
+ t.verbose = +{rake_tasks.spec_test.verbose}
32
53
 
33
54
  # Use rcov for code coverage?
34
- t.rcov = false
55
+ t.rcov = +{rake_tasks.spec_test.rcov}
35
56
 
36
57
  # Path to rcov.
37
- t.rcov_path = 'rcov'
58
+ t.rcov_path = +{rake_tasks.spec_test.rcov_path}
38
59
 
39
- # Command line options to pass to rcov.
40
- # See 'rcov --help' about this
41
- t.rcov_opts = %w{}
60
+ # Command line options to pass to rcov. See 'rcov --help' about this
61
+ t.rcov_opts = +{rake_tasks.spec_test.rcov_opts}
42
62
 
43
- # Command line options to pass to ruby.
44
- # See 'ruby --help' about this
45
- t.ruby_opts = %w{}
63
+ # Command line options to pass to ruby. See 'ruby --help' about this
64
+ t.ruby_opts = +{rake_tasks.spec_test.ruby_opts}
46
65
 
47
66
  # Path to rspec
48
- t.rspec_path = 'rspec'
67
+ t.rspec_path = +{rake_tasks.spec_test.rspec_path}
49
68
 
50
- # Command line options to pass to rspec.
51
- # See 'rspec --help' about this
52
- t.rspec_opts = %w{--color --backtrace}
69
+ # Command line options to pass to rspec. See 'rspec --help' about this
70
+ t.rspec_opts = +{rake_tasks.spec_test.rspec_opts}
53
71
  end
54
72
  rescue LoadError => ex
55
73
  task :spec_test do
@@ -1,8 +1,28 @@
1
+ # Installs a rake task for for running unit tests.
1
2
  #
2
- # Install a rake task for running examples written using rspec.
3
+ # This file installs the 'rake unit_test' and extends 'rake test' to run unit
4
+ # tests, if any. It is automatically generated by Noe from your .noespec file,
5
+ # and should therefore be configured there, under the variables/rake_tasks/unit_test
6
+ # entry, as illustrated below:
3
7
  #
4
- # More information about rspec: http://relishapp.com/rspec
5
- # This file has been written to conform to RSpec v2.4.0
8
+ # variables:
9
+ # rake_tasks:
10
+ # unit_test:
11
+ # pattern: test/test*.rb
12
+ # verbose: false
13
+ # warning: false
14
+ # ...
15
+ #
16
+ # If you have specific needs requiring manual intervention on this file,
17
+ # don't forget to set safe-override to false in your noe specification:
18
+ #
19
+ # template-info:
20
+ # manifest:
21
+ # tasks/unit_test.rake:
22
+ # safe-override: false
23
+ #
24
+ # More info about the TestTask and its options can be found on
25
+ # http://rake.rubyforge.org/classes/Rake/TestTask.html
6
26
  #
7
27
  begin
8
28
  desc "Lauches unit tests"
@@ -11,21 +31,21 @@ begin
11
31
 
12
32
  # List of directories to added to $LOAD_PATH before running the
13
33
  # tests. (default is 'lib')
14
- t.libs = %w{ lib }
34
+ t.libs = +{rake_tasks.unit_test.libs}
15
35
 
16
36
  # True if verbose test output desired. (default is false)
17
- t.verbose = false
37
+ t.verbose = +{rake_tasks.unit_test.verbose}
18
38
 
19
39
  # Test options passed to the test suite. An explicit TESTOPTS=opts
20
40
  # on the command line will override this. (default is NONE)
21
- t.options = []
41
+ t.options = +{rake_tasks.unit_test.options}
22
42
 
23
43
  # Request that the tests be run with the warning flag set.
24
44
  # E.g. warning=true implies "ruby -w" used to run the tests.
25
- t.warning = false
45
+ t.warning = +{rake_tasks.unit_test.warning}
26
46
 
27
47
  # Glob pattern to match test files. (default is 'test/test*.rb')
28
- t.pattern = 'test/test*.rb'
48
+ t.pattern = +{rake_tasks.unit_test.pattern}
29
49
 
30
50
  # Style of test loader to use. Options are:
31
51
  #
@@ -33,17 +53,17 @@ begin
33
53
  # * :testrb -- Ruby provided test loading script.
34
54
  # * :direct -- Load tests using command line loader.
35
55
  #
36
- t.loader = :rake
56
+ t.loader = +{rake_tasks.unit_test.loader}
37
57
 
38
58
  # Array of commandline options to pass to ruby when running test
39
59
  # loader.
40
- t.ruby_opts = []
60
+ t.ruby_opts = +{rake_tasks.unit_test.ruby_opts}
41
61
 
42
62
  # Explicitly define the list of test files to be included in a
43
63
  # test. +list+ is expected to be an array of file names (a
44
64
  # FileList is acceptable). If both +pattern+ and +test_files+ are
45
65
  # used, then the list of test files is the union of the two.
46
- t.test_files = nil
66
+ t.test_files = +{rake_tasks.unit_test.test_files}
47
67
 
48
68
  end
49
69
  rescue LoadError => ex
@@ -1,22 +1,37 @@
1
+ # Installs a rake task to generate API documentation using yard.
2
+ #
3
+ # This file installs the 'rake yard' task. It is automatically generated by Noe from
4
+ # your .noespec file, and should therefore be configured there, under the
5
+ # variables/rake_tasks/yard entry, as illustrated below:
6
+ #
7
+ # variables:
8
+ # rake_tasks:
9
+ # yard:
10
+ # files: lib/**/*.rb
11
+ # options: []
12
+ # ...
13
+ #
14
+ # If you have specific needs requiring manual intervention on this file,
15
+ # don't forget to set safe-override to false in your noe specification:
1
16
  #
2
- # Install a rake task to generate API documentation using
3
- # yard.
17
+ # template-info:
18
+ # manifest:
19
+ # tasks/yard.rake:
20
+ # safe-override: false
4
21
  #
5
- # More information about yard: http://yardoc.org/
6
- # This file has been written to conform to yard v0.6.4
22
+ # This file has been written to conform to yard v0.6.4. More information about
23
+ # yard and the rake task installed below can be found on http://yardoc.org/
7
24
  #
8
- # About project documentation
9
25
  begin
10
26
  require "yard"
11
27
  desc "Generate yard documentation"
12
28
  YARD::Rake::YardocTask.new(:yard) do |t|
13
- # Array of options passed to the commandline utility
14
- # See 'yardoc --help' about this
15
- t.options = %w{--output-dir doc/api - README.md CHANGELOG.md LICENCE.md}
29
+ # Array of options passed to yardoc commandline. See 'yardoc --help' about this
30
+ t.options = +{rake_tasks.yard.options}
16
31
 
17
32
  # Array of ruby source files (and any extra documentation files
18
33
  # separated by '-')
19
- t.files = ['lib/**/*.rb']
34
+ t.files = +{rake_tasks.yard.files}
20
35
 
21
36
  # A proc to call before running the task
22
37
  # t.before = proc{ }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noe
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 1.1.0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bernard Lambeau
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-15 00:00:00 +01:00
18
+ date: 2011-01-17 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -100,24 +100,40 @@ dependencies:
100
100
  - !ruby/object:Gem::Dependency
101
101
  prerelease: false
102
102
  name: wlang
103
- type: :runtime
103
+ type: :development
104
104
  version_requirements: &id006 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- hash: 55
109
+ hash: 53
110
110
  segments:
111
111
  - 0
112
112
  - 10
113
- - 0
114
- version: 0.10.0
113
+ - 1
114
+ version: 0.10.1
115
115
  requirement: *id006
116
116
  - !ruby/object:Gem::Dependency
117
117
  prerelease: false
118
- name: quickl
118
+ name: wlang
119
119
  type: :runtime
120
120
  version_requirements: &id007 !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ hash: 53
126
+ segments:
127
+ - 0
128
+ - 10
129
+ - 1
130
+ version: 0.10.1
131
+ requirement: *id007
132
+ - !ruby/object:Gem::Dependency
133
+ prerelease: false
134
+ name: quickl
135
+ type: :runtime
136
+ version_requirements: &id008 !ruby/object:Gem::Requirement
121
137
  none: false
122
138
  requirements:
123
139
  - - ~>
@@ -128,12 +144,12 @@ dependencies:
128
144
  - 2
129
145
  - 0
130
146
  version: 0.2.0
131
- requirement: *id007
147
+ requirement: *id008
132
148
  - !ruby/object:Gem::Dependency
133
149
  prerelease: false
134
150
  name: highline
135
151
  type: :runtime
136
- version_requirements: &id008 !ruby/object:Gem::Requirement
152
+ version_requirements: &id009 !ruby/object:Gem::Requirement
137
153
  none: false
138
154
  requirements:
139
155
  - - ~>
@@ -144,192 +160,8 @@ dependencies:
144
160
  - 6
145
161
  - 0
146
162
  version: 1.6.0
147
- requirement: *id008
148
- description: |
149
- # Noe - A simple and extensible project generator
150
-
151
- Noe is a tool that generates projects from predefined skeletons (aka project/application
152
- templates). Skeletons are designed for building specific products (a ruby library, a static
153
- or dynamic web site, ...). Noe instantiates them and helps you maintaining your product
154
- via meta-information provided by a .noespec yaml file.
155
-
156
- Noe comes bundled with a skeleton for creating and maintaining a ruby gem. This skeleton
157
- is written and maintained to follow ruby best practices and may also be tuned for your own
158
- needs. Read more about it and related projects as well as the underlying philosophy in the
159
- sections below.
160
-
161
- ## Getting started
162
-
163
- [sudo] gem install noe
164
- [noe --help]
165
- [noe help install]
166
- noe install
167
-
168
- Have a loot at ~/.noerc and ~/.noe for configuration and a default ruby template. To
169
- instantiate a ruby project simply execute the following commands in turn:
170
-
171
- # Given a template ruby under ~/.noe/ruby, install by default
172
- noe prepare --template=ruby foo
173
- cd foo
174
-
175
- # Edit the template configuration foo/foo.noespec
176
- edit foo/foo.noespec
177
-
178
- # Launch template instantiation
179
- noe go
180
-
181
- That's it! But also have a look at 'noe help prepare' and 'not help go' for additional
182
- options.
183
-
184
- ## Philosophy
185
-
186
- Noe is designed to follow a certain number of good principles and helps you following
187
- them as well.
188
-
189
- ### Separation of concerns
190
-
191
- Noe maintains a strong separation of concerns. In particular one has to make the distinction
192
- between a) Noe itself, b) a skeleton and c) an instantiated product. This fact has two
193
- main consequences:
194
-
195
- * Noe itself **is not dedicated to specific products** (like a ruby library). Even if Noe
196
- comes bundled with a default skeleton for ruby projects, writing skeletons for something
197
- else should not be a problem. In other words, Noe itself is agnostic: the semantics of
198
- generated products is the secret of the skeleton, under the responsibility of it's
199
- maintainer.
200
-
201
- * Noe **should not be a runtime dependency** of the product. Good skeletons maintain this
202
- separation. As an example the default ruby skeleton is strictly independent of Noe itself.
203
- Principles discussed below explain why this is important.
204
-
205
- ### Master the tools YOU use
206
-
207
- The separation of concerns described previously also drives what you have to learn and what
208
- tools you have to master:
209
-
210
- * As an ordinary Noe user (vs. skeleton maintainer) and because Noe itself (unlike skeletons
211
- is project agnostic, you only have to know **basic Noe commands** (see 'noe --help') and
212
- should never have to study Noe's API and internals. In contrast, you have to **master the
213
- tools and best practices of your product's ecosystem**. A good skeleton should help you
214
- along this task. As an example, the default ruby skeleton is fully documented to help you
215
- gaining understanding of ***rake*, *spec*, *yard*, *bundler*** and so on but **not noe
216
- itself**.
217
-
218
- * This explains why Noe itself is not a runtime dependency. Using a particular skeleton
219
- already means learning a lot, at least in the long run (see the section about Magic below).
220
- Noe avoids interfering with generated products to avoid making the learning curve even
221
- worse.
222
-
223
- * Being a skeleton creator/maintainer is another story of course. To write a skeleton you'll
224
- also have to learn **Noe's API and internals**. To write a good/reusable one, you'll
225
- certainly have to **master the full ecosystem and best practices of the targetted product**,
226
- which is a good opportunity for learning and sharing it!
227
-
228
- ### Magic Only If Flexible
229
-
230
- "Don't Repeat Yourself" and "Convention over Configuration" are certainly good principles.
231
- However tuning, configuration and options exist, are useful and should certainly not be
232
- hidden to the user. Instead configuration and options should come with default values,
233
- and should be fully documented. Providing magic is great if there is a user-centric way
234
- (in contrast to a developer one) of understanding and controlling the magic and underlying
235
- assumptions.
236
-
237
- As an example, the default ruby template comes with some magic: you can create a project
238
- and immediately invoke 'rake test', 'rake yard', ... and not investigating further. You
239
- can also have a look at the _tasks_ folder to understand and control the rake tasks that
240
- your project will use... In fact, you **must** investigate: the generated product is yours,
241
- not mine and YOU have to master your build chain!
242
-
243
- ## Ruby skeleton and Related projects
244
-
245
- Noe is inspired by existing projects, mostly from the ruby community. In particular, the
246
- default ruby template has been heavily influenced by the projects below as well as feedback
247
- of their authors:
248
-
249
- * [hoe](http://seattlerb.rubyforge.org/hoe/), Ryan Davis and Eric Hodel
250
- * [echoe](https://github.com/fauna/echoe), Evan Weaver
251
- * [bones](https://github.com/TwP/bones), Tim Pease
252
-
253
- These projects help you generating and maintaining ruby projects (generally gem libraries,
254
- in fact). All provide powerful tools that supports you along the different steps of your
255
- ruby software lifecycle (creating, testing, releasing, announcing, and so on.). They mostly
256
- differ in the way you can tune/configure the generated project for specific needs.
257
-
258
- These projects differ from the Ruby skeleton proposed by Noe in that they use a control
259
- approach (rake tasks installed in your project via a development/runtime dependency) while
260
- Noe uses a generative approach (the generated ruby project and rake tasks do not depend on
261
- Noe at all).
262
-
263
- You'll find more information about the Noe's ruby skeleton in it's own
264
- [README](https://github.com/blambeau/noe/blob/master/templates/ruby/README.md).
265
-
266
- ## Short guide for template maintainers
267
-
268
- Under ~/.noe, a valid template folder (say xxx) has the following structure
269
-
270
- xxx # Template name
271
- README(.md|.txt|...) # Information about the template and it's usage
272
- CHANGELOG(.md|.txt|...) # Change information
273
- noespec.yaml # Template specification
274
- src # Source folder, contains files to be instantiated
275
- ... # [everything that will be instantiated]
276
-
277
- ### noespec.yaml
278
-
279
- The noespec.yaml file of a template is used to formally describe the template. When a
280
- project (say foo) is created (see 'noe prepare') using a template (say ruby) the file
281
- ~/.noe/ruby/noespec.yaml is used to generate foo/foo.noespec. The later is then used
282
- by 'noe go' to instantiate the project.
283
-
284
- The noespec.yaml file should ressemble something like this:
285
-
286
- # DO NOT TOUCH 'name' entry and specify the other
287
- template-info:
288
- name: !{template_name}
289
- summary: ...
290
- description: ...
291
- version: ...
292
- author: ...
293
-
294
- #
295
- # The following is a hash of template-related variables. They are
296
- # used to provide dynamic file names and instantiate file contents.
297
- #
298
- # Current version of Noe only supports variable names matching /[a-z]+/
299
- #
300
- variables:
301
- ...
302
-
303
- Have a look at ~/.noe/ruby/noespec.yaml and ~/.noe/ruby/src for an example.
304
-
305
- ### Instantiation process
306
-
307
- The instantiation process is really simple. Given the variables described in the
308
- noespec.yaml file (for which values are specified in your .noespec file) templates
309
- can use the following meta-constructions:
310
-
311
- * Template files and directories containing `__variable__` in their name are automatically
312
- renamed (`__variable__` is replaced by the corresponding value).
313
- * All template files are instantiated by [wlang](https://github.com/blambeau/wlang). You
314
- don't have to know wlang in depth. You simply have to know that `!{ruby_expression}` in
315
- a file is replaced by the expression evaluation. Variables are automatically in scope
316
- of such expressions, so that `!{variable}` is replaced by its value.
317
-
318
- ## Contributing
319
-
320
- Fork Noe on github! I'm particularly interested in the following enhancements:
321
-
322
- * Extend test coverage, which is ugly so far.
323
- * Enhance the default ruby template, but remember "documentation matters, not magic!"
324
- * Add support for other generators than _wlang_
325
- * Add support for multi-generated files from arrays in .noespec files
326
- * ...
327
-
328
- If you think that your template is worth considering for (ruby, rails, js, latex, or
329
- anything else) please let me known and I'll add it to the list below.
330
-
331
- * ...
332
-
163
+ requirement: *id009
164
+ description: Noe is a tool that generates project skeletons from predefined templates. A template is designed for a specific product (a ruby library, a static or dynamic web site, ...). Noe instantiates templates and helps you maintaining your product via meta-information provided by a .noespec yaml file. In contrast to other tools, Noe is not specific to certain kinds of products. Writing your own template is possible and even simple!
333
165
  email:
334
166
  - blambeau@gmail.com
335
167
  executables:
@@ -341,10 +173,10 @@ extra_rdoc_files:
341
173
  - CHANGELOG.md
342
174
  - LICENCE.md
343
175
  files:
344
- - ./noe.gemspec
176
+ - ./bin/noe
345
177
  - ./CHANGELOG.md
346
178
  - ./Gemfile
347
- - ./bin/noe
179
+ - ./Gemfile.lock
348
180
  - ./lib/noe/commons.rb
349
181
  - ./lib/noe/config.rb
350
182
  - ./lib/noe/config.yaml
@@ -361,6 +193,9 @@ files:
361
193
  - ./lib/noe/template.rb
362
194
  - ./lib/noe.rb
363
195
  - ./LICENCE.md
196
+ - ./Manifest.txt
197
+ - ./noe.gemspec
198
+ - ./noe.noespec
364
199
  - ./Rakefile
365
200
  - ./README.md
366
201
  - ./spec/ext/hash/methodize_spec.rb
@@ -369,6 +204,8 @@ files:
369
204
  - ./spec/template/entry/infer_wlang_dialect_spec.rb
370
205
  - ./spec/template/entry/relocate_spec.rb
371
206
  - ./spec/template/entry/rename_one_spec.rb
207
+ - ./tasks/debug_mail.rake
208
+ - ./tasks/debug_mail.txt
372
209
  - ./tasks/gem.rake
373
210
  - ./tasks/spec_test.rake
374
211
  - ./tasks/unit_test.rake
@@ -388,6 +225,8 @@ files:
388
225
  - ./templates/ruby/src/README.md
389
226
  - ./templates/ruby/src/spec/__lower___spec.rb
390
227
  - ./templates/ruby/src/spec/spec_helper.rb
228
+ - ./templates/ruby/src/tasks/debug_mail.rake
229
+ - ./templates/ruby/src/tasks/debug_mail.txt
391
230
  - ./templates/ruby/src/tasks/gem.rake
392
231
  - ./templates/ruby/src/tasks/spec_test.rake
393
232
  - ./templates/ruby/src/tasks/unit_test.rake
@@ -443,7 +282,7 @@ rubyforge_project:
443
282
  rubygems_version: 1.4.2
444
283
  signing_key:
445
284
  specification_version: 3
446
- summary: Noe is a tool that generates projects from predefined skeletons (aka project/application templates). Skeletons are designed for building specific products (a ruby library, a static or dynamic web site, ...). Noe instantiates them and helps you maintaining your product via meta-information provided by a .noespec yaml file.
285
+ summary: Noe is a simple, general-purpose and extensible skeleton generator from project templates
447
286
  test_files:
448
287
  - spec/ext/hash/methodize_spec.rb
449
288
  - spec/noe_spec.rb