simple-templater 0.0.1.6 → 0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/Gemfile +2 -5
  2. data/LICENSE +1 -1
  3. data/Rakefile +33 -0
  4. data/bin/simple-templater +6 -10
  5. data/lib/simple-templater/builder.rb +5 -5
  6. data/lib/simple-templater/generator.rb +4 -4
  7. data/lib/simple-templater/generator_set.rb +1 -1
  8. data/lib/simple-templater/helpers.rb +2 -2
  9. data/lib/simple-templater/hooks/hook.rb +2 -2
  10. data/lib/simple-templater/version.rb +7 -0
  11. data/lib/simple-templater.rb +0 -8
  12. data/simple-templater.gemspec +4 -15
  13. data/simple-templater.pre.gemspec +33 -4
  14. data/spec/stubs/test_generator/test_generator.gemspec +1 -1
  15. data/stubs/project/content/%name%.gemspec.rbt +7 -17
  16. data/stubs/project/content/CHANGELOG +1 -1
  17. data/stubs/project/content/README.textile.rbt +2 -2
  18. data/stubs/project/content/Rakefile +39 -0
  19. data/stubs/project/content/bin/%name%.rbt +0 -1
  20. data/stubs/project/content/lib/%name%.rb.rbt +1 -0
  21. data/stubs/project/content/spec/spec_helper.rb.rbt +8 -4
  22. data/tasks/benchmark.rake +11 -0
  23. data/tasks/gem.rake +23 -0
  24. data/tasks/hooks.rake +12 -0
  25. data/tasks/release.rake +68 -0
  26. data/tasks/spec.rake +27 -0
  27. data/tasks/submodules.rake +33 -0
  28. data/tasks/yardoc.rake +9 -0
  29. metadata +89 -111
  30. data/.gitignore +0 -9
  31. data/gems/cache/abstract-1.0.0.gem +0 -0
  32. data/gems/cache/erubis-2.6.5.gem +0 -0
  33. data/gems/cache/haml-2.2.16.gem +0 -0
  34. data/gems/cache/nake-0.0.8.gem +0 -0
  35. data/gems/cache/rspec-1.2.9.gem +0 -0
  36. data/gems/cache/term-ansicolor-1.0.4.gem +0 -0
  37. data/stubs/project/content/%name%.pre.gemspec.rbt +0 -8
  38. data/stubs/project/content/.gitignore +0 -12
  39. data/stubs/project/content/Gemfile +0 -8
  40. data/stubs/project/content/examples/.gitignore +0 -0
  41. data/stubs/project/content/lib/%name%/.gitignore +0 -0
  42. data/stubs/project/content/lib/%name%/version.rb.rbt +0 -5
  43. data/stubs/project/content/spec/%name%/.gitignore +0 -0
  44. data/stubs/project/content/tasks/%name%.nake +0 -0
  45. data/stubs/project/content/tasks.rb.rbt +0 -38
  46. data/stubs/stub/content/content/.gitignore +0 -0
  47. data/tasks.rb +0 -38
data/Gemfile CHANGED
@@ -1,10 +1,5 @@
1
- # configuration
2
1
  bundle_path "gems"
3
- bin_path "script"
4
- disable_rubygems
5
2
 
6
- # gems
7
- gem "nake"
8
3
  gem "erubis"
9
4
 
10
5
  gem "haml"
@@ -13,3 +8,5 @@ gem "erubis"
13
8
  only(:test) do
14
9
  gem "rspec"
15
10
  end
11
+
12
+ bin_path "script"
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 – 2010 Jakub Šťastný aka Botanicus
1
+ Copyright (c) 2009 Jakub Šťastný aka Botanicus
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative "lib/simple-templater/version"
4
+
5
+ # ENV setup for external commands
6
+ ENV["RUBYLIB"] = Dir["gems/gems/*/lib"].join(":")
7
+ $LOAD_PATH.clear.push(*Dir["gems/gems/*/lib"])
8
+
9
+ # encoding
10
+ Encoding.default_internal = "utf-8"
11
+ Encoding.default_external = "utf-8"
12
+
13
+ # http://support.runcoderun.com/faqs/builds/how-do-i-run-rake-with-trace-enabled
14
+ Rake.application.options.trace = true
15
+
16
+ task :bundle do
17
+ # NOTE: the sense of the checkout is to avoid overwriting our changes in scripts
18
+ exec "gem bundle --cached && git checkout script"
19
+ end
20
+
21
+ # default task for RunCodeRun.com
22
+ task :default => [:bundle, :spec]
23
+
24
+ # load tasks
25
+ Dir["tasks/*.rake"].each do |taskfile|
26
+ begin
27
+ load File.join(Dir.pwd, taskfile)
28
+ rescue Exception => exception
29
+ puts "Exception #{exception.class} occured during loading #{taskfile}:"
30
+ puts exception.message
31
+ puts exception.backtrace
32
+ end
33
+ end
data/bin/simple-templater CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env ruby1.9
2
2
  # encoding: utf-8
3
3
 
4
4
  # --list (scope): list all generators available for given scope or just list all generators
@@ -37,21 +37,17 @@ require "simple-templater"
37
37
  def usage
38
38
  <<-HELP
39
39
  === Usage ===
40
- simple-templater create project mycoolproject Generate new site
41
- simple-templater create app mycoolapp Generate new application
40
+ rango create project mycoolproject Generate new site
41
+ rango create app mycoolapp Generate new application
42
42
  HELP
43
43
  end
44
44
 
45
45
  begin
