kickstartgem 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /pkg
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+
data/README.markdown ADDED
@@ -0,0 +1,12 @@
1
+ # Kickstart
2
+
3
+ A gem that lets you quickly generate new projects from existing templates.
4
+
5
+ ## Use
6
+
7
+ Kickstart any of your existing templates with the kickstart command. kickstart new template_name project_name -opts
8
+
9
+ kickstart new scala_template my_new_scala_project
10
+
11
+ By default it will create a new project in the current directory
12
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/kickstart ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'kickstart'
4
+
5
+ Kickstart.kickstart(ARGV[0],ARGV[1])
data/kickstart.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $:.push File.expand_path("../lib", __FILE__)
4
+
5
+ require "kickstart"
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "kickstartgem"
9
+ s.version = Kickstart::VERSION
10
+ s.authors = ["Owain Lewis"]
11
+ s.email = ["owain@owainlewis.com"]
12
+ s.homepage = ""
13
+ s.summary = %q{easy project templates}
14
+ s.description = %q{easy project templates}
15
+
16
+ s.rubyforge_project = "kickstart"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+ s.add_development_dependency "mocha"
23
+ end
data/lib/kickstart.rb ADDED
@@ -0,0 +1,78 @@
1
+ require 'fileutils'
2
+
3
+ module Kickstart
4
+
5
+ VERSION = "0.0.1"
6
+
7
+ class << self
8
+
9
+ # This needs to be set explicitly as an ENV variable
10
+ #
11
+ # == Returns:
12
+ # A string representing the path to your template directory
13
+ #
14
+ # This needs to be set explicitly as an ENV variable
15
+ # e.g export KICKSTART="/Users/owainlewis/projects/ruby/kickstart/test/sample_projects/"
16
+ #
17
+ def template_dir
18
+ ENV["KICKSTART"]
19
+ end
20
+
21
+ def current_dir
22
+ Dir.pwd
23
+ end
24
+
25
+ def join_path(path)
26
+ File.join(template_dir,path)
27
+ end
28
+
29
+ def rename_project(old_name, new_name)
30
+ File.rename("./#{old_name}", "./#{new_name}")
31
+ end
32
+
33
+ # Returns all project templates in the template directory
34
+ def list_project_templates
35
+ fn = ->(path,file){ File.directory? path }
36
+ Dir.entries(template_dir).select { |file| fn.(template_dir,file) }.reject do |folder|
37
+ folder == "." || folder == ".."
38
+ end
39
+ end
40
+
41
+ ##
42
+ # Copy a project from src to dest.
43
+ #
44
+ def copy src,dest
45
+ if File.exists?(File.join(current_dir,dest))
46
+ puts "File aready exists"
47
+ else
48
+ FileUtils.cp_r(File.join(template_dir,src), current_dir)
49
+ rename_project("javascript_template",dest)
50
+ end
51
+ end
52
+
53
+ def find_project_template template_name
54
+ if list_project_templates.include?(template_name)
55
+ File.join(template_dir.to_s, template_name)
56
+ else
57
+ return nil
58
+ end
59
+ end
60
+
61
+ def kickstart(project_name, template_name)
62
+ if list_project_templates.include?(template_name)
63
+ unless File.exists?(project_name)
64
+ copy(template_name,project_name)
65
+ puts "Created new project #{project_name} from template: #{template_name}"
66
+ end
67
+ else
68
+ puts "Can't find template #{template_name} in #{template_dir}"
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ # Main method to call from cmd line
75
+
76
+ if __FILE__ == $0
77
+ Kickstart.kickstart(ARGV[0],ARGV[1])
78
+ end
data/test/kickstart.rb ADDED
@@ -0,0 +1,49 @@
1
+ require 'minitest/spec'
2
+ require 'minitest/autorun'
3
+
4
+ require 'mocha'
5
+
6
+ require_relative '../lib/kickstart'
7
+
8
+ describe Kickstart do
9
+
10
+ # Test setup
11
+ before do
12
+ @base = Kickstart
13
+ end
14
+
15
+ describe 'template_dir' do
16
+ it 'should return a string' do
17
+ Kickstart.stubs(:template_dir).returns(File.join(Dir.pwd, "test/sample_projects"))
18
+ path = Kickstart.template_dir
19
+ path.must_be_instance_of String
20
+ end
21
+ end
22
+
23
+ describe 'current_dir' do
24
+ it 'should return a string' do
25
+ path = Kickstart.current_dir
26
+ path.must_be_instance_of String
27
+ end
28
+
29
+ it 'should return the current pwd' do
30
+ assert_equal Kickstart.current_dir, Dir.pwd
31
+ end
32
+ end
33
+
34
+ describe 'list_project_templates' do
35
+ it 'should list the projects in the sample project folder' do
36
+ Kickstart.stubs(:template_dir).returns(File.join(Dir.pwd, "test/sample_projects"))
37
+ result = @base.list_project_templates
38
+ result.size.must_equal 2
39
+ assert result.include?('javascript_template')
40
+ assert result.include?('scala_template')
41
+ end
42
+ end
43
+
44
+ describe 'find_project_template' do
45
+ it 'should return the full path to a project' do
46
+
47
+ end
48
+ end
49
+ end
File without changes
File without changes
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kickstartgem
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Owain Lewis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mocha
16
+ requirement: &2159175260 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *2159175260
25
+ description: easy project templates
26
+ email:
27
+ - owain@owainlewis.com
28
+ executables:
29
+ - kickstart
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - README.markdown
36
+ - Rakefile
37
+ - bin/kickstart
38
+ - kickstart.gemspec
39
+ - lib/kickstart.rb
40
+ - test/kickstart.rb
41
+ - test/sample_projects/javascript_template/README.md
42
+ - test/sample_projects/javascript_template/index.html
43
+ - test/sample_projects/javascript_template/main.js
44
+ - test/sample_projects/javascript_template/vendor/jquery.js
45
+ - test/sample_projects/scala_template/README.markdown
46
+ - test/sample_projects/scala_template/main.scala
47
+ homepage: ''
48
+ licenses: []
49
+ post_install_message:
50
+ rdoc_options: []
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubyforge_project: kickstart
67
+ rubygems_version: 1.8.5
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: easy project templates
71
+ test_files:
72
+ - test/kickstart.rb
73
+ - test/sample_projects/javascript_template/README.md
74
+ - test/sample_projects/javascript_template/index.html
75
+ - test/sample_projects/javascript_template/main.js
76
+ - test/sample_projects/javascript_template/vendor/jquery.js
77
+ - test/sample_projects/scala_template/README.markdown
78
+ - test/sample_projects/scala_template/main.scala