noe 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/CHANGELOG.md +6 -0
  2. data/Gemfile +1 -2
  3. data/Gemfile.lock +3 -2
  4. data/lib/noe.rbc +393 -0
  5. data/lib/noe/commons.rbc +1012 -0
  6. data/lib/noe/config.rbc +1534 -0
  7. data/lib/noe/ext/array.rbc +330 -0
  8. data/lib/noe/ext/hash.rbc +1193 -0
  9. data/lib/noe/go.rbc +5618 -0
  10. data/lib/noe/help.rbc +473 -0
  11. data/lib/noe/install.rbc +1521 -0
  12. data/lib/noe/list.rbc +1692 -0
  13. data/lib/noe/loader.rb +1 -1
  14. data/lib/noe/loader.rbc +85 -0
  15. data/lib/noe/main.rbc +1323 -0
  16. data/lib/noe/prepare.rb +14 -7
  17. data/lib/noe/prepare.rbc +1622 -0
  18. data/lib/noe/show_spec.rbc +627 -0
  19. data/lib/noe/template.rbc +4256 -0
  20. data/lib/noe/version.rb +5 -5
  21. data/lib/noe/version.rbc +350 -0
  22. data/noe.gemspec +25 -25
  23. data/noe.noespec +3 -3
  24. data/spec/fixtures/test.noespec +19 -0
  25. data/spec/integration/go/go_spec.rbc +236 -0
  26. data/spec/integration/spaces_spec.rb +30 -0
  27. data/spec/integration/spaces_spec.rbc +996 -0
  28. data/spec/integration/spec_helper.rbc +143 -0
  29. data/spec/unit/config/new_spec.rbc +1590 -0
  30. data/spec/unit/config/templates_dir_spec.rbc +1398 -0
  31. data/spec/unit/ext/hash/methodize_spec.rbc +851 -0
  32. data/spec/unit/ext/hash/noe_merge_spec.rbc +1544 -0
  33. data/spec/unit/noe_spec.rbc +309 -0
  34. data/spec/unit/spec_helper.rbc +143 -0
  35. data/spec/unit/template/entry/infer_wlang_dialect_spec.rbc +1236 -0
  36. data/spec/unit/template/entry/relocate_spec.rbc +1584 -0
  37. data/spec/unit/template/entry/rename_one_spec.rbc +1114 -0
  38. data/tasks/debug_mail.rake +13 -13
  39. data/tasks/gem.rake +13 -13
  40. data/tasks/spec_test.rake +10 -10
  41. data/tasks/unit_test.rake +9 -10
  42. data/tasks/yard.rake +13 -13
  43. data/templates/ruby/CHANGELOG.md +5 -0
  44. data/templates/ruby/README.md +13 -13
  45. data/templates/ruby/noespec.yaml +48 -48
  46. data/templates/ruby/short.yaml +10 -10
  47. data/templates/ruby/src/Gemfile +1 -2
  48. data/templates/ruby/src/Manifest.txt +1 -1
  49. data/templates/ruby/src/README.md +0 -1
  50. data/templates/ruby/src/__lower__.gemspec +24 -24
  51. data/templates/ruby/src/lib/__lower__.rb +1 -1
  52. data/templates/ruby/src/lib/__lower__/loader.rb +1 -1
  53. data/templates/ruby/src/lib/__lower__/version.rb +4 -4
  54. data/templates/ruby/src/spec/test___lower__.rb +2 -2
  55. data/templates/ruby/src/tasks/debug_mail.rake +13 -13
  56. data/templates/ruby/src/tasks/gem.rake +13 -13
  57. data/templates/ruby/src/tasks/spec_test.rake +9 -9
  58. data/templates/ruby/src/tasks/unit_test.rake +9 -10
  59. data/templates/ruby/src/tasks/yard.rake +13 -13
  60. metadata +125 -75
@@ -4,7 +4,7 @@
4
4
  # Don't remove this entry!
5
5
  template-info:
6
6
  name: "!{template_name}"
7
- version: 1.5.0
7
+ version: 1.5.1
8
8
  links:
9
9
  source: https://github.com/blambeau/noe/tree/master/templates/ruby
10
10
  documentation: https://github.com/blambeau/noe/blob/master/templates/ruby/README.md