46
- begin
47
- ARGV.shift # create
48
- rescue
49
- usage
50
- end
51
- generator_name = ARGV.shift || abort(usage)
46
+ ARGV.shift # create
47
+ generator_name = ARGV.shift
52
48
  templater = SimpleTemplater.new(:simple_templater)
53
49
  # This enables you to create custom generators for Rango
54
- load File.join(File.dirname(__FILE__), "../simple-templater.scope") # neccesary if we run rango locally and not from RubyGems
50
+ load "simple-templater.scope" # neccesary if we run rango locally and not from RubyGems
55
51
  templater.discover!
56
52
  generator_set = templater.find(generator_name)
57
53
  if generator_set.nil?
@@ -21,7 +21,7 @@ class SimpleTemplater
21
21
  class Builder
22
22
  def self.create(*args)
23
23
  templater = self.new(*args)
24
- puts "Context: #{templater.context.inspect}"
24
+ puts("Context: #{templater.context.inspect}")
25
25
  templater.create
26
26
  end
27
27
 
@@ -84,9 +84,9 @@ class SimpleTemplater
84
84
 
85
85
  if template.end_with?(".rbt")
86
86
  if File.exist?(file)
87
- puts "[RETEMPLATE] #{file} (from #{template})"
87
+ puts("[RETEMPLATE] #{file} (from #{template})")
88
88
  else
89
- puts "[TEMPLATE] #{file} (from #{template})"
89
+ puts("[TEMPLATE] #{file} (from #{template})")
90
90
  end
91
91
  File.open(file, "w") do |file|
92
92
  eruby = Erubis::Eruby.new(File.read(template))
@@ -104,10 +104,10 @@ class SimpleTemplater
104
104
  # do nothing
105
105
  # it shouldn't get here never, we have File.directory? above
106
106
  elsif File.file?(file)
107
- puts "[RECOPY] #{file} (from #{template})"
107
+ puts("[RECOPY] #{file} (from #{template})")
108
108
  FileUtils.cp_f(template, file)
109
109
  else
110
- puts "[COPY] #{file} (from #{template})"
110
+ puts("[COPY] #{file} (from #{template})")
111
111
  FileUtils.cp(template, file)
112
112
  end
113
113
  end
@@ -65,9 +65,9 @@ class SimpleTemplater
65
65
  if self.full? && Dir.exist?(self.target) # has to run after setup.rb hook, because setup.rb can manipulate with target
66
66
  raise TargetAlreadyExist, "#{self.target} already exist, aborting."
67
67
  end
68
- puts "[#{self.name} generator] Running before hooks #{self.before_hooks.inspect}"
68
+ puts("[#{self.name} generator] Running before hooks #{self.before_hooks.inspect}")
69
69
  self.run_hooks(:before)
70
- puts "[#{self.name} generator] Creating #{@target} (#{self.config.type})"
70
+ puts("[#{self.name} generator] Creating #{@target} (#{self.config.type})")
71
71
  if self.flat?
72
72
  # flat/content/flat.ru.rbt
73
73
  # flat/content/%user%.rb
@@ -85,9 +85,9 @@ class SimpleTemplater
85
85
 
86
86
  def run_hook(basename)
87
87
  if File.exist?(hook = file(basename))
88
- puts "Running #{basename} hook"
88
+ puts("Running #{basename} hook")
89
89
  DSL.new(self).instance_eval(File.read(hook))
90
- puts "Finished"
90
+ puts("Finished")
91
91
  end
92
92
  rescue Exception => exception
93
93
  abort "Exception #{exception.inspect} occured during running #{basename}\n#{exception.backtrace.join("\n")}"
@@ -19,7 +19,7 @@ class SimpleTemplater
19
19
  end
20
20
 
21
21
  def custom
22
- File.join(ENV["HOME"], ".simple-templater", self.name.to_s)
22
+ File.join(ENV["HOME"], ".simple-templater", self.name)
23
23
  end
24
24
 
25
25
  def generators
@@ -6,7 +6,7 @@ class SimpleTemplater
6
6
  module Helpers
7
7
  extend self
8
8
 
9
- def shebang(executable = ruby_basename, *args)
9
+ def shebang(executable = rubypath, *args)
10
10
  if RUBY_PLATFORM.match(/darwin/)
11
11
  self.env_shebang(executable, args)
12
12
  else
@@ -14,7 +14,7 @@ class SimpleTemplater
14
14
  end
15
15
  end
16
16
 
17
- def plain_shebang(executable = ruby_basename, *args)
17
+ def plain_shebang(executable = rubypath, *args)
18
18
  "#!#{executable} #{args.join(" ")}".chomp(" ")
19
19
  end
20
20
 
@@ -37,11 +37,11 @@ class SimpleTemplater
37
37
  def self.invoke(context)
38
38
  hook = self.new(context)
39
39
  if hook.will_run?
40
- puts "Running hook #{self}"
40
+ puts("Running hook #{self}")
41
41
  hook.run
42
42
  return true
43
43
  else
44
- puts "Skipping hook #{self}"
44
+ puts("Skipping hook #{self}")
45
45
  return false
46
46
  end
47
47
  end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ # NOTE: Do not edit this file manually, this
4
+ # file is regenerated by task rake version:increase
5
+ module SimpleTemplater
6
+ VERSION ||= "0.0.1.4"
7
+ end
@@ -1,19 +1,11 @@
1
1
  #!/usr/bin/env ruby -Ivendor/erubis/lib:vendor/abstract/lib:vendor/cli/lib
2
2
  # encoding: utf-8
3
3
 
4
- class Hash
5
- def reverse_merge!(hash)
6
- self.replace(hash.merge(self))
7
- end
8
- end
9
-
10
4
  require "simple-templater/core_exts"
