minigen 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +80 -0
- data/bin/mgen +6 -0
- data/lib/minigen.rb +15 -0
- data/lib/minigen/generator.rb +58 -0
- data/lib/template/README.md +24 -0
- data/lib/template/lib/project.rb +9 -0
- data/lib/template/project.gemspec +20 -0
- data/lib/template/test/project_test.rb +9 -0
- data/lib/template/test/test_helper.rb +28 -0
- data/test/minigen_test.rb +29 -0
- data/test/test_helper.rb +37 -0
- metadata +66 -0
data/README.md
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
minigen
|
2
|
+
=======
|
3
|
+
|
4
|
+
> just another projects generator
|
5
|
+
|
6
|
+
installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
$: [sudo] gem install minigen
|
10
|
+
|
11
|
+
description
|
12
|
+
-----------
|
13
|
+
|
14
|
+
a project generator that creates a tree like this (eg.):
|
15
|
+
|
16
|
+
.
|
17
|
+
├── project.gemspec
|
18
|
+
├── lib
|
19
|
+
│ └── project.rb
|
20
|
+
├── README.md
|
21
|
+
└── test
|
22
|
+
├── project_test.rb
|
23
|
+
└── test_helper.rb
|
24
|
+
|
25
|
+
### PROJECT.gemspec
|
26
|
+
|
27
|
+
a simple gemspec that takes the variable "version" from the constant "VERSION" present in "lib/project.rb"
|
28
|
+
|
29
|
+
### lib/PROJECT.rb
|
30
|
+
|
31
|
+
contains something like:
|
32
|
+
|
33
|
+
module YourProject
|
34
|
+
VERSION = "0.0.0"
|
35
|
+
end
|
36
|
+
|
37
|
+
### README.md
|
38
|
+
|
39
|
+
a simple, markdown formatted, readme that contains some essential points (see paragraph one of: [pengwynn's](http://twitter/pengwynn) [awesome post](http://thechangelog.com/post/3032074343/top-ten-reasons-why-i-wont-use-your-open-source-project))
|
40
|
+
|
41
|
+
### test/test_helper.rb
|
42
|
+
|
43
|
+
This contains the supercool [defunkt's](http://twitter.com/defunkt) [test/spec/mini](https://gist.github.com/307649)
|
44
|
+
|
45
|
+
### test/project_test.rb
|
46
|
+
|
47
|
+
a failing test
|
48
|
+
|
49
|
+
|
50
|
+
synopsis
|
51
|
+
--------
|
52
|
+
|
53
|
+
$: mgen mycoolproject
|
54
|
+
|
55
|
+
>: - Generating your project: mycoolproject
|
56
|
+
|
57
|
+
license
|
58
|
+
-------
|
59
|
+
|
60
|
+
This program is distributed under the [GNU Affero General Public License](http://www.gnu.org/licenses/agpl.html)
|
61
|
+
|
62
|
+
contribution and issues
|
63
|
+
-----------------------
|
64
|
+
|
65
|
+
Want to contribute?
|
66
|
+
|
67
|
+
[Fork][0] minigen
|
68
|
+
|
69
|
+
Have issues?
|
70
|
+
|
71
|
+
Create an [Issue][1]
|
72
|
+
|
73
|
+
|
74
|
+
author
|
75
|
+
------
|
76
|
+
|
77
|
+
Gildo Fiorito (fyskij@gmail.com)
|
78
|
+
|
79
|
+
[0]: http://help.github.com/forking/
|
80
|
+
[1]: http://github.com/fyskij/minigen/issues
|
data/bin/mgen
ADDED
data/lib/minigen.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
LIBDIR = File.dirname(__FILE__)
|
4
|
+
|
5
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
6
|
+
$LOAD_PATH.unshift(File.join('minigen'))
|
7
|
+
$LOAD_PATH.unshift(dir)
|
8
|
+
|
9
|
+
require "minigen/generator"
|
10
|
+
|
11
|
+
module Minigen
|
12
|
+
|
13
|
+
VERSION = "0.0.1"
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Minigen
|
2
|
+
|
3
|
+
# Various methods to create the project skel
|
4
|
+
class Generator
|
5
|
+
|
6
|
+
# Public: Initialize a new Project
|
7
|
+
def initialize name
|
8
|
+
@name = name.downcase
|
9
|
+
|
10
|
+
# Checks if a folder exists with the name @name
|
11
|
+
# if false, exits with a message
|
12
|
+
abort "A folder with that name already exists" if File.directory? @name
|
13
|
+
|
14
|
+
# Runs the method that copies the template
|
15
|
+
copy!
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
# Private: Copies the default template to @name dir
|
20
|
+
def copy!
|
21
|
+
puts " - \033[32mGenerating\033[0m your project: #{@name}"
|
22
|
+
Dir.mkdir @name
|
23
|
+
FileUtils.cp_r( Dir.glob(File.join(LIBDIR, 'template/*')), @name )
|
24
|
+
Dir.chdir @name
|
25
|
+
Dir.glob("**/*.{rb,md,gemspec}").each {|f| ore f, "project", @name}
|
26
|
+
Dir.glob("**/*.{rb,md,gemspec}").each {|f| ore f, "Project", @name.capitalize}
|
27
|
+
File.rename "test/project_test.rb", "test/#{@name}_test.rb"
|
28
|
+
File.rename "lib/project.rb", "lib/#{@name}.rb"
|
29
|
+
File.rename "project.gemspec", "#{@name}.gemspec"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Private: Opens, Reads and Edits a file
|
33
|
+
#
|
34
|
+
# file - The file to edit
|
35
|
+
# old - The term to be replaced
|
36
|
+
# new - The new term
|
37
|
+
#
|
38
|
+
# Examples
|
39
|
+
#
|
40
|
+
# ore('README.md', 'Minigen', 'Rubygems')
|
41
|
+
# # => True
|
42
|
+
#
|
43
|
+
# Returns True if everything went well :D
|
44
|
+
def ore file, old, new
|
45
|
+
o = File.read(file).gsub! /#{old}/, new
|
46
|
+
n = File.new(file, "w+")
|
47
|
+
n.puts(o)
|
48
|
+
n.close
|
49
|
+
return true
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
private :copy!, :ore
|
55
|
+
|
56
|
+
end #Generator
|
57
|
+
|
58
|
+
end #Minigen
|
@@ -0,0 +1,24 @@
|
|
1
|
+
project
|
2
|
+
=======
|
3
|
+
|
4
|
+
> mini description
|
5
|
+
|
6
|
+
installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
$: [sudo] gem install project
|
10
|
+
|
11
|
+
description
|
12
|
+
-----------
|
13
|
+
|
14
|
+
|
15
|
+
license
|
16
|
+
-------
|
17
|
+
|
18
|
+
This program is distributed under GPL
|
19
|
+
|
20
|
+
contribution and issues
|
21
|
+
-----------------------
|
22
|
+
|
23
|
+
author
|
24
|
+
------
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.expand_path("../lib/project", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
|
5
|
+
s.name = 'project'
|
6
|
+
s.version = Project::VERSION
|
7
|
+
|
8
|
+
s.summary = ""
|
9
|
+
s.description = ""
|
10
|
+
|
11
|
+
s.authors = [""]
|
12
|
+
s.homepage = ''
|
13
|
+
|
14
|
+
s.require_paths = %w[lib]
|
15
|
+
s.files = %w( README.md )
|
16
|
+
s.files += Dir.glob("lib/**/*")
|
17
|
+
s.files += Dir.glob("test/*")
|
18
|
+
|
19
|
+
s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'project'
|
4
|
+
|
5
|
+
##
|
6
|
+
# test/spec/mini 5
|
7
|
+
# http://gist.github.com/307649
|
8
|
+
# chris@ozmm.org
|
9
|
+
#
|
10
|
+
def context(*args, &block)
|
11
|
+
return super unless (name = args.first) && block
|
12
|
+
require 'test/unit'
|
13
|
+
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
|
14
|
+
def self.test(name, &block)
|
15
|
+
define_method("test_#{name.to_s.gsub(/\W/,'_')}", &block) if block
|
16
|
+
end
|
17
|
+
def self.xtest(*args) end
|
18
|
+
def self.context(*args, &block) instance_eval(&block) end
|
19
|
+
def self.setup(&block)
|
20
|
+
define_method(:setup) { self.class.setups.each { |s| instance_eval(&s) } }
|
21
|
+
setups << block
|
22
|
+
end
|
23
|
+
def self.setups; @setups ||= [] end
|
24
|
+
def self.teardown(&block) define_method(:teardown, &block) end
|
25
|
+
end
|
26
|
+
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
|
27
|
+
klass.class_eval &block
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
2
|
+
|
3
|
+
context "Minigen" do
|
4
|
+
|
5
|
+
context "generator" do
|
6
|
+
setup do
|
7
|
+
@project = "simplegem"
|
8
|
+
Minigen::Generator.new(@project)
|
9
|
+
end
|
10
|
+
|
11
|
+
test "dir exists" do
|
12
|
+
assert File.directory? @project
|
13
|
+
end
|
14
|
+
|
15
|
+
test "files exists" do
|
16
|
+
Dir.chdir @project
|
17
|
+
assert File.exist? "README.md"
|
18
|
+
assert File.exist? "test/#{@project}_test.rb"
|
19
|
+
assert File.exist? "test/test_helper.rb"
|
20
|
+
assert File.exist? "#{@project}.gemspec"
|
21
|
+
assert File.exist? "lib/#{@project}.rb"
|
22
|
+
end
|
23
|
+
|
24
|
+
test "correct names in files" do
|
25
|
+
Dir.chdir("#{@project}")
|
26
|
+
assert ref "#{@project}.gemspec" @project.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin; require 'turn'; rescue LoadError; end
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
+
require 'minigen'
|
5
|
+
|
6
|
+
##
|
7
|
+
# test/spec/mini 5
|
8
|
+
# http://gist.github.com/307649
|
9
|
+
# chris@ozmm.org
|
10
|
+
#
|
11
|
+
def context(*args, &block)
|
12
|
+
return super unless (name = args.first) && block
|
13
|
+
require 'test/unit'
|
14
|
+
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
|
15
|
+
def self.test(name, &block)
|
16
|
+
define_method("test_#{name.to_s.gsub(/\W/,'_')}", &block) if block
|
17
|
+
end
|
18
|
+
def self.xtest(*args) end
|
19
|
+
def self.context(*args, &block) instance_eval(&block) end
|
20
|
+
def self.setup(&block)
|
21
|
+
define_method(:setup) { self.class.setups.each { |s| instance_eval(&s) } }
|
22
|
+
setups << block
|
23
|
+
end
|
24
|
+
def self.setups; @setups ||= [] end
|
25
|
+
def self.teardown(&block) define_method(:teardown, &block) end
|
26
|
+
end
|
27
|
+
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
|
28
|
+
klass.class_eval &block
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# Opens the file, reads the file, splits the file,
|
33
|
+
# and searches for a term in the array
|
34
|
+
#
|
35
|
+
def ref(f,t)
|
36
|
+
File.read(f).split("\n").grep /#{t}/
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minigen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ermenegildo Fiorito
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-02-10 00:00:00 +01:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: a project generator that creates a simple ruby library skel
|
18
|
+
email:
|
19
|
+
executables:
|
20
|
+
- mgen
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files: []
|
24
|
+
|
25
|
+
files:
|
26
|
+
- README.md
|
27
|
+
- lib/minigen/generator.rb
|
28
|
+
- lib/minigen.rb
|
29
|
+
- lib/template/test/project_test.rb
|
30
|
+
- lib/template/test/test_helper.rb
|
31
|
+
- lib/template/README.md
|
32
|
+
- lib/template/lib/project.rb
|
33
|
+
- lib/template/project.gemspec
|
34
|
+
- test/test_helper.rb
|
35
|
+
- test/minigen_test.rb
|
36
|
+
- bin/mgen
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://github.com/fyskij/minigen#readme
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
requirements: []
|
59
|
+
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 1.5.0
|
62
|
+
signing_key:
|
63
|
+
specification_version: 3
|
64
|
+
summary: just another projects generator
|
65
|
+
test_files:
|
66
|
+
- test/test_helper.rb
|