kickstartgem 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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