11
5
  require "simple-templater/discoverer"
12
6
  require "simple-templater/generator_set"
13
7
 
14
8
  class SimpleTemplater
15
- VERSION ||= "0.0.1.6"
16
-
17
9
  GeneratorNotFound ||= Class.new(StandardError)
18
10
  TargetAlreadyExist ||= Class.new(StandardError)
19
11
 
@@ -2,8 +2,7 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  # NOTE: we can't use require_relative because when we run gem build, it use eval for executing this file
5
- require File.join(File.dirname(__FILE__), "lib", "simple-templater")
6
- require "base64"
5
+ require File.join(File.dirname(__FILE__), "lib", "simple-templater", "version")
7
6
 
8
7
  Gem::Specification.new do |s|
9
8
  s.name = "simple-templater"
@@ -13,13 +12,12 @@ Gem::Specification.new do |s|
13
12
  s.summary = "SimpleTemplater is dead-simple solution for creating generators."
14
13
  s.description = "SimpleTemplater is dead-simple solution for creating generators. It strongly uses convention over configuration, so you don't have to write loads of code to generate one stupid plain text README."
15
14
  s.cert_chain = nil
16
- s.email = Base64.decode64("c3Rhc3RueUAxMDFpZGVhcy5jeg==\n")
15
+ s.email = ["knava.bestvinensis", "gmail.com"].join("@")
17
16
  s.has_rdoc = true
18
17
 
19
18
  # files
20
- s.files = `git ls-files`.split("\n")
21
-
22
- Dir["bin/*"].map(&File.method(:basename))
19
+ s.files = Dir.glob("**/*") - Dir.glob("pkg/*")
20
+ s.executables = ["simple-templater"]
23
21
  s.default_executable = "simple-templater"
24
22
  s.require_paths = ["lib"]
25
23
 
@@ -28,21 +26,12 @@ Gem::Specification.new do |s|
28
26
 
29
27
  # runtime dependencies
30
28
  s.add_dependency "cli"
31
- s.add_dependency "term-ansicolor"
32
29
  s.add_dependency "erubis" # for generators
33
30
 
34
31
  # development dependencies
35
32
  # use gem install simple-templater --development if you want to install them
36
33
  # s.add_development_dependency "erubis" # for generators
37
34
 
38
- begin
39
- require "changelog"
40
- rescue LoadError
41
- warn "You have to have changelog gem installed for post install message"
42
- else
43
- s.post_install_message = CHANGELOG.new.version_changes
44
- end
45
-
46
35
  # RubyForge
47
36
  s.rubyforge_project = "simple-templater"
48
37
  end
@@ -1,8 +1,37 @@
1
1
  #!/usr/bin/env gem build
2
2
  # encoding: utf-8
3
3
 
4
- # You might think this is a terrible mess and guess what, you're
5
- # right mate! However say thanks to authors of RubyGems, not me.
6
- eval(File.read("simple-templater.gemspec")).tap do |specification|
7
- specification.version = "#{specification.version}.pre"
4
+ # NOTE: we can't use require_relative because when we run gem build, it use eval for executing this file
5
+ require File.join(File.dirname(__FILE__), "lib", "simple-templater", "version")
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "simple-templater"
9
+ s.version = '0.1.pre'
10
+ s.authors = ["Jakub Šťastný aka Botanicus"]
11
+ s.homepage = "http://github.com/botanicus/simple-templater"
12
+ s.summary = "SimpleTemplater is dead-simple solution for creating generators."
13
+ s.description = "SimpleTemplater is dead-simple solution for creating generators. It strongly uses convention over configuration, so you don't have to write loads of code to generate one stupid plain text README."
14
+ s.cert_chain = nil
15
+ s.email = ["knava.bestvinensis", "gmail.com"].join("@")
16
+ s.has_rdoc = true
17
+
18
+ # files
19
+ s.files = Dir.glob("**/*") - Dir.glob("pkg/*")
20
+ s.executables = ["simple-templater"]
21
+ s.default_executable = "simple-templater"
22
+ s.require_paths = ["lib"]
23
+
24
+ # Ruby version
25
+ s.required_ruby_version = ::Gem::Requirement.new("~> 1.9")
26
+
27
+ # runtime dependencies
28
+ s.add_dependency "cli"
29
+ s.add_dependency "erubis" # for generators
30
+
31
+ # development dependencies
32
+ # use gem install simple-templater --development if you want to install them
33
+ # s.add_development_dependency "erubis" # for generators
34
+
35
+ # RubyForge
36
+ s.rubyforge_project = "simple-templater"
8
37
  end
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env gem build
1
+ #!/usr/bin/env gem1.9 build
2
2
  # encoding: utf-8
3
3
 
4
4
  # Run thor package:gem or gem build simple-templater.gemspec
@@ -1,26 +1,24 @@
1
- #!/usr/bin/env gem build
1
+ #!/usr/bin/env gem1.9 build
2
2
  # encoding: utf-8
3
3
 
4
4
  # Run ./<%= @name %>.gemspec or gem build <%= @name %>.gemspec
5
5
  # NOTE: we can't use require_relative because when we run gem build, it use eval for executing this file
6
- require File.join(File.dirname(__FILE__), "lib", "<%= @name %>", "version")
7
- require "base64"
6
+ require File.join(File.dirname(__FILE__), "lib", "<%= @name %>")
8
7
 
9
8
  Gem::Specification.new do |s|
10
9
  s.name = "<%= @name %>"
11
10
  s.version = <%= @constant %>::VERSION
