simple-templater 0.0.1.6 → 0.1.pre

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 (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