@@ -12,17 +12,17 @@ template-info:
12
12
  # Update to match your own configuration.
13
13
  variables:
14
14
  # A ruby lower case project name.
15
- lower:
15
+ lower:
16
16
  hello_world
17
17
 
18
- # A ruby upper case project name.
18
+ # A ruby upper case project name.
19
19
  upper:
20
20
  HelloWorld
21
21
 
22
22
  # Version of your library
23
23
  version:
24
24
  1.0.0
25
-
25
+
26
26
  # Project summary (~ 1 line).
27
27
  summary: |-
28
28
  A simple "Hello World" example
@@ -32,22 +32,22 @@ variables:
32
32
  description: |-
33
33
  This hello_world example provides you all you need to build a ruby gem library
34
34
  while applying skeleton-driven coding with Noe (see http://revision-zero.org/noe)
35
-
36
- # Authors of the project (- {name: Bob, email: bob@gmail.com}, ...)
35
+
36
+ # Authors of the project (- {name: Bob, email: bob@gmail.com}, ...)
37
37
  authors: []
38
38
 
39
- # Web links for the project (- http://..., - http://...).
39
+ # Web links for the project (- http://..., - http://...).
40
40
  links: []
41
41
 
42
42
  # Gem dependencies. (- {name: ..., version: ..., groups: [...]}, ...)
43
- dependencies:
43
+ dependencies:
44
44
  # Rake is required for developers, as usual
45
45
  - {name: rake, version: "~> 0.9.2", groups: [development]}
46
46
  # Bundler is required for developers and is used by the Rakefile
47
47
  - {name: bundler, version: "~> 1.0", groups: [development]}
48
- # RSpec is required to run 'rake spec'. See tasks/spec.rake
48
+ # RSpec is required to run 'rake spec'. See tasks/spec.rake
49
49
  - {name: rspec, version: "~> 2.6.0", groups: [development]}
50
- # YARD and BlueCloth are required to run 'rake yard'. See tasks/yard.rake
50
+ # YARD and BlueCloth are required to run 'rake yard'. See tasks/yard.rake
51
51
  - {name: yard, version: "~> 0.7.2", groups: [development]}
52
52
  - {name: bluecloth, version: "~> 2.1.0", groups: [development]}
53
53
  # wlang is required to run 'rake debug_mail'. See tasks/debug_mail.rake
@@ -2,5 +2,4 @@ source 'http://rubygems.org'
2
2
  *{dependencies.collect{|d| d.groups}.flatten.uniq as g}{
3
3
  group +{g.to_sym} do
4
4
  *{dependencies.select{|d| d.groups.include?(g)} as d}{gem +{d.name}, +{d.version}}{!{"\n "}}
5
- end
6
- }
5
+ end}{!{"\n"}}
@@ -12,4 +12,4 @@ Rakefile
12
12
  README.md
13
13
  spec/**/*
14
14
  tasks/**/*
15
- test/**/*
15
+ test/**/*
@@ -5,4 +5,3 @@
5
5
  ## Links
6
6
 
7
7
  !{links.join("\n")}
8
-
@@ -1,4 +1,4 @@
1
- # We require your library, mainly to have access to the VERSION number.
1
+ # We require your library, mainly to have access to the VERSION number.
2
2
  # Feel free to set $version manually.
3
3
  $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
4
  require "!{lower}/version"
@@ -9,15 +9,15 @@ $version = !{upper}::Version.to_s
9
9
  # should be correctly packaged given what you have described in the .noespec file.
10
10
  #
11
11
  Gem::Specification.new do |s|
12
-
12
+
13
13
  ################################################################### ABOUT YOUR GEM
14
-
15
- # Gem name (required)
14
+
15
+ # Gem name (required)
16
16
  s.name = +{lower}
17
-
17
+
18
18
  # Gem version (required)
19
19
  s.version = $version
20
-
20
+
21
21
  # A short summary of this gem
22
22
  #
23
23
  # This is displayed in `gem list -d`.
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  # The description should be more detailed than the summary. For example,
29
29
  # you might wish to copy the entire README into the description.
30
30
  s.description = +{description}
31
-
31
+
32
32
  # The URL of this gem home page (optional)
33
33
  s.homepage = +{links.first}
