thor_template 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +5 -0
 - data/README.md +7 -28
 - data/lib/starter_project/Gemfile +2 -2
 - data/lib/starter_project/Guardfile +4 -4
 - data/lib/starter_project/README.md +3 -3
 - data/lib/starter_project/Rakefile +1 -27
 - data/lib/starter_project/bin/thor_template +3 -3
 - data/lib/starter_project/lib/thor_template/cli.rb +3 -3
 - data/lib/starter_project/lib/thor_template/command.rb +1 -1
 - data/lib/starter_project/lib/thor_template.rb +2 -2
 - data/lib/starter_project/spec/lib/cli_spec.rb +5 -5
 - data/lib/starter_project/spec/spec_helper.rb +6 -6
 - data/lib/starter_project/thor_template.gemspec +2 -2
 - data/lib/thor_template/generator.rb +7 -8
 - data/lib/thor_template/renamer.rb +63 -0
 - data/lib/thor_template/version.rb +1 -1
 - data/lib/thor_template.rb +1 -0
 - data/spec/lib/cli_spec.rb +37 -5
 - data/spec/lib/generator_spec.rb +5 -4
 - data/spec/spec_helper.rb +2 -1
 - data/thor_template.gemspec +2 -0
 - metadata +31 -3
 - data/lib/templates/Rakefile +0 -6
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ab6ae7155ca474bcc468b645793b3f0ce331032d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 3f9260280b4788cd605e8f205d45507cca97e57f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c1b93e6a5b2faf163e5e7030659f9474a64f71ab40343660680e36d2677974d50933d0392989e0ee3d80df7f0340e982f28ea6d2bf291db314df2e5eeb434d8e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0d4f7e668e79df3d3d806889fa13a8cead2211800bbb5c7dc27cc6e1f841aae79d996cf1b68dad57cb4e96039a21ddd74dee74f399a26357f6843f1d63ad92a4
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -3,6 +3,11 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            All notable changes to this project will be documented in this file.
         
     | 
| 
       4 
4 
     | 
    
         
             
            This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            ## [2.0.0]
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            - Fix project names that are named with dashes and camel case.
         
     | 
| 
      
 9 
     | 
    
         
            +
            - Add legit specs that test each case.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       6 
11 
     | 
    
         
             
            ## [1.0.1]
         
     | 
| 
       7 
12 
     | 
    
         | 
| 
       8 
