otp_kickoff 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Leandro Silva
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,46 @@
1
+ = otp_kickoff
2
+
3
+ Simple generator to kick off Erlang/OTP projects.
4
+
5
+ == Install and configuration
6
+
7
+ Install the gemcutter (a awesome gem hosting) support:
8
+
9
+ sudo gem install gemcutter
10
+
11
+ More about gemcutter here http://gemcutter.org.
12
+
13
+ Next, install the otp_kickoff:
14
+
15
+ sudo gem install otp_kickoff
16
+
17
+ Finally, configure your preferences:
18
+
19
+ otp_kickoff configure --name=leandro --email=leandrodoze@gmail.com
20
+
21
+ == Usage
22
+
23
+ Type:
24
+
25
+ otp_kickoff new_application --name=amazingapp
26
+
27
+ That will generate:
28
+
29
+ create amazingapp/src
30
+ create amazingapp/ebin
31
+ create amazingapp/deps
32
+ create amazingapp/src/amazingapp_app.app
33
+ create amazingapp/src/amazingapp_app.erl
34
+ create amazingapp/src/amazingapp_sup.erl
35
+ create amazingapp/src/amazingapp_server.erl
36
+ create amazingapp/src/amazingapp_handler.erl
37
+ create amazingapp/src/amazingapp.erl
38
+ create amazingapp/src/amazingapp.hrl
39
+
40
+ == Next
41
+
42
+ Enjoy a lot with Erlang/OTP programming!
43
+
44
+ == Copyright
45
+
46
+ Copyright (c) 2009 Leandro Silva. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "otp_kickoff"
8
+ gem.summary = %Q{Simple generator to kick off Erlang/OTP projects}
9
+ gem.email = "leandrodoze@gmail.com"
10
+ gem.homepage = "http://github.com/leandrosilva/otp_kickoff"
11
+ gem.authors = ["Leandro Silva"]
12
+ gem.add_development_dependency "rspec"
13
+ gem.add_dependency "thor"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'spec/rake/spectask'
21
+ Spec::Rake::SpecTask.new(:spec) do |spec|
22
+ spec.libs << 'lib' << 'spec'
23
+ spec.spec_files = FileList['spec/**/*_spec.rb']
24
+ end
25
+
26
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
27
+ spec.libs << 'lib' << 'spec'
28
+ spec.pattern = 'spec/**/*_spec.rb'
29
+ spec.rcov = true
30
+ end
31
+
32
+ task :spec => :check_dependencies
33
+
34
+ task :default => :spec
35
+
36
+ require 'rake/rdoctask'
37
+ Rake::RDocTask.new do |rdoc|
38
+ if File.exist?('VERSION')
39
+ version = File.read('VERSION')
40
+ else
41
+ version = ""
42
+ end
43
+
44
+ rdoc.rdoc_dir = 'rdoc'
45
+ rdoc.title = "otp_kickoff #{version}"
46
+ rdoc.rdoc_files.include('README*')
47
+ rdoc.rdoc_files.include('lib/**/*.rb')
48
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.4
data/bin/otp_kickoff ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/otp_kickoff')
4
+
5
+ OTPKickOff.start
@@ -0,0 +1,103 @@
1
+ require 'rubygems'
2
+ require 'thor'
3
+ require 'yaml'
4
+
5
+ #
6
+ # Path to configuration file
7
+ #
8
+ CONFIGURATION_FILE = '~/.otp_kickoff'
9
+
10
+ #
11
+ # Thor classes, the magic of tasks!
12
+ #
13
+ class OTPKickOff < Thor
14
+ include Thor::Actions
15
+
16
+ #
17
+ # Setup
18
+ #
19
+
20
+ def self.source_root
21
+ File.expand_path(File.dirname(__FILE__) + '/..')
22
+ end
23
+
24
+ def self.destination_root
25
+ File.expand_path(File.dirname('.'))
26
+ end
27
+
28
+ #
29
+ # Tasks
30
+ #
31
+
32
+ no_tasks { attr_accessor :application_name, :author_name, :author_email, :today }
33
+
34
+ # task: configure
35
+
36
+ desc 'configure --author=AUTHOR --email=AUTHOR_EMAIL', 'configure informations about author'
37
+ method_options :author => :string, :email => :string
38
+
39
+ def configure
40
+ #set data about author
41
+ @author_name = options[:author]
42
+ @author_email = options[:email]
43
+
44
+ create_file CONFIGURATION_FILE do
45
+ %Q{
46
+ author_name: #{author_name}
47
+ author_email: #{author_email}
48
+ }
49
+ end
50
+ end
51
+
52
+ # task: new_application
53
+
54
+ desc 'new_application --name=APPLICATION_NAME', 'generate a new Erlang/OTP application stub'
55
+ method_options :name => :string
56
+
57
+ def new_application
58
+ # set data to templates
59
+ @application_name = options[:name]
60
+
61
+ config_info = ConfigInfo.new
62
+ @author_name = config_info.author_name
63
+ @author_email = config_info.author_email
64
+
65
+ @today = Date.today
66
+
67
+ # generate templates
68
+ template 'resources/template_app.app', "#{application_name}/src/#{application_name}_app.app"
69
+ template 'resources/template_app.erl', "#{application_name}/src/#{application_name}_app.erl"
70
+ template 'resources/template_sup.erl', "#{application_name}/src/#{application_name}_sup.erl"
71
+ template 'resources/template_server.erl', "#{application_name}/src/#{application_name}_server.erl"
72
+ template 'resources/template_handler.erl', "#{application_name}/src/#{application_name}_handler.erl"
73
+ template 'resources/template_appstart.erl', "#{application_name}/src/#{application_name}.erl"
74
+ template 'resources/template_include.hrl', "#{application_name}/src/#{application_name}.hrl"
75
+
76
+ # create required directories
77
+ empty_directory "#{application_name}/ebin"
78
+ empty_directory "#{application_name}/deps"
79
+ empty_directory "#{application_name}/priv"
80
+ end
81
+ end
82
+
83
+ #
84
+ # Helper class to get informations from configuration file (~/.otp_kickoff)
85
+ #
86
+ class ConfigInfo
87
+ attr_accessor :author_name, :author_email
88
+
89
+ def initialize
90
+ begin
91
+ info = YAML.load_file(File.expand_path(CONFIGURATION_FILE))
92
+ rescue
93
+ puts "I'm sorry but the configuration file doesn't exists."
94
+ puts "Please run the command below:"
95
+ puts " otp_kickoff configure --author=YOUR_NAME --email=YOUR_EMAIL"
96
+
97
+ exit 0
98
+ end
99
+
100
+ @author_name = info["author_name"]
101
+ @author_email = info["author_email"]
102
+ end
103
+ end
@@ -0,0 +1,65 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{otp_kickoff}
8
+ s.version = "0.0.4"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Leandro Silva"]
12
+ s.date = %q{2009-10-19}
13
+ s.default_executable = %q{otp_kickoff}
14
+ s.email = %q{leandrodoze@gmail.com}
15
+ s.executables = ["otp_kickoff"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".gitignore",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/otp_kickoff",
28
+ "lib/otp_kickoff.rb",
29
+ "otp_kickoff.gemspec",
30
+ "resources/template_app.app",
31
+ "resources/template_app.erl",
32
+ "resources/template_appstart.erl",
33
+ "resources/template_handler.erl",
34
+ "resources/template_include.hrl",
35
+ "resources/template_server.erl",
36
+ "resources/template_sup.erl",
37
+ "spec/otp-kickoff_spec.rb",
38
+ "spec/spec_helper.rb"
39
+ ]
40
+ s.homepage = %q{http://github.com/leandrosilva/otp_kickoff}
41
+ s.rdoc_options = ["--charset=UTF-8"]
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = %q{1.3.5}
44
+ s.summary = %q{Simple generator to kick off Erlang/OTP projects}
45
+ s.test_files = [
46
+ "spec/otp-kickoff_spec.rb",
47
+ "spec/spec_helper.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ s.add_development_dependency(%q<rspec>, [">= 0"])
56
+ s.add_runtime_dependency(%q<thor>, [">= 0"])
57
+ else
58
+ s.add_dependency(%q<rspec>, [">= 0"])
59
+ s.add_dependency(%q<thor>, [">= 0"])
60
+ end
61
+ else
62
+ s.add_dependency(%q<rspec>, [">= 0"])
63
+ s.add_dependency(%q<thor>, [">= 0"])
64
+ end
65
+ end
@@ -0,0 +1,21 @@
1
+ %%
2
+ %% Resource application file
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ {application, <%=application_name%>_app,
14
+ [{description, "<%=application_name.capitalize%> application version 1.0"},
15
+ {vsn, "1.0"},
16
+ {modules, [<%=application_name%>_sup, <%=application_name%>_app, <%=application_name%>_server]},
17
+ {registered, [<%=application_name%>_sup]},
18
+ {applications, [kernel, stdlib, sasl]},
19
+ {env, [{var1, "Value of environment variable 1"}]}
20
+ {mod, {<%=application_name%>_app, []}}
21
+ ]}.
@@ -0,0 +1,36 @@
1
+ %%
2
+ %% Application module
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ -module(<%=application_name%>_app).
14
+ -author('<%=author_name%> <<%=author_email%>>').
15
+
16
+ -behaviour(application).
17
+
18
+ -export([start/2, stop/1]).
19
+
20
+ %% @spec start(_Type, _StartArgs) -> {ok, Pid}
21
+ %% @doc Application start callback <%=application_name%>
22
+ start(_Type, _StartArgs) ->
23
+ case <%=application_name%>_sup:start_link() of
24
+ {ok, Pid} ->
25
+ alarm_handler:clear_alarm({application_stopped, ?MODULE}),
26
+ {ok, Pid};
27
+ Error ->
28
+ alarm_handler:set_alarm({{application_stopped, ?MODULE}, []}),
29
+ Error
30
+ end.
31
+
32
+ %% @spec stop(_State) -> ok
33
+ %% @doc Application stop callback for <%=application_name%>
34
+ stop(_State) ->
35
+ alarm_handler:set_alarm({{application_stopped, ?MODULE}, []}),
36
+ ok.
@@ -0,0 +1,26 @@
1
+ %%
2
+ %% Start application module
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ -module(<%=application_name%>).
14
+ -author('<%=author_name%> <<%=author_email%>>').
15
+
16
+ -export ([start/0, stop/0]).
17
+
18
+ %% @spec start() -> ok
19
+ %% @doc Start the <%=application_name%> application
20
+ start() ->
21
+ application:start(<%=application_name%>).
22
+
23
+ %% @spec stop() -> ok
24
+ %% @doc Stop the <%=application_name%> application
25
+ stop() ->
26
+ application:stop(%=application_name%>).
@@ -0,0 +1,35 @@
1
+ %%
2
+ %% Handler module that can be used by server to catch and handle events
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ -module(<%=application_name%>_handler).
14
+ -author('<%=author_name%> <<%=author_email%>>').
15
+
16
+ -export([init/1, terminate/1, handle_event/2]).
17
+
18
+ %% @spec init(State) -> State
19
+ %% @doc Handler init callback
20
+ init(State) -> State.
21
+
22
+ %% @spec terminate(State) -> State
23
+ %% @doc Handler terminate callback
24
+ terminate(State) ->
25
+ {ok, State}.
26
+
27
+ %% @spec handle_event({event, _Event}, State) -> {ok, State}
28
+ %% @doc Handle event function
29
+ handle_event({event, _Event}, State) ->
30
+ {ok, State};
31
+
32
+ %% @spec handle_event(_Event, State) -> State
33
+ %% @doc Handle event "catch" function
34
+ handle_event(_Event, State) ->
35
+ State.
@@ -0,0 +1,11 @@
1
+ %%
2
+ %% Include file
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
@@ -0,0 +1,77 @@
1
+ %%
2
+ %% Supervised worker process module
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ -module(<%=application_name%>_server).
14
+ -author('<%=author_name%> <<%=author_email%>>').
15
+
16
+ -behaviour(gen_server).
17
+
18
+ %% operation & maintenance api
19
+ -export([start_link/0]).
20
+
21
+ %% gen_server callbacks
22
+ -export([init/1, handle_call/3, handle_cast/2,
23
+ handle_info/2, terminate/2, code_change/3]).
24
+
25
+ %%
26
+ %% Operation & Maintenance API
27
+ %%
28
+
29
+ %% @spec start_link() -> ServerReturn
30
+ %% @doc Start the server for <%=application_name%>
31
+ start_link() ->
32
+ gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
33
+
34
+ %% @spec stop() -> ServerReturn
35
+ %% @doc Stopt the server for <%=application_name%>
36
+ stop() ->
37
+ gen_server:cast(?MODULE, stop).
38
+
39
+ %%
40
+ %% Genserver callback functions
41
+ %%
42
+
43
+ %% @spec init(State) -> {ok, State}
44
+ %% @doc Callback for initialize the server
45
+ init(State) ->
46
+ {ok, State}.
47
+
48
+ %% @spec handle_call(_Request, _From, State) -> {reply, Reply, State}
49
+ %% @doc Callback for synchronous requests
50
+ handle_call(_Request, _From, State) ->
51
+ Reply = ok,
52
+ {reply, Reply, State}.
53
+
54
+ %% @spec handle_cast(stop, State) -> {stop, normal, State}
55
+ %% @doc Callback for assynchronous messages
56
+ handle_cast(stop, State) ->
57
+ {stop, normal, State};
58
+
59
+ %% @spec handle_cast(_Msg, State) -> {noreply, State}
60
+ %% @doc Callback for assynchronous messages
61
+ handle_cast(_Msg, State) ->
62
+ {noreply, State}.
63
+
64
+ %% @spec handle_info(_Info, State) -> {noreply, State}
65
+ %% @doc Callback for give informations about server
66
+ handle_info(_Info, State) ->
67
+ {noreply, State}.
68
+
69
+ %% @spec terminate(_Reason, _State) -> ok
70
+ %% @doc Callback for free resources used by the server
71
+ terminate(_Reason, _State) ->
72
+ ok.
73
+
74
+ %% @spec code_change(_OldVsn, State, _Extra) -> {ok, State}
75
+ %% @doc Callback for upgrade source code
76
+ code_change(_OldVsn, State, _Extra) ->
77
+ {ok, State}.
@@ -0,0 +1,47 @@
1
+ %%
2
+ %% Supervisor module
3
+ %%
4
+ %% File : <%=application_name%>_handler.erl
5
+ %% Created: <%=Date.today%>
6
+ %%
7
+ %% @author <%=author_name%> <<%=author_email%>>
8
+ %% @copyright <%=today.year%> <%=author_name%>
9
+ %%
10
+ %% @doc TODO make nice description
11
+ %%
12
+
13
+ -module(<%=application_name%>_sup).
14
+ -author('<%=author_name%> <<%=author_email%>>').
15
+
16
+ -behaviour(supervisor).
17
+
18
+ %% operation & maintenance api
19
+ -export([start_link/0]).
20
+
21
+ %% supervisor callback
22
+ -export([init/1]).
23
+
24
+ -define(SERVER, ?MODULE).
25
+
26
+ %%
27
+ %% Operation & Maintenance API
28
+ %%
29
+
30
+ %% @spec start_link() -> SupervisorReturn
31
+ %% @doc Start the supervisor for <%=application_name%>
32
+ start_link() ->
33
+ supervisor:start_link({local, ?SERVER}, ?MODULE, []).
34
+
35
+ %%
36
+ %% Supervisor callback function
37
+ %%
38
+
39
+ %% @spec init([]) -> SupervisorSpec
40
+ %% @doc Callback for initialize the supervisor for <%=application_name%>
41
+ init([]) ->
42
+ %% <%=application_name%>_server is a supervisioned child process
43
+ Server = {<%=application_name%>_server_child,
44
+ {<%=application_name%>_server, start_link, []},permanent, 2000, worker, [<%=application_name%>_server]},
45
+
46
+ %% Restart strategies for childs
47
+ {ok, {{one_for_one, 10, 1}, [Server]}}.
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "OtpKickoff" do
4
+ it "fails" do
5
+ fail "hey buddy, you should probably rename this file and start specing for real"
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'otp-kickoff'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: otp_kickoff
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Leandro Silva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-19 00:00:00 -07:00
13
+ default_executable: otp_kickoff
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: thor
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description:
36
+ email: leandrodoze@gmail.com
37
+ executables:
38
+ - otp_kickoff
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - LICENSE
43
+ - README.rdoc
44
+ files:
45
+ - .document
46
+ - .gitignore
47
+ - LICENSE
48
+ - README.rdoc
49
+ - Rakefile
50
+ - VERSION
51
+ - bin/otp_kickoff
52
+ - lib/otp_kickoff.rb
53
+ - otp_kickoff.gemspec
54
+ - resources/template_app.app
55
+ - resources/template_app.erl
56
+ - resources/template_appstart.erl
57
+ - resources/template_handler.erl
58
+ - resources/template_include.hrl
59
+ - resources/template_server.erl
60
+ - resources/template_sup.erl
61
+ - spec/otp-kickoff_spec.rb
62
+ - spec/spec_helper.rb
63
+ has_rdoc: true
64
+ homepage: http://github.com/leandrosilva/otp_kickoff
65
+ licenses: []
66
+
67
+ post_install_message:
68
+ rdoc_options:
69
+ - --charset=UTF-8
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: "0"
77
+ version:
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ version:
84
+ requirements: []
85
+
86
+ rubyforge_project:
87
+ rubygems_version: 1.3.5
88
+ signing_key:
89
+ specification_version: 3
90
+ summary: Simple generator to kick off Erlang/OTP projects
91
+ test_files:
92
+ - spec/otp-kickoff_spec.rb
93
+ - spec/spec_helper.rb