34
34
 
@@ -38,7 +38,7 @@ Gem::Specification.new do |s|
38
38
  # you know what you do!
39
39
  #
40
40
  # s.date = Time.now.strftime('%Y-%m-%d')
41
-
41
+
42
42
  # The license(s) for the library. Each license must be a short name, no
43
43
  # more than 64 characters.
44
44
  #
@@ -49,35 +49,35 @@ Gem::Specification.new do |s|
49
49
  # s.rubyforge_project = nil
50
50
 
51
51
  ################################################################### ABOUT THE AUTHORS
52
-
52
+
53
53
  # The list of author names who wrote this gem.
54
54
  #
55
55
  # If you are providing multiple authors and multiple emails they should be
56
56
  # in the same order.
57
- #
57
+ #
58
58
  s.authors = +{authors.collect{|a| a.name}}
59
-
59
+
60
60
  # Contact emails for this gem
61
61
  #
62
62
  # If you are providing multiple authors and multiple emails they should be
63
63
  # in the same order.
64
64
  #
65
- # NOTE: Somewhat strangly this attribute is always singular!
65
+ # NOTE: Somewhat strangly this attribute is always singular!
66
66
  # Don't replace by s.emails = ...
67
67
  s.email = +{authors.collect{|a| a.email}}
68
68
 
69
69
  ################################################################### PATHS, FILES, BINARIES
70
-
71
- # Paths in the gem to add to $LOAD_PATH when this gem is
70
+
71
+ # Paths in the gem to add to $LOAD_PATH when this gem is
72
72
  # activated (required).
73
73
  #
74
74
  # The default 'lib' is typically sufficient.
75
75
  s.require_paths = +{gemspec.require_paths}
76
-
76
+
77
77
  # Files included in this gem.
78
78
  #
79
79
  # By default, we take all files included in the Manifest.txt file on root
80
- # of the project. Entries of the manifest are interpreted as Dir[...]
80
+ # of the project. Entries of the manifest are interpreted as Dir[...]
81
81
  # patterns so that lazy people may use wilcards like lib/**/*
82
82
  #
83
83
  here = File.expand_path(File.dirname(__FILE__))
@@ -107,7 +107,7 @@ Gem::Specification.new do |s|
107
107
  # <= Less than or equal to
108
108
  # ~> Approximately greater than
109
109
  #
110
- # Don't forget to have a look at http://lmgtfy.com/?q=Ruby+Versioning+Policies
110
+ # Don't forget to have a look at http://lmgtfy.com/?q=Ruby+Versioning+Policies
111
111
  # for setting your gem version.
112
112
  #
113
113
  # For your requirements to other gems, remember that
@@ -119,7 +119,7 @@ Gem::Specification.new do |s|
119
119
 
120
120
  #
121
121
  # One call to add_dependency('gem_name', 'gem version requirement') for each
122
- # runtime dependency. These gems will be installed with your gem.
122
+ # runtime dependency. These gems will be installed with your gem.
123
123
  # One call to add_development_dependency('gem_name', 'gem version requirement')
124
124
  # for each development dependency. These gems are required for developers
125
125
  #
@@ -140,18 +140,18 @@ Gem::Specification.new do |s|
140
140
  #
141
141
  # s.platform = nil
142
142
 
143
- # Extensions to build when installing the gem.
143
+ # Extensions to build when installing the gem.
144
144
  #
145
- # Valid types of extensions are extconf.rb files, configure scripts
145
+ # Valid types of extensions are extconf.rb files, configure scripts
146
146
  # and rakefiles or mkrf_conf files.
147
147
  #
148
148
  s.extensions = +{gemspec.extensions}
149
-
150
- # External (to RubyGems) requirements that must be met for this gem to work.
149
+
150
+ # External (to RubyGems) requirements that must be met for this gem to work.
151
151
  # It’s simply information for the user.
152
152
  #
153
153
  s.requirements = +{gemspec.requirements}
154
-
154
+
155
155
  # A message that gets displayed after the gem is installed
156
156
  #
157
157
  # Uncomment and set this if you want to say something to the user
@@ -169,7 +169,7 @@ Gem::Specification.new do |s|
169
169
  # details.
170
170
  #
171
171
  # s.cert_chain = []