12
- s.authors = ["<%= @full_name %>"]
11
+ s.authors = ["<%= @name %>"]
13
12
  s.homepage = "http://github.com/<%= @github_user %>/<%= @github_repository %>"
14
13
  s.summary = "" # TODO: summary
15
14
  s.description = "" # TODO: long description
16
15
  s.cert_chain = nil
17
- s.email = Base64.decode64() # TODO: your encrypted e-mail
16
+ s.email = # TODO: your mail
18
17
  s.has_rdoc = true
19
18
 
20
19
  # files
21
- s.files = `git ls-files`.split("\n")
22
-
23
- s.executables = Dir["bin/*"].map(&File.method(:basename))
20
+ s.files = Dir.glob("**/*") - Dir.glob("pkg/*")
21
+ s.executables = Dir["bin/*"].map { |script| File.basename(script) }
24
22
  s.default_executable = "<%= @name %>"
25
23
  s.require_paths = ["lib"]
26
24
 
@@ -31,17 +29,9 @@ Gem::Specification.new do |s|
31
29
  # s.add_dependency "my-gem"
32
30
 
33
31
  # development dependencies
34
- # use gem install <%= @name %> --development if you want to install them
32
+ # use gem install rango --development if you want to install them
35
33
  # s.add_development_dependency "simple-templater"
36
34
 
37
- begin
38
- require "changelog"
39
- rescue LoadError
40
- warn "You have to have changelog gem installed for post install message"
41
- else
42
- s.post_install_message = CHANGELOG.new.version_changes
43
- end
44
-
45
35
  # RubyForge
46
36
  s.rubyforge_project = "<%= @name %>"
47
37
  end
@@ -1,2 +1,2 @@
1
1
  = Version 0.0.1
2
- * Initial import
2
+ *
@@ -4,8 +4,8 @@ h1. About
4
4
 
5
5
  h1. Installation
6
6
 
7
- * Prerelease: @gem install <%= @name %> --development --prerelease@
8
- * Stable version: @gem install <%= @name %> --development@
7
+ * Prerelease: @sudo gem install <%= @name %> --development --prerelease@
8
+ * Stable version: @sudo gem install <%= @name %> --development@
9
9
 
10
10
  h1. Usage
11
11
 
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env rake1.9
2
+ # encoding: utf-8
3
+
4
+ # http://support.runcoderun.com/faqs/builds/how-do-i-run-rake-with-trace-enabled
5
+ Rake.application.options.trace = true
6
+
7
+ task :setup => ["submodules:init"]
8
+
9
+ namespace :submodules do
10
+ desc "Init submodules"
11
+ task :init do
12
+ sh "git submodule init"
13
+ end
14
+
15
+ desc "Update submodules"
16
+ task :update do
17
+ Dir["vendor/*"].each do |path|
18
+ if File.directory?(path) && File.directory?(File.join(path, ".git"))
19
+ Dir.chdir(path) do
20
+ puts "=> #{path}"
21
+ puts %x[git clean -fd]
22
+ puts %x[git reset --hard]
23
+ puts %x[git checkout master]
24
+ puts %x[git fetch]
25
+ puts %x[git reset origin/master --hard]
26
+ puts
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ desc "Run specs"
34
+ task :default => :setup do
35
+ rubylib = (ENV["RUBYLIB"] || String.new).split(":")
36
+ libdirs = Dir["vendor/*/lib"]
37
+ ENV["RUBYLIB"] = (libdirs + rubylib).join(":")
38
+ exec "./script/spec --options spec/spec.opts spec"
39
+ end
@@ -11,5 +11,4 @@ end
11
11
 
12
12
  require "<%= @name %>"
13
13
 
14
- # TODO: some default args parsing, --version, --help maybe use optparse or so
15
14
  # TODO: write the code
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module <%= @constant %>
4
+ VERSION ||= "0.0.1"
4
5
  end
@@ -1,7 +1,11 @@
1
1
  # encoding: utf-8
2
2
 
3
- # dependencies
4
- require "spec"
3
+ # constants
4
+ SPEC_ROOT = File.dirname(__FILE__)
5
+ ROOT = File.expand_path(File.join(SPEC_ROOT, ".."))
6
+ LIBDIR = File.join(ROOT, "lib")
5
7
 