13 
     | 
    
         
             
            - require "fileutils" fix
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            [](https://www.youtube.com/watch?v=GcVhdoneZYk)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            # ThorTemplate
         
     | 
| 
       2 
4 
     | 
    
         | 
| 
       3 
5 
     | 
    
         
             
            [](https://travis-ci.org/tongueroo/thor_template)
         
     | 
| 
       4 
6 
     | 
    
         
             
            [](https://codeclimate.com/github/tongueroo/thor_template)
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
            `thor_template` is a generator tool that builds a starter CLI project based on [Thor](). This blog post, [Build Thor CLI Project in Under a Second](https://blog.boltops.com/2017/09/14/build-thor-cli-project-in-under-a-second), also covers usage and also contains a video demo.
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
            ## Installation
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
         @@ -14,12 +16,12 @@ gem install thor_template 
     | 
|
| 
       14 
16 
     | 
    
         
             
            ## Usage
         
     | 
| 
       15 
17 
     | 
    
         | 
| 
       16 
18 
     | 
    
         
             
            ```sh
         
     | 
| 
       17 
     | 
    
         
            -
            thor_template new  
     | 
| 
       18 
     | 
    
         
            -
            cd  
     | 
| 
       19 
     | 
    
         
            -
            bin/ 
     | 
| 
      
 19 
     | 
    
         
            +
            thor_template new mycli
         
     | 
| 
      
 20 
     | 
    
         
            +
            cd mycli
         
     | 
| 
      
 21 
     | 
    
         
            +
            bin/mycli hello world
         
     | 
| 
       20 
22 
     | 
    
         
             
            ```
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
            The above generated a starter  
     | 
| 
      
 24 
     | 
    
         
            +
            The above generated a starter CLI project called mycli with a working hello command.  The generated project also has starter specs for you 😁
         
     | 
| 
       23 
25 
     | 
    
         | 
| 
       24 
26 
     | 
    
         
             
            ```sh
         
     | 
| 
       25 
27 
     | 
    
         
             
            $ rake
         
     | 
| 
         @@ -32,26 +34,3 @@ Finished in 0.09672 seconds (files took 0.20945 seconds to load) 
     | 
|
| 
       32 
34 
     | 
    
         
             
            1 example, 0 failures
         
     | 
| 
       33 
35 
     | 
    
         
             
            $
         
     | 
| 
       34 
36 
     | 
    
         
             
            ```
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            ## Dashes Problem
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            Names with dashes don't work quite right with this tool.  For example:
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            ```
         
     | 
| 
       41 
     | 
    
         
            -
            thor_template new my-project
         
     | 
| 
       42 
     | 
    
         
            -
            ```
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            This results in some the files and text not being renamed correctly.  I usually work around this by creating a project with the underscored name first:
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            ```
         
     | 
| 
       47 
     | 
    
         
            -
            thor_template new my_project
         
     | 
| 
       48 
     | 
    
         
            -
            ```
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            Then I rename things 3 spots:
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            * my_project.gemspec - Change the name from my_project to my-project.  So the gem name has a dash.
         
     | 
| 
       53 
     | 
    
         
            -
            * bin/my_project - Change the name from bin/my_project to bin/my-project.  So the binary has a dash.  The require in the file also needs to be fixed.
         
     | 
| 
       54 
     | 
    
         
            -
            * lib/my_project.rb - Change the name from lib/my_project.rb to lib/my-project.rb. So if the project is required it is `require my-project`.
         
     | 
| 
       55 
     | 
    
         
            -
            * spec/spec_helper.rb - Change the require lib/my_project.rb to lib/my-project.rb. And spec/lib/cli_spec.  So the test passes.
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            Hope to fix this one day! Also, pull request are appreciated!
         
     | 
    
        data/lib/starter_project/Gemfile
    CHANGED
    
    
| 
         @@ -1,12 +1,12 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            guard  
     | 
| 
      
 1 
     | 
    
         
            +
            guard "rspec" do
         
     | 
| 
       2 
2 
     | 
    
         
             
              watch(%r{^spec/.+_spec\.rb$})
         
     | 
| 
       3 
3 
     | 
    
         
             
              watch(%r{^lib/(.+)\.rb$})      { "spec/thor_template_spec.rb" }
         
     | 
| 
       4 
4 
     | 
    
         
             
              watch(%r{^lib/thor_template/(.+)\.rb$})  { "spec/thor_template_spec.rb" }
         
     | 
| 
       5 
     | 
    
         
            -
              watch( 
     | 
| 
      
 5 
     | 
    
         
            +
              watch("spec/spec_helper.rb")   { "spec/thor_template_spec.rb" }
         
     | 
| 
       6 
6 
     | 
    
         
             
              watch(%r{^lib/thor_template/(.+)\.rb$})   { |m| "spec/lib/#{m[1]}_spec.rb" }
         
     | 
| 
       7 
7 
     | 
    
         
             
            end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            guard  
     | 
| 
       10 
     | 
    
         
            -
              watch( 
     | 
| 
      
 9 
     | 
    
         
            +
            guard "bundler" do
         
     | 
| 
      
 10 
     | 
    
         
            +
              watch("Gemfile")
         
     | 
| 
       11 
11 
     | 
    
         
             
              watch(/^.+\.gemspec/)
         
     | 
| 
       12 
12 
     | 
    
         
             
            end
         
     | 
| 
         @@ -12,7 +12,7 @@ TODO: Write a gem description 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            Add this line to your application's Gemfile:
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                gem  
     | 
| 
      
 15 
     | 
    
         
            +
                gem "thor_template"
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            And then execute:
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
         @@ -32,13 +32,13 @@ rake rename 
     | 
|
| 
       32 
32 
     | 
    
         
             
            rm -rf .git
         
     | 
| 
       33 
33 
     | 
    
         
             
            git init
         
     | 
| 
       34 
34 
     | 
    
         
             
            git add .
         
     | 
| 
       35 
     | 
    
         
            -
            git commit -m  
     | 
| 
      
 35 
     | 
    
         
            +
            git commit -m "init commit"
         
     | 
| 
       36 
36 
     | 
    
         
             
            </pre>
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            1. Fork it
         
     | 
| 
       41 
41 
     | 
    
         
             
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
       42 
     | 
    
         
            -
            3. Commit your changes (`git commit -am  
     | 
| 
      
 42 
     | 
    
         
            +
            3. Commit your changes (`git commit -am "Add some feature"`)
         
     | 
| 
       43 
43 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
       44 
44 
     | 
    
         
             
            5. Create new Pull Request
         
     | 
| 
         @@ -1,32 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require "bundler/gem_tasks"
         
     | 
| 
       2 
2 
     | 
    
         
             
            require "rspec/core/rake_task"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            task :default => :spec
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            RSpec::Core::RakeTask.new
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            # DELETE AFTER USING
         
     | 
| 
       9 
     | 
    
         
            -
            desc "Rename project"
         
     | 
| 
       10 
     | 
    
         
            -
            task :rename do
         
     | 
| 
       11 
     | 
    
         
            -
              name = ENV['NAME'] || File.basename(Dir.pwd)
         
     | 
| 
       12 
     | 
    
         
            -
              camelize = lambda do |str|
         
     | 
| 
       13 
     | 
    
         
            -
                str.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
              dir = Dir['**/thor_template*']
         
     | 
| 
       16 
     | 
    
         
            -
              begin
         
     | 
| 
       17 
     | 
    
         
            -
                from = dir.pop
         
     | 
| 
       18 
     | 
    
         
            -
                if from
         
     | 
| 
       19 
     | 
    
         
            -
                  to = from.split('/')
         
     | 
| 
       20 
     | 
    
         
            -
                  to[-1].gsub!('thor_template', name)
         
     | 
| 
       21 
     | 
    
         
            -
                  FileUtils.mv(from, to.join('/'))
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end while dir.length > 0
         
     | 
| 
       24 
     | 
    
         
            -
              Dir["**/*"].each do |path|
         
     | 
| 
       25 
     | 
    
         
            -
                if File.file?(path)
         
     | 
| 
       26 
     | 
    
         
            -
                  `sed -i '' 's/thor_template/#{name}/g' #{path}`
         
     | 
| 
       27 
     | 
    
         
            -
                  `sed -i '' 's/ThorTemplate/#{camelize.call(name)}/g' #{path}`
         
     | 
| 
       28 
     | 
    
         
            -
                  no_space = File.read(path).gsub(/\s+\z/, '')
         
     | 
| 
       29 
     | 
    
         
            -
                  File.open(path, 'w') { |f| f.write(no_space) }
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -7,8 +7,8 @@ Signal.trap("INT") { 
     | 
|
| 
       7 
7 
     | 
    
         
             
              exit
         
     | 
| 
       8 
8 
     | 
    
         
             
            }
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            $:.unshift(File.expand_path( 
     | 
| 
       11 
     | 
    
         
            -
            require  
     | 
| 
       12 
     | 
    
         
            -
            require  
     | 
| 
      
 10 
     | 
    
         
            +
            $:.unshift(File.expand_path("../../lib", __FILE__))
         
     | 
| 
      
 11 
     | 
    
         
            +
            require "USER_PROVIDED_NAME"
         
     | 
| 
      
 12 
     | 
    
         
            +
            require "thor_template/cli"
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            ThorTemplate::CLI.start(ARGV)
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "thor"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "thor_template/cli/help"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module ThorTemplate
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
         @@ -9,7 +9,7 @@ module ThorTemplate 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                desc "hello NAME", "say hello to NAME"
         
     | 
| 
       11 
11 
     | 
    
         
             
                long_desc Help.hello
         
     | 
| 
       12 
     | 
    
         
            -
                option :from, desc:  
     | 
| 
      
 12 
     | 
    
         
            +
                option :from, desc: "from person"
         
     | 
| 
       13 
13 
     | 
    
         
             
                def hello(name)
         
     | 
| 
       14 
14 
     | 
    
         
             
                  puts "from: #{options[:from]}" if options[:from]
         
     | 
| 
       15 
15 
     | 
    
         
             
                  puts "Hello #{name}"
         
     | 
| 
         @@ -2,6 +2,6 @@ $:.unshift(File.expand_path("../", __FILE__)) 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require "thor_template/version"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module ThorTemplate
         
     | 
| 
       5 
     | 
    
         
            -
              autoload :Command,  
     | 
| 
       6 
     | 
    
         
            -
              autoload :CLI,  
     | 
| 
      
 5 
     | 
    
         
            +
              autoload :Command, "thor_template/command"
         
     | 
| 
      
 6 
     | 
    
         
            +
              autoload :CLI, "thor_template/cli"
         
     | 
| 
       7 
7 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            # to run specs with what 
     | 
| 
      
 3 
     | 
    
         
            +
            # to run specs with what"s remembered from vcr
         
     | 
| 
       4 
4 
     | 
    
         
             
            #   $ rake
         
     | 
| 
       5 
     | 
    
         
            -
            # 
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # to run specs with new fresh data from aws api calls
         
     | 
| 
       7 
7 
     | 
    
         
             
            #   $ rake clean:vcr ; time rake
         
     | 
| 
       8 
8 
     | 
    
         
             
            describe ThorTemplate::CLI do
         
     | 
| 
         @@ -10,9 +10,9 @@ describe ThorTemplate::CLI do 
     | 
|
| 
       10 
10 
     | 
    
         
             
                @args = "--from Tung"
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
              describe " 
     | 
| 
      
 13 
     | 
    
         
            +
              describe "USER_PROVIDED_NAME" do
         
     | 
| 
       14 
14 
     | 
    
         
             
                it "should hello world" do
         
     | 
| 
       15 
     | 
    
         
            -
                  out = execute("bin/ 
     | 
| 
      
 15 
     | 
    
         
            +
                  out = execute("bin/USER_PROVIDED_NAME hello world #{@args}")
         
     | 
| 
       16 
16 
     | 
    
         
             
                  expect(out).to include("from: Tung\nHello world")
         
     | 
| 
       17 
17 
     | 
    
         
             
                end
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,18 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ENV[ 
     | 
| 
      
 1 
     | 
    
         
            +
            ENV["TEST"] = "1"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
      
 3 
     | 
    
         
            +
            require "simplecov"
         
     | 
| 
       4 
4 
     | 
    
         
             
            SimpleCov.start
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            require "pp"
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            root = File.expand_path( 
     | 
| 
       9 
     | 
    
         
            -
            require "#{root}/lib/ 
     | 
| 
      
 8 
     | 
    
         
            +
            root = File.expand_path("../../", __FILE__)
         
     | 
| 
      
 9 
     | 
    
         
            +
            require "#{root}/lib/USER_PROVIDED_NAME"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            module Helpers
         
     | 
| 
       12 
12 
     | 
    
         
             
              def execute(cmd)
         
     | 
| 
       13 
     | 
    
         
            -
                puts "Running: #{cmd}" if ENV[ 
     | 
| 
      
 13 
     | 
    
         
            +
                puts "Running: #{cmd}" if ENV["DEBUG"]
         
     | 
| 
       14 
14 
     | 
    
         
             
                out = `#{cmd}`
         
     | 
| 
       15 
     | 
    
         
            -
                puts out if ENV[ 
     | 
| 
      
 15 
     | 
    
         
            +
                puts out if ENV["DEBUG"]
         
     | 
| 
       16 
16 
     | 
    
         
             
                out
         
     | 
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
| 
       18 
18 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # coding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
            lib = File.expand_path( 
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path("../lib", __FILE__)
         
     | 
| 
       3 
3 
     | 
    
         
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
      
 4 
     | 
    
         
            +
            require "thor_template/version"
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       7 
7 
     | 
    
         
             
              spec.name          = "thor_template"
         
     | 
| 
         @@ -1,17 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'colorize'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'active_support/core_ext/string'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "byebug"
         
     | 
| 
       2 
5 
     | 
    
         | 
| 
       3 
6 
     | 
    
         
             
            module ThorTemplate
         
     | 
| 
       4 
7 
     | 
    
         
             
              class Generator
         
     | 
| 
       5 
8 
     | 
    
         
             
                attr_reader :options
         
     | 
| 
       6 
9 
     | 
    
         
             
                def initialize(options={})
         
     | 
| 
       7 
10 
     | 
    
         
             
                  @options = options
         
     | 
| 
      
 11 
     | 
    
         
            +
                  Dir.chdir(options[:cwd]) if options[:cwd]
         
     | 
| 
       8 
12 
     | 
    
         
             
                  @name = options[:name]
         
     | 
| 
       9 
13 
     | 
    
         
             
                end
         
     | 
| 
       10 
14 
     | 
    
         | 
| 
       11 
15 
     | 
    
         
             
                def run
         
     | 
| 
       12 
16 
     | 
    
         
             
                  copy
         
     | 
| 
       13 
17 
     | 
    
         
             
                  rename
         
     | 
| 
       14 
     | 
    
         
            -
                  rewrite
         
     | 
| 
       15 
18 
     | 
    
         
             
                  git
         
     | 
| 
       16 
19 
     | 
    
         
             
                  puts "Created #{@name} project!"
         
     | 
| 
       17 
20 
     | 
    
         
             
                end
         
     | 
| 
         @@ -26,9 +29,9 @@ module ThorTemplate 
     | 
|
| 
       26 
29 
     | 
    
         
             
                    dest = "#{project_root}/#{dest}"
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
31 
     | 
    
         
             
                    if File.exist?(dest) and !options[:force]
         
     | 
| 
       29 
     | 
    
         
            -
                      puts "already exists: #{dest}" unless options[:quiet]
         
     | 
| 
      
 32 
     | 
    
         
            +
                      puts "already exists: #{dest}".colorize(:yellow) unless options[:quiet]
         
     | 
| 
       30 
33 
     | 
    
         
             
                    else
         
     | 
| 
       31 
     | 
    
         
            -
                      puts "creating: #{dest}" unless options[:quiet]
         
     | 
| 
      
 34 
     | 
    
         
            +
                      puts "creating: #{dest}".colorize(:green) unless options[:quiet]
         
     | 
| 
       32 
35 
     | 
    
         
             
                      dirname = File.dirname(dest)
         
     | 
| 
       33 
36 
     | 
    
         
             
                      FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
         
     | 
| 
       34 
37 
     | 
    
         
             
                      FileUtils.cp(src, dest)
         
     | 
| 
         @@ -37,11 +40,7 @@ module ThorTemplate 
     | 
|
| 
       37 
40 
     | 
    
         
             
                end
         
     | 
| 
       38 
41 
     | 
    
         | 
| 
       39 
42 
     | 
    
         
             
                def rename
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                def rewrite
         
     | 
| 
       44 
     | 
    
         
            -
                  template("Rakefile", "Rakefile")
         
     | 
| 
      
 43 
     | 
    
         
            +
                  Renamer.new(@name).rename!
         
     | 
| 
       45 
44 
     | 
    
         
             
                end
         
     | 
| 
       46 
45 
     | 
    
         | 
| 
       47 
46 
     | 
    
         
             
                def git
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ThorTemplate
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Renamer
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize(name)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @name = name
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def rename!
         
     | 
| 
      
 8 
     | 
    
         
            +
                  Dir.chdir(@name) do
         
     | 
| 
      
 9 
     | 
    
         
            +
                    Dir.glob("**/*") do |path|
         
     | 
| 
      
 10 
     | 
    
         
            +
                      next unless File.file?(path)
         
     | 
| 
      
 11 
     | 
    
         
            +
                      rename_content(path)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                      next unless File.file?(path)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      rename_path(path)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    end # Dir.glob
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    remove_empty_directories
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def rename_content(path)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  content = IO.readlines(path)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  result = content.map do |line|
         
     | 
| 
      
 24 
     | 
    
         
            +
                    line = line.gsub(/ThorTemplate/, @name.underscore.camelize)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    line = line.gsub(/thor_template/, @name.underscore)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    line = line.gsub("USER_PROVIDED_NAME", @name) # special case
         
     | 
| 
      
 27 
     | 
    
         
            +
                    line
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                  IO.write(path, result.join(''))
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                def rename_path(src)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  dest = special_rename?(src) ?
         
     | 
| 
      
 34 
     | 
    
         
            +
                    src.gsub(/thor_template/, @name) :
         
     | 
| 
      
 35 
     | 
    
         
            +
                    src.gsub(/thor_template/, @name.underscore)
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  folder = File.dirname(dest)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  FileUtils.mkdir_p(folder) unless File.exist?(folder)
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  FileUtils.mv(src, dest) unless src == dest
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                # These paths should be rename with the actually named provied by the
         
     | 
| 
      
 44 
     | 
    
         
            +
                # user, the the underscored version.
         
     | 
| 
      
 45 
     | 
    
         
            +
                def special_rename?(path)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  %w[
         
     | 
| 
      
 47 
     | 
    
         
            +
                    thor_template.gemspec
         
     | 
| 
      
 48 
     | 
    
         
            +
                    bin/thor_template
         
     | 
| 
      
 49 
     | 
    
         
            +
                    lib/thor_template.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
                  ].include?(path)
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                # Thanks https://stackoverflow.com/users/123094/db
         
     | 
| 
      
 54 
     | 
    
         
            +
                # https://stackoverflow.com/questions/1290670/ruby-how-do-i-recursively-find-and-remove-empty-directories
         
     | 
| 
      
 55 
     | 
    
         
            +
                def remove_empty_directories
         
     | 
| 
      
 56 
     | 
    
         
            +
                  Dir['**/*'].
         
     | 
| 
      
 57 
     | 
    
         
            +
                    select { |d| File.directory? d }.
         
     | 
| 
      
 58 
     | 
    
         
            +
                    select { |d| (Dir.entries(d) - %w[ . .. ]).empty? }.
         
     | 
| 
      
 59 
     | 
    
         
            +
                    each   { |d| Dir.rmdir d }
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/thor_template.rb
    CHANGED
    
    
    
        data/spec/lib/cli_spec.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # to run specs with what's remembered from vcr
         
     | 
| 
       4 
4 
     | 
    
         
             
            #   $ rake
         
     | 
| 
       5 
     | 
    
         
            -
            # 
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # to run specs with new fresh data from aws api calls
         
     | 
| 
       7 
7 
     | 
    
         
             
            #   $ rake clean:vcr ; time rake
         
     | 
| 
       8 
8 
     | 
    
         
             
            describe ThorTemplate::CLI do
         
     | 
| 
         @@ -11,13 +11,45 @@ describe ThorTemplate::CLI do 
     | 
|
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              describe "new" do
         
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                context("simple single name") do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  it "should generate" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                    out = execute("cd tmp && ../bin/thor_template new hello #{@args}")
         
     | 
| 
      
 17 
     | 
    
         
            +
                    expect(out).to include("Created hello project!")
         
     | 
| 
      
 18 
     | 
    
         
            +
                    out = execute("cd tmp/hello && rake")
         
     | 
| 
      
 19 
     | 
    
         
            +
                    expect(out).to include("0 failures")
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                context("underscored name") do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  it "should generate" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                    out = execute("cd tmp && ../bin/thor_template new my_cli #{@args}")
         
     | 
| 
      
 26 
     | 
    
         
            +
                    expect(out).to include("Created my_cli project!")
         
     | 
| 
      
 27 
     | 
    
         
            +
                    out = execute("cd tmp/my_cli && rake")
         
     | 
| 
      
 28 
     | 
    
         
            +
                    expect(out).to include("0 failures")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                context("dasherized name") do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  it "should generate" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                    out = execute("cd tmp && ../bin/thor_template new my-cli #{@args}")
         
     | 
| 
      
 35 
     | 
    
         
            +
                    expect(out).to include("Created my-cli project!")
         
     | 
| 
      
 36 
     | 
    
         
            +
                    out = execute("cd tmp/my-cli && rake")
         
     | 
| 
      
 37 
     | 
    
         
            +
                    expect(out).to include("0 failures")
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # CamelCase is ugly :(
         
     | 
| 
      
 42 
     | 
    
         
            +
                context("simple CamelCase name") do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  it "should generate" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    out = execute("cd tmp && ../bin/thor_template new MyCli #{@args}")
         
     | 
| 
      
 45 
     | 
    
         
            +
                    expect(out).to include("Created MyCli project!")
         
     | 
| 
      
 46 
     | 
    
         
            +
                    out = execute("cd tmp/MyCli && rake")
         
     | 
| 
      
 47 
     | 
    
         
            +
                    expect(out).to include("0 failures")
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
       17 
49 
     | 
    
         
             
                end
         
     | 
| 
       18 
50 
     | 
    
         
             
              end
         
     | 
| 
       19 
51 
     | 
    
         
             
            end
         
     | 
| 
       20 
52 
     | 
    
         | 
| 
       21 
53 
     | 
    
         
             
            VCR.configure do |config|
         
     | 
| 
       22 
54 
     | 
    
         
             
              config.ignore_hosts 'codeclimate.com'
         
     | 
| 
       23 
     | 
    
         
            -
            end
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/lib/generator_spec.rb
    CHANGED
    
    | 
         @@ -2,20 +2,21 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # to run specs with what's remembered from vcr
         
     | 
| 
       4 
4 
     | 
    
         
             
            #   $ rake
         
     | 
| 
       5 
     | 
    
         
            -
            # 
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # to run specs with new fresh data from aws api calls
         
     | 
| 
       7 
7 
     | 
    
         
             
            #   $ rake clean:vcr ; time rake
         
     | 
| 
       8 
8 
     | 
    
         
             
            describe ThorTemplate::Generator do
         
     | 
| 
       9 
9 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       10 
10 
     | 
    
         
             
                options = {
         
     | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
      
 11 
     | 
    
         
            +
                  cwd: "tmp",
         
     | 
| 
      
 12 
     | 
    
         
            +
                  name: "hello"
         
     | 
| 
       12 
13 
     | 
    
         
             
                }
         
     | 
| 
       13 
14 
     | 
    
         
             
                @generator = ThorTemplate::Generator.new(options)
         
     | 
| 
       14 
15 
     | 
    
         
             
              end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
              it "should generate" do
         
     | 
| 
       17 
18 
     | 
    
         
             
                @generator.run
         
     | 
| 
       18 
     | 
    
         
            -
                expect(File.exist?(" 
     | 
| 
       19 
     | 
    
         
            -
                expect(File.exist?(" 
     | 
| 
      
 19 
     | 
    
         
            +
                expect(File.exist?("hello")).to be_truthy
         
     | 
| 
      
 20 
     | 
    
         
            +
                expect(File.exist?("hello/hello.gemspec")).to be_truthy
         
     | 
| 
       20 
21 
     | 
    
         
             
              end
         
     | 
| 
       21 
22 
     | 
    
         
             
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -27,7 +27,8 @@ RSpec.configure do |c| 
     | 
|
| 
       27 
27 
     | 
    
         
             
              c.include Helpers
         
     | 
| 
       28 
28 
     | 
    
         
             
              c.before(:all) do
         
     | 
| 
       29 
29 
     | 
    
         
             
                FileUtils.mkdir('tmp') unless File.exist?('tmp')
         
     | 
| 
       30 
     | 
    
         
            -
                FileUtils.rm_rf("tmp 
     | 
| 
      
 30 
     | 
    
         
            +
                FileUtils.rm_rf("tmp")
         
     | 
| 
      
 31 
     | 
    
         
            +
                FileUtils.mkdir("tmp")
         
     | 
| 
       31 
32 
     | 
    
         
             
              end
         
     | 
| 
       32 
33 
     | 
    
         
             
              c.around(:each) do |example|
         
     | 
| 
       33 
34 
     | 
    
         
             
                VCR.use_cassette(example.metadata[:full_description], :serialize_with => :json) do
         
     | 
    
        data/thor_template.gemspec
    CHANGED
    
    | 
         @@ -21,6 +21,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       21 
21 
     | 
    
         
             
              spec.add_dependency "thor"
         
     | 
| 
       22 
22 
     | 
    
         
             
              spec.add_dependency "hashie"
         
     | 
| 
       23 
23 
     | 
    
         
             
              spec.add_dependency "colorize"
         
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_dependency "activesupport"
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.3"
         
     | 
| 
       26 
27 
     | 
    
         
             
              spec.add_development_dependency "rake"
         
     | 
| 
         @@ -28,4 +29,5 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       28 
29 
     | 
    
         
             
              spec.add_development_dependency "guard"
         
     | 
| 
       29 
30 
     | 
    
         
             
              spec.add_development_dependency "guard-bundler"
         
     | 
| 
       30 
31 
     | 
    
         
             
              spec.add_development_dependency "guard-rspec"
         
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_development_dependency "byebug"
         
     | 
| 
       31 
33 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: thor_template
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tung Nguyen
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-09-20 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: thor
         
     | 
| 
         @@ -52,6 +52,20 @@ dependencies: 
     | 
|
| 
       52 
52 
     | 
    
         
             
                - - ">="
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       55 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
70 
     | 
    
         
             
              name: bundler
         
     | 
| 
       57 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -136,6 +150,20 @@ dependencies: 
     | 
|
| 
       136 
150 
     | 
    
         
             
                - - ">="
         
     | 
| 
       137 
151 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
152 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 153 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 154 
     | 
    
         
            +
              name: byebug
         
     | 
| 
      
 155 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 156 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 157 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 158 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 159 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 160 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 161 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 162 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 163 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 164 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 165 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 166 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       139 
167 
     | 
    
         
             
            description: Generates starter cli tool project.
         
     | 
| 
       140 
168 
     | 
    
         
             
            email:
         
     | 
| 
       141 
169 
     | 
    
         
             
            - tongueroo@gmail.com
         
     | 
| 
         @@ -168,12 +196,12 @@ files: 
     | 
|
| 
       168 
196 
     | 
    
         
             
            - lib/starter_project/spec/lib/cli_spec.rb
         
     | 
| 
       169 
197 
     | 
    
         
             
            - lib/starter_project/spec/spec_helper.rb
         
     | 
| 
       170 
198 
     | 
    
         
             
            - lib/starter_project/thor_template.gemspec
         
     | 
| 
       171 
     | 
    
         
            -
            - lib/templates/Rakefile
         
     | 
| 
       172 
199 
     | 
    
         
             
            - lib/thor_template.rb
         
     | 
| 
       173 
200 
     | 
    
         
             
            - lib/thor_template/cli.rb
         
     | 
| 
       174 
201 
     | 
    
         
             
            - lib/thor_template/cli/help.rb
         
     | 
| 
       175 
202 
     | 
    
         
             
            - lib/thor_template/command.rb
         
     | 
| 
       176 
203 
     | 
    
         
             
            - lib/thor_template/generator.rb
         
     | 
| 
      
 204 
     | 
    
         
            +
            - lib/thor_template/renamer.rb
         
     | 
| 
       177 
205 
     | 
    
         
             
            - lib/thor_template/version.rb
         
     | 
| 
       178 
206 
     | 
    
         
             
            - spec/lib/cli_spec.rb
         
     | 
| 
       179 
207 
     | 
    
         
             
            - spec/lib/generator_spec.rb
         
     |