172
-
172
+
173
173
  ################################################################### RDOC
174
174
 
175
175
  # An ARGV style array of options to RDoc
@@ -2,7 +2,7 @@
2
2
  # !{summary}
3
3
  #
4
4
  module !{upper}
5
-
5
+
6
6
  end # module !{upper}
7
7
  require "!{lower}/version"
8
8
  require "!{lower}/loader"
@@ -1 +1 @@
1
- *{dependencies.select{|dep| dep.groups.include?('runtime')} as dep}{require +{dep.name}}{!{"\n"}}
1
+ *{dependencies.select{|dep| dep.groups.include?('runtime')} as dep}{require +{dep.name}}{!{"\n"}}
@@ -1,14 +1,14 @@
1
1
  module !{upper}
2
2
  module Version
3
-
3
+
4
4
  MAJOR = +{version.split('.')[0].to_i}
5
5
  MINOR = +{version.split('.')[1].to_i}
6
6
  TINY = +{version.split('.')[2].to_i}
7
-
7
+
8
8
  def self.to_s
9
9
  [ MAJOR, MINOR, TINY ].join('.')
10
10
  end
11
-
12
- end
11
+
12
+ end
13
13
  VERSION = Version.to_s
14
14
  end
@@ -1,8 +1,8 @@
1
1
  require File.expand_path('../spec_helper', __FILE__)
2
2
  describe !{upper} do
3
-
3
+
4
4
  it "should have a version number" do
5
5
  !{upper}.const_defined?(:VERSION).should be_true
6
6
  end
7
-
7
+
8
8
  end
@@ -1,8 +1,8 @@
1
1
  # Installs a rake task for debuging the announcement mail.
2
2
  #
3
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,
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
6
  # under the variables/rake_tasks/debug_mail entry, as illustrated below:
7
7
  #
8
8
  # variables:
@@ -12,9 +12,9 @@
12
12
  # nb_changelog_sections: 1
13
13
  # ...
14
14
  #
15
- # If you have specific needs requiring manual intervention on this file,
15
+ # If you have specific needs requiring manual intervention on this file,
16
16
  # don't forget to set safe-override to false in your noe specification:
17
- #
17
+ #
18
18
  # template-info:
19
19
  # manifest:
20
20
  # tasks/debug_mail.rake:
@@ -22,8 +22,8 @@
22
22
  #
23
23
  # The mail template used can be found in debug_mail.txt. That file may be
24
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
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
27
  # delimiters.
28
28
  #
29
29
  # template-info:
@@ -34,20 +34,20 @@
34
34
  begin
35
35
  require 'wlang'
36
36
  require 'yaml'
37
-
37
+
38
38
  desc "Debug the release announcement mail"
39
- task :debug_mail do
39
+ task :debug_mail do
40
40
  # Check that a .noespec file exists
41
41
  noespec_file = File.expand_path('../../!{lower}.noespec', __FILE__)
42
42
  unless File.exists?(noespec_file)
43
43
  raise "Unable to find .noespec project file, sorry."
44
44
  end
45
-
45
+
46
46
  # Load it as well as variables and options
47
47
  noespec = YAML::load(File.read(noespec_file))
48
48
  vars = noespec['variables'] || {}
49
49
 
50
- # Changes are taken from CHANGELOG
50
+ # Changes are taken from CHANGELOG
51
51
  logs = Dir[File.expand_path("../../CHANGELOG.*", __FILE__)]
52
52
  unless logs.size == 1
53
53
  abort "Unable to find a changelog file"
@@ -63,15 +63,15 @@ begin
63
63
  changes << line
64
64
  }
65
65
  vars['changes'] = changes.join
66
-
66
+
67
67
  # WLang template
68
68
  template = File.expand_path('../debug_mail.txt', __FILE__)
69
-
69
+
70
70
  # Let's go!
71
71
  $stdout << WLang::file_instantiate(template, vars, "wlang/active-text")
72
72
  end
73
73
 
74
- rescue LoadError
74
+ rescue LoadError
75
75
  task :debug_mail do
76
76
  abort "wlang is not available. Try 'gem install wlang'"
77
77
  end
@@ -1,8 +1,8 @@
1
1
  # Installs rake tasks for gemming and packaging