6
- # setup load paths
7
- $:.unshift(File.expand_path("../lib"), __FILE__)
8
+ # load paths
9
+ $:.unshift(LIBDIR)
10
+
11
+ require "spec" # so you can run ruby spec/<%= @name %>/whatever_spec.rb
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ # http://github.com/somebee/rbench/tree/master
4
+ desc "Run all benchmarks"
5
+ task :bm do
6
+ abort "Benchmarks doesn't work at the moment"
7
+ require "rbench"
8
+ Dir["#{Dir.pwd}/benchmarks/bm/*.rb"].each do |benchmark|
9
+ load benchmark
10
+ end
11
+ end
data/tasks/gem.rake ADDED
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ desc "Build the gem"
4
+ task :build do
5
+ sh "gem build simple-templater.gemspec"
6
+ end
7
+
8
+ namespace :build do
9
+ desc "Build the prerelease gem"
10
+ task :prerelease do
11
+ gemspec = "simple-templater.gemspec"
12
+ content = File.read(gemspec)
13
+ prename = "#{gemspec.split(".").first}.pre.gemspec"
14
+ # 0.1.1 => 0.2
15
+ version = SimpleTemplater::VERSION.sub(/^(\d+)\.(\d+).*$/) { "#$1.#{$2.to_i + 1}" }
16
+ puts "Current #{SimpleTemplater::VERSION} => #{version} pre"
17
+ File.open(prename, "w") do |file|
18
+ file.puts(content.gsub(/(\w+::VERSION)/, "'#{version}.pre'"))
19
+ end
20
+ sh "gem build #{prename}"
21
+ rm prename
22
+ end
23
+ end
data/tasks/hooks.rake ADDED
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ desc "Install Git hooks"
4
+ task :hooks do
5
+ if Dir.exist?(".git/hooks")
6
+ abort "You must remove .git/hooks first"
7
+ else
8
+ # do not symlink them, otherwise git will add samples
9
+ # FIXME: permissions
10
+ cp_r "support/hooks", ".git/hooks"
11
+ end
12
+ end
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+
3
+ desc "Release new version of simple-templater"
4
+ task release: ["deps.rip", "version:increase", "release:tag", "release:gemcutter"]
5
+
6
+ namespace :version do
7
+ task :increase do
8
+ puts "Which version are you just releasing (previous version is #{SimpleTemplater::VERSION})"
9
+ version = STDIN.gets.chomp
10
+ File.open("lib/simple-templater/version.rb", "w") do |file|
11
+ file.puts <<-EOF
12
+ # encoding: utf-8
13
+
14
+ # NOTE: Do not edit this file manually, this
15
+ # file is regenerated by task rake version:increase
16
+ module SimpleTemplater
17
+ VERSION ||= "#{version}"
18
+ end
19
+ EOF
20
+ end
21
+
22
+ SimpleTemplater.const_set("VERSION", version) # so other release tasks will work
23
+ sh "git commit lib/simple-templater/version.rb -m 'Increased version to #{version}'"
24
+ end
25
+ end
26
+
27
+ namespace :release do
28
+ desc "Create Git tag"
29
+ task :tag do
30
+ puts "Creating new git tag #{SimpleTemplater::VERSION} and pushing it online ..."
31
+ sh "git tag -a -m 'Version #{SimpleTemplater::VERSION}' #{SimpleTemplater::VERSION}"
32
+ sh "git push --tags"
33
+ puts "Tag #{SimpleTemplater::VERSION} was created and pushed to GitHub."
34
+ end
35
+
36
+ desc "Push gem to Gemcutter"
37
+ task :gemcutter => :build do
38
+ puts "Pushing to Gemcutter ..."
39
+ sh "gem push #{Dir["*.gem"].last}"
40
+ end
41
+ end
42
+
43
+ desc "Create and push prerelease gem"
44
+ task :prerelease => "build:prerelease" do
45
+ puts "Pushing to Gemcutter ..."
46
+ sh "gem push #{Dir["*.pre.gem"].last}"
47
+ end
48
+
49
+ dependencies = FileList["vendor/*/.git"].sub(/\/\.git$/, "")
50
+
51
+ desc "Regenerate deps.rip"
52
+ file "deps.rip" => dependencies do
53
+ commits = Hash.new
54
+ commits = dependencies.inject(Hash.new) do |hash, path|
55
+ Dir.chdir(path) do
56
+ revision = %x(git show | head -1).chomp.sub("commit ", "")
57
+ hash[File.basename(path)] = revision
58
+ hash
59
+ end
60
+ end
61
+ template = File.read("deps.rip.rbe")
62
+ deps_rip = eval("%Q{#{template}}")
63
+ File.open("deps.rip", "w") do |file|
64
+ file.puts(deps_rip)
65
+ end
66
+ sh "chmod +x deps.rip"
67
+ sh "git commit deps.rip -m 'Updated deps.rip'"
68
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ desc "Run specs"
4
+ task :spec, :spec do |task, args|
5
+ exec "./script/spec --options spec/spec.opts #{args.spec || "spec"}"
6
+ end
7
+
8
+ desc "Create stubs of all library files."
9
+ task "spec:stubs" do
10
+ Dir.glob("lib/**/*.rb").each do |file|
11
+ specfile = file.sub(/^lib/, "spec").sub(/\.rb$/, '_spec.rb')
12
+ unless File.exist?(specfile)
13
+ %x[mkdir -p #{File.dirname(specfile)}]
14
+ %x[touch #{specfile}]
15
+ puts "Created #{specfile}"
16
+ end
17
+ end
18
+ (Dir.glob("spec/simple-templater/**/*.rb") + ["spec/simple-teplater_spec.rb"]).each do |file|
19
+ libfile = file.sub(/spec/, "lib").sub(/_spec\.rb$/, '.rb')
20
+ if !File.exist?(libfile) && File.zero?(file)
21
+ %x[rm #{file}]
22
+ puts "Removed empty file #{file}"
23
+ elsif !File.exist?(libfile)
24
+ puts "File exists just in spec, not in lib: #{file}"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ # === Helpers === #
4
+ def submodules(&block)
5
+ File.foreach(File.join(File.dirname(__FILE__), "..", ".gitmodules")) do |line|
6
+ if line.match(%r{submodule "(.+)"})
7
+ block.call($1)
8
+ end
9
+ end
10
+ end
11
+
12
+ # === Tasks === #
13
+ namespace :submodules do
14
+ desc "Init submodules"
15
+ task :init do
16
+ sh "git submodule init"
17
+ end
18
+
19
+ desc "Update submodules"
20
+ task :update do
21
+ submodules do |path|
22
+ if File.directory?(path) && File.directory?(File.join(path, ".git"))
23
+ Dir.chdir(path) do
24
+ puts "=> #{path}"
25
+ sh "git reset --hard"
26
+ sh "git fetch"
27
+ sh "git reset origin/master --hard"
28
+ puts
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
data/tasks/yardoc.rake ADDED
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ # template, textile or rdoc or md
4
+ # -t: template [available: default, javadoc]
5
+ # -m: markup style used in documentation [available: textile, markdown, rdoc]
6
+ desc "Generate Yardoc documentation for simple-templater"
7
+ task :yardoc do
8
+ sh "yardoc -r README.textile lib/**/*.rb -t default"
9
+ end
metadata CHANGED
@@ -1,161 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-templater
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.1.6
4
+ version: 0.1.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - "Jakub \xC5\xA0\xC5\xA5astn\xC3\xBD aka Botanicus"
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain:
12
- date: 2011-06-12 00:00:00 +02:00
11
+ date: 2010-01-01 00:00:00 +00:00
13
12
  default_executable: simple-templater
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: cli
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
16
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: term-ansicolor
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
31
19
  requirements:
32
20
  - - ">="
33
21
  - !ruby/object:Gem::Version
34
22
  version: "0"
35
- type: :runtime
36
- version_requirements: *id002
23
+ version:
37
24
  - !ruby/object:Gem::Dependency
38
25
  name: erubis
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
26
+ type: :runtime
27
+ version_requirement:
28
+ version_requirements: !ruby/object:Gem::Requirement
42
29
  requirements:
43
30
  - - ">="
44
31
  - !ruby/object:Gem::Version
45
32
  version: "0"
46
- type: :runtime
47
- version_requirements: *id003
33
+ version:
48
34
  description: SimpleTemplater is dead-simple solution for creating generators. It strongly uses convention over configuration, so you don't have to write loads of code to generate one stupid plain text README.
49
- email: stastny@101ideas.cz
50
- executables: []
51
-
35
+ email: knava.bestvinensis@gmail.com
36
+ executables:
37
+ - simple-templater
52
38
  extensions: []
53
39
 
54
40
  extra_rdoc_files: []
55
41
 
56
42
  files:
57
- - .gitignore
58
43
  - CHANGELOG
59
- - Gemfile
60
- - LICENSE
61
- - README.textile
62
- - TODO.txt
63
- - bin/simple-templater
64
44
  - deps.rip
65
- - deps.rip.rbe
66
- - gems/cache/abstract-1.0.0.gem
67
- - gems/cache/erubis-2.6.5.gem
68
- - gems/cache/haml-2.2.16.gem
69
- - gems/cache/nake-0.0.8.gem
70
- - gems/cache/rspec-1.2.9.gem
71
- - gems/cache/term-ansicolor-1.0.4.gem
72
45
  - lib/simple-templater.rb
73
- - lib/simple-templater/argv_parsing.rb
74
- - lib/simple-templater/builder.rb
75
- - lib/simple-templater/core_exts.rb
76
- - lib/simple-templater/discoverer.rb
46
+ - lib/simple-templater/generator_set.rb
47
+ - lib/simple-templater/generator.rb
48
+ - lib/simple-templater/discoverers/rip.rb
77
49
  - lib/simple-templater/discoverers/gems.rb
78
50
  - lib/simple-templater/discoverers/plain.rb
79
- - lib/simple-templater/discoverers/rip.rb
80
- - lib/simple-templater/dsl.rb
81
- - lib/simple-templater/generator.rb
82
- - lib/simple-templater/generator_set.rb
83
51
  - lib/simple-templater/helpers.rb
52
+ - lib/simple-templater/argv_parsing.rb
84
53
  - lib/simple-templater/hooks/hook.rb
85
- - lib/simple-templater/hooks/postprocess/git_repository.rb
86
54
  - lib/simple-templater/hooks/postprocess/github.rb
87
- - lib/simple-templater/hooks/preprocess/full_name.rb
55
+ - lib/simple-templater/hooks/postprocess/git_repository.rb
88
56
  - lib/simple-templater/hooks/preprocess/github.rb
89
- - script/spec
57
+ - lib/simple-templater/hooks/preprocess/full_name.rb
58
+ - lib/simple-templater/discoverer.rb
59
+ - lib/simple-templater/core_exts.rb
60
+ - lib/simple-templater/dsl.rb
61
+ - lib/simple-templater/version.rb
62
+ - lib/simple-templater/builder.rb
63
+ - LICENSE
64
+ - README.textile
90
65
  - simple-templater.gemspec
66
+ - Gemfile
67
+ - stubs/stub/metadata.yml
68
+ - stubs/stub/setup.rb
69
+ - stubs/stub/content/setup.rb
70
+ - stubs/stub/content/metadata.yml.rbt
71
+ - stubs/stub/content/postprocess.rb
72
+ - stubs/stub/postprocess.rb
73
+ - stubs/project/metadata.yml
74
+ - stubs/project/setup.rb
75
+ - stubs/project/content/CHANGELOG
76
+ - stubs/project/content/deps.rip
77
+ - stubs/project/content/%name%.gemspec.rbt
78
+ - stubs/project/content/lib/%name%.rb.rbt
79
+ - stubs/project/content/LICENSE.rbt
80
+ - stubs/project/content/Rakefile
81
+ - stubs/project/content/README.textile.rbt
82
+ - stubs/project/content/bin/%name%.rbt
83
+ - stubs/project/content/TODO.txt
84
+ - stubs/project/content/spec/spec_helper.rb.rbt
85
+ - stubs/project/content/spec/spec.opts
86
+ - stubs/project/content/spec/%name%_spec.rb.rbt
87
+ - stubs/project/postprocess.rb
88
+ - script/spec
89
+ - tasks/benchmark.rake
90
+ - tasks/release.rake
91
+ - tasks/yardoc.rake
92
+ - tasks/hooks.rake
93
+ - tasks/gem.rake
94
+ - tasks/spec.rake
95
+ - tasks/submodules.rake
96
+ - Rakefile
91
97
  - simple-templater.pre.gemspec
98
+ - deps.rip.rbe
92
99
  - simple-templater.scope
93
- - spec/simple-templater/argv_parsing_spec.rb
94
- - spec/simple-templater/builder_spec.rb
95
- - spec/simple-templater/discoverers/gems_spec.rb
96
- - spec/simple-templater/discoverers/plain_spec.rb
97
- - spec/simple-templater/discoverers/rip_spec.rb
98
- - spec/simple-templater/generator_set_spec.rb
99
- - spec/simple-templater/generator_spec.rb
100
- - spec/simple-templater/helpers_spec.rb
101
- - spec/simple-templater/hooks/hook_spec.rb
102
- - spec/simple-templater/hooks/postprocess/git_repository_spec.rb
103
- - spec/simple-templater/hooks/postprocess/github_spec.rb
104
- - spec/simple-templater_spec.rb
105
- - spec/spec.opts
100
+ - bin/simple-templater
101
+ - TODO.txt
106
102
  - spec/spec_helper.rb
107
- - spec/stubs/gems/cache/test_generator-0.0.1.gem
108
103
  - spec/stubs/gems/gems/test_generator-0.0.1/simple-generator.scope
109
- - spec/stubs/gems/gems/test_generator-0.0.1/simple-templater.scope
104
+ - spec/stubs/gems/gems/test_generator-0.0.1/test_generator.gemspec
105
+ - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/script.rb.rbt
106
+ - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/README.textile
110
107
  - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/%name%1_test.rb.rbt
111
108
  - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/%name%_test.rb
112
- - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/README.textile
113
- - spec/stubs/gems/gems/test_generator-0.0.1/stubs/content/script.rb.rbt
109
+ - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/script.rb.rbt
110
+ - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/README.textile
114
111
  - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/%name%1_test.rb.rbt
115
112
  - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/%name%_test.rb
116
- - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/README.textile
117
- - spec/stubs/gems/gems/test_generator-0.0.1/stubs/test/content/script.rb.rbt
118
- - spec/stubs/gems/gems/test_generator-0.0.1/test_generator.gemspec
113
+ - spec/stubs/gems/gems/test_generator-0.0.1/simple-templater.scope
114
+ - spec/stubs/gems/cache/test_generator-0.0.1.gem
119
115
  - spec/stubs/gems/specifications/test_generator-0.0.1.gemspec
120
- - spec/stubs/simple-templater.scope
121
- - spec/stubs/test_generator/simple-templater.scope
116
+ - spec/stubs/test_generator/test_generator.gemspec
117
+ - spec/stubs/test_generator/stubs/test/content/script.rb.rbt
118
+ - spec/stubs/test_generator/stubs/test/content/README.textile
122
119
  - spec/stubs/test_generator/stubs/test/content/%name%1_test.rb.rbt
123
120
  - spec/stubs/test_generator/stubs/test/content/%name%_test.rb
124
- - spec/stubs/test_generator/stubs/test/content/README.textile
125
- - spec/stubs/test_generator/stubs/test/content/script.rb.rbt
121
+ - spec/stubs/test_generator/simple-templater.scope
126
122
  - spec/stubs/test_generator/test_generator-0.0.1.gem
127
- - spec/stubs/test_generator/test_generator.gemspec
128
- - stubs/project/content/%name%.gemspec.rbt
129
- - stubs/project/content/%name%.pre.gemspec.rbt
130
- - stubs/project/content/.gitignore
131
- - stubs/project/content/CHANGELOG
132
- - stubs/project/content/Gemfile
133
- - stubs/project/content/LICENSE.rbt
134
- - stubs/project/content/README.textile.rbt
135
- - stubs/project/content/TODO.txt
136
- - stubs/project/content/bin/%name%.rbt
137
- - stubs/project/content/deps.rip
138
- - stubs/project/content/examples/.gitignore
139
- - stubs/project/content/lib/%name%.rb.rbt
140
- - stubs/project/content/lib/%name%/.gitignore
141
- - stubs/project/content/lib/%name%/version.rb.rbt
142
- - stubs/project/content/spec/%name%/.gitignore
143
- - stubs/project/content/spec/%name%_spec.rb.rbt
144
- - stubs/project/content/spec/spec.opts
145
- - stubs/project/content/spec/spec_helper.rb.rbt
146
- - stubs/project/content/tasks.rb.rbt
147
- - stubs/project/content/tasks/%name%.nake
148
- - stubs/project/metadata.yml
149
- - stubs/project/postprocess.rb
150
- - stubs/project/setup.rb
151
- - stubs/stub/content/content/.gitignore
152
- - stubs/stub/content/metadata.yml.rbt
153
- - stubs/stub/content/postprocess.rb
154
- - stubs/stub/content/setup.rb
155
- - stubs/stub/metadata.yml
156
- - stubs/stub/postprocess.rb
157
- - stubs/stub/setup.rb
158
- - tasks.rb
123
+ - spec/stubs/simple-templater.scope
124
+ - spec/simple-templater_spec.rb
125
+ - spec/spec.opts
126
+ - spec/simple-templater/generator_spec.rb
127
+ - spec/simple-templater/discoverers/plain_spec.rb
128
+ - spec/simple-templater/discoverers/rip_spec.rb
129
+ - spec/simple-templater/discoverers/gems_spec.rb
130
+ - spec/simple-templater/builder_spec.rb
131
+ - spec/simple-templater/argv_parsing_spec.rb
132
+ - spec/simple-templater/generator_set_spec.rb
133
+ - spec/simple-templater/hooks/hook_spec.rb
134
+ - spec/simple-templater/hooks/postprocess/git_repository_spec.rb
135
+ - spec/simple-templater/hooks/postprocess/github_spec.rb
136
+ - spec/simple-templater/helpers_spec.rb
159
137
  has_rdoc: true
160
138
  homepage: http://github.com/botanicus/simple-templater
161
139
  licenses: []
@@ -166,21 +144,21 @@ rdoc_options: []
166
144
  require_paths:
167
145
  - lib
168
146
  required_ruby_version: !ruby/object:Gem::Requirement
169
- none: false
170
147
  requirements:
171
148
  - - ~>
172
149
  - !ruby/object:Gem::Version
173
150
  version: "1.9"
151
+ version:
174
152
  required_rubygems_version: !ruby/object:Gem::Requirement
175
- none: false
176
153
  requirements:
177
- - - ">="
154
+ - - ">"
178
155
  - !ruby/object:Gem::Version
179
- version: "0"
156
+ version: 1.3.1
157
+ version:
180
158
  requirements: []
181
159
 
182
160
  rubyforge_project: simple-templater
183
- rubygems_version: 1.6.2
161
+ rubygems_version: 1.3.5
184
162
  signing_key:
185
163
  specification_version: 3
186
164
  summary: SimpleTemplater is dead-simple solution for creating generators.
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /*.gem
2
-
3
- .DS_Store
4
- .cache
5
- .yardoc
6
-
7
- script/*
8
- gems/*
9
- !gems/cache
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env gem build
2
- # encoding: utf-8
3
-
4
- # You might think this is a terrible mess and guess what, you're
5
- # right mate! However say thanks to authors of RubyGems, not me.
6
- eval(File.read("<%= @name %>.gemspec")).tap do |specification|
7
- specification.version = "#{specification.version}.pre"
8
- end
@@ -1,12 +0,0 @@
1
- *~
2
- .*.swp
3
- .#*
4
-
5
- .DS_Store
6
- .cache
7
- .yardoc
8
-
9
- /*.gem
10
- script/*
11
- gems/*
12
- !gems/cache
@@ -1,8 +0,0 @@
1
- # gems
2
- gem "nake"
3
- gem "rspec"
4
- gem "code-cleaner"
5
-
6
- # settings
7
- bin_path "script"
8
- bundle_path "gems"
File without changes
File without changes
@@ -1,5 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module <%= @constant %>
4
- VERSION = "0.0.1"
5
- end
File without changes
File without changes
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env nake
2
- # encoding: utf-8
3
-
4
- begin
5
- require File.expand_path("../.bundle/environment", __FILE__)
6
- rescue LoadError
7
- require "bundler"
8
- Bundler.setup
9
- end
10
-
11
- $LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
12
-
13
- require "nake/tasks/gem"
14
- require "nake/tasks/spec"
15
- require "nake/tasks/release"
16
-
17
- require_relative "lib/<%= @name %>/version"
18
-
19
- begin
20
- load "code-cleaner.nake"
21
- Nake::Task["hooks:whitespace:install"].tap do |task|
22
- task.config[:path] = "script"
23
- task.config[:encoding] = "utf-8"
24
- task.config[:whitelist] = '(bin/[^/]+|.+\.(rb|rake|nake|thor|task))$'
25
- end
26
- rescue LoadError
27
- warn "If you want to contribute to <%= @constant %>, please install code-cleaner and then run ./tasks.rb hooks:whitespace:install to get Git pre-commit hook for removing trailing whitespace."
28
- end
29
-
30
- # Setup encoding, so all the operations
31
- # with strings from another files will work
32
- Encoding.default_internal = "utf-8"
33
- Encoding.default_external = "utf-8"
34
-
35
- Task[:build].config[:gemspec] = "<%= @name %>.gemspec"
36
- Task[:prerelease].config[:gemspec] = "<%= @name %>.pre.gemspec"
37
- Task[:release].config[:name] = "<%= @name %>"
38
- Task[:release].config[:version] = <%= @constant %>::VERSION
File without changes
data/tasks.rb DELETED
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env nake
2
- # encoding: utf-8
3
-
4
- begin
5
- require File.expand_path("../.bundle/environment", __FILE__)
6
- rescue LoadError
7
- require "bundler"
8
- Bundler.setup
9
- end
10
-
11
- $LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
12
-
13
- require "nake/tasks/gem"
14
- require "nake/tasks/spec"
15
- require "nake/tasks/release"
16
-
17
- begin
18
- load "code-cleaner.nake"
19
- Nake::Task["hooks:whitespace:install"].tap do |task|
20
- task.config[:path] = "script"
21
- task.config[:encoding] = "utf-8"
22
- task.config[:whitelist] = '(bin/[^/]+|.+\.(rb|rake|nake|thor|task))$'
23
- end
24
- rescue LoadError
25
- warn "If you want to contribute to SimpleTemplater, please install code-cleaner and then run ./tasks.rb hooks:whitespace:install to get Git pre-commit hook for removing trailing whitespace."
26
- end
27
-
28
- require_relative "lib/simple-templater"
29
-
30
- # Setup encoding, so all the operations
31
- # with strings from another files will work
32
- Encoding.default_internal = "utf-8"
33
- Encoding.default_external = "utf-8"
34
-
35
- Task[:build].config[:gemspec] = "simple-templater.gemspec"
36
- Task[:prerelease].config[:gemspec] = "simple-templater.pre.gemspec"
37
- Task[:release].config[:name] = "simple-templater"
38
- Task[:release].config[:version] = SimpleTemplater::VERSION