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 +1 -0
- data/Gemfile +2 -0
- data/README.markdown +12 -0
- data/Rakefile +1 -0
- data/bin/kickstart +5 -0
- data/kickstart.gemspec +23 -0
- data/lib/kickstart.rb +78 -0
- data/test/kickstart.rb +49 -0
- data/test/sample_projects/javascript_template/README.md +0 -0
- data/test/sample_projects/javascript_template/index.html +0 -0
- data/test/sample_projects/javascript_template/main.js +0 -0
- data/test/sample_projects/javascript_template/vendor/jquery.js +0 -0
- data/test/sample_projects/scala_template/README.markdown +0 -0
- data/test/sample_projects/scala_template/main.scala +0 -0
- metadata +78 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/pkg
|
data/Gemfile
ADDED
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
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
|
File without changes
|
File without changes
|
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
|