2
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
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
6
  # the variables/rake_tasks/gem entry, as illustrated below:
7
7
  #
8
8
  # variables:
@@ -15,9 +15,9 @@
15
15
  # need_zip: false
16
16
  # ...
17
17
  #
18
- # If you have specific needs requiring manual intervention on this file,
18
+ # If you have specific needs requiring manual intervention on this file,
19
19
  # don't forget to set safe-override to false in your noe specification:
20
- #
20
+ #
21
21
  # template-info:
22
22
  # manifest:
23
23
  # tasks/gem.rake:
@@ -32,28 +32,28 @@ begin
32
32
 
33
33
  # Version of the package
34
34
  t.version = $gemspec.version
35
-
35
+
36
36
  # Directory used to store the package files
37
37
  t.package_dir = +{rake_tasks.gem.package_dir}
38
-
38
+
39
39
  # True if a gzipped tar file (tgz) should be produced
40
40
  t.need_tar = +{rake_tasks.gem.need_tar}
41
-
41
+
42
42
  # True if a gzipped tar file (tar.gz) should be produced
43
43
  t.need_tar_gz = +{rake_tasks.gem.need_tar_gz}
44
-
44
+
45
45
  # True if a bzip2'd tar file (tar.bz2) should be produced
46
46
  t.need_tar_bz2 = +{rake_tasks.gem.need_tar_bz2}
47
-
47
+
48
48
  # True if a zip file should be produced (default is false)
49
49
  t.need_zip = +{rake_tasks.gem.need_zip}
50
-
50
+
51
51
  # List of files to be included in the package.
52
52
  t.package_files = $gemspec.files
53
-
53
+
54
54
  # Tar command for gzipped or bzip2ed archives.
55
55
  t.tar_command = +{rake_tasks.gem.tar_command}
56
-
56
+
57
57
  # Zip command for zipped archives.
58
58
  t.zip_command = +{rake_tasks.gem.zip_command}
59
59
 
@@ -1,8 +1,8 @@
1
1
  # Installs a rake task for for running examples written using rspec.
2
2
  #
3
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,
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
6
  # under the variables/rake_tasks/spec_test entry, as illustrated below:
7
7
  #
8
8
  # variables:
@@ -13,16 +13,16 @@
13
13
  # rspec_opts: [--color, --backtrace]
14
14
  # ...
15
15
  #
16
- # If you have specific needs requiring manual intervention on this file,
16
+ # If you have specific needs requiring manual intervention on this file,
17
17
  # don't forget to set safe-override to false in your noe specification:
18
- #
18
+ #
19
19
  # template-info:
20
20
  # manifest:
21
21
  # tasks/spec_test.rake:
22
22
  # safe-override: false
23
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
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
26
  # http://relishapp.com/rspec
27
27
  #
28
28
  begin
@@ -33,14 +33,14 @@ begin
33
33
  t.pattern = +{rake_tasks.spec_test.pattern}
34
34
 
35
35
  # By default, if there is a Gemfile, the generated command will include
36
- # 'bundle exec'. Set this to true to ignore the presence of a Gemfile,
36
+ # 'bundle exec'. Set this to true to ignore the presence of a Gemfile,
37
37
  # and not add 'bundle exec' to the command.
38
38
  t.skip_bundler = +{rake_tasks.spec_test.skip_bundler}
39
39
 
40
40
  # Name of Gemfile to use
41
41
  t.gemfile = +{rake_tasks.spec_test.gemfile}
42
42
 
43
- # Whether or not to fail Rake when an error occurs (typically when
43
+ # Whether or not to fail Rake when an error occurs (typically when
44
44
  # examples fail).
45
45
  t.fail_on_error = +{rake_tasks.spec_test.fail_on_error}
46
46
 
@@ -60,7 +60,7 @@ begin
60
60
  # Command line options to pass to rcov. See 'rcov --help' about this
61
61
  t.rcov_opts = +{rake_tasks.spec_test.rcov_opts}
62
62
 
63
- # Command line options to pass to ruby. See 'ruby --help' about this
63
+ # Command line options to pass to ruby. See 'ruby --help' about this
64
64
  t.ruby_opts = +{rake_tasks.spec_test.ruby_opts}
65
65
 
66
66
  # Path to rspec