auser-skelerl 0.0.4 → 0.0.5
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/Rakefile +7 -3
- data/VERSION.yml +4 -0
- data/bin/gen_server +0 -0
- data/bin/makefile +17 -0
- data/bin/skelerl +55 -12
- data/bin/skelerl-gen_server +29 -0
- data/bin/skelerl-makefile +29 -0
- data/config/jeweler.rb +41 -0
- data/generators/gen_server/USAGE +3 -3
- data/generators/gen_server/gen_server_generator.rb +36 -22
- data/generators/gen_server/templates/README.txt +1 -0
- data/generators/gen_server/templates/Rakefile +1 -0
- data/generators/gen_server/templates/gen_server.erl +107 -0
- data/generators/gen_server/templates/gitignore +3 -0
- data/generators/makefile/USAGE +5 -0
- data/generators/makefile/makefile_generator.rb +68 -0
- data/generators/makefile/templates/Emakefile +5 -0
- data/generators/makefile/templates/Makefile +31 -0
- data/{ebin/packager.app → generators/makefile/templates/appfile.app.erb} +6 -6
- data/generators/makefile/templates/make_boot.erl.erb +29 -0
- data/generators/makefile/templates/start.sh +4 -0
- data/generators/skeleton/skeleton_generator.rb +2 -0
- data/generators/skeleton/templates/Rakefile +2 -1
- data/generators/skeleton/templates/gitignore +15 -1
- data/script/generate +1 -1
- data/tasks/build.rake +97 -5
- metadata +41 -48
- data/Manifest.txt +0 -43
- data/config/hoe.rb +0 -73
- data/examples/example_runner.rb +0 -24
- data/include/empty +0 -0
- data/lib/skelerl.rb +0 -22
- data/lib/skelerl/core/object.rb +0 -27
- data/lib/skelerl/erlpers/core/array.rb +0 -10
- data/lib/skelerl/erlpers/core/object.rb +0 -34
- data/lib/skelerl/erlpers/erl_mapper.rb +0 -70
- data/lib/skelerl/erlpers/mappers/command.rb +0 -13
- data/lib/skelerl/erlpers/mappers/context.rb +0 -39
- data/lib/skelerl/erlpers/mappers/namespace.rb +0 -8
- data/lib/skelerl/init.rb +0 -3
- data/setup.rb +0 -1585
- data/skelerl.gemspec +0 -36
- data/src/packager.erl +0 -75
- data/tasks/deployment.rake +0 -43
- data/test/erlpers/erl_mapper_spec.rb +0 -113
- data/test/erlpers/object_spec.rb +0 -26
- data/test/helper.rb +0 -10
@@ -0,0 +1,68 @@
|
|
1
|
+
class MakefileGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
4
|
+
Config::CONFIG['ruby_install_name'])
|
5
|
+
|
6
|
+
default_options :author => nil
|
7
|
+
|
8
|
+
attr_reader :app_name, :version
|
9
|
+
|
10
|
+
def initialize(runtime_args, runtime_options = {})
|
11
|
+
super
|
12
|
+
usage if args.empty?
|
13
|
+
# @app_name = args.shift
|
14
|
+
# @destination_root = File.expand_path(".")
|
15
|
+
@destination_root = args.shift
|
16
|
+
@app_name = File.basename(File.expand_path(@destination_root))
|
17
|
+
|
18
|
+
@name = base_name
|
19
|
+
extract_options
|
20
|
+
end
|
21
|
+
|
22
|
+
def manifest
|
23
|
+
record do |m|
|
24
|
+
m.template "Makefile", "Makefile"
|
25
|
+
m.template "Emakefile", "Emakefile"
|
26
|
+
m.directory "ebin"
|
27
|
+
m.template "appfile.app.erb", "ebin/#{@app_name}.app"
|
28
|
+
m.template "start.sh", "start.sh", { :chmod => 0755 }
|
29
|
+
m.directory "src"
|
30
|
+
m.template "make_boot.erl.erb", "src/make_boot.erl"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
def banner
|
36
|
+
<<-EOS
|
37
|
+
Creates a makefile project with a bootscript generator
|
38
|
+
|
39
|
+
USAGE: #{spec.name} name
|
40
|
+
EOS
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_options!(opts)
|
44
|
+
opts.separator ''
|
45
|
+
opts.separator 'Options:'
|
46
|
+
# For each option below, place the default
|
47
|
+
# at the top of the file next to "default_options"
|
48
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
49
|
+
# "Some comment about this option",
|
50
|
+
# "Default: none") { |options[:author]| }
|
51
|
+
opts.on("-n", "--name", "Name the app") { |options[:app_name]| }
|
52
|
+
opts.on("-d", "--desc", "Description of the app") { |options[:description]| }
|
53
|
+
opts.on("-m", "--modules", "Modules used in the application") { |options[:modules]| }
|
54
|
+
opts.on("-r", "--registered", "Modules registered in the application") { |options[:registered]| }
|
55
|
+
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
56
|
+
end
|
57
|
+
|
58
|
+
def extract_options
|
59
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
60
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
61
|
+
# raw instance variable value.
|
62
|
+
# @author = options[:author]
|
63
|
+
@description = options[:desc] || "Description of your project"
|
64
|
+
@version = options[:version] || "0.1"
|
65
|
+
@modules = options[:modules] || "#{@name}_app"
|
66
|
+
@registered = options[:registered] || ""
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
LIBDIR = `erl -eval 'io:format("~s~n", [code:lib_dir()])' -s init stop -noshell`
|
2
|
+
VERSION = <%= version -%>
|
3
|
+
CC = erlc
|
4
|
+
ERL = erl
|
5
|
+
EBIN = ebin
|
6
|
+
CFLAGS = -I include -pa $(EBIN)
|
7
|
+
COMPILE = $(CC) $(CFLAGS) -o $(EBIN)
|
8
|
+
EBIN_DIRS = $(wildcard deps/*/ebin)
|
9
|
+
WEB_DIR = web/
|
10
|
+
APP = <%= app_name %>
|
11
|
+
|
12
|
+
all: ebin compile boot
|
13
|
+
|
14
|
+
compile:
|
15
|
+
@$(ERL) -pa $(EBIN_DIRS) -noinput +B -eval 'case make:all() of up_to_date -> halt(0); error -> halt(1) end.'
|
16
|
+
|
17
|
+
edoc:
|
18
|
+
@echo Generating $(APP) documentation from srcs
|
19
|
+
@$(ERL) -noinput -eval 'edoc:application($(APP), "./", [{doc, "doc/"}, {files, "src/"}])' -s erlang halt
|
20
|
+
|
21
|
+
boot:
|
22
|
+
(cd ebin; erl -pa ebin -noshell -run make_boot write_scripts $(APP))
|
23
|
+
|
24
|
+
start_all:
|
25
|
+
(cd ebin; erl -pa ebin -noshell -boot $(APP))
|
26
|
+
|
27
|
+
ebin:
|
28
|
+
@mkdir ebin
|
29
|
+
|
30
|
+
clean:
|
31
|
+
rm -rf ebin/*.beam ebin/erl_crash.dump erl_crash.dump ebin/*.boot ebin/*.rel ebin/*.script
|
@@ -1,19 +1,19 @@
|
|
1
|
-
{application,
|
1
|
+
{application, <%= app_name %>,
|
2
2
|
[
|
3
3
|
% Quick description of the server
|
4
|
-
{description, "
|
4
|
+
{description, "Description of the application"},
|
5
5
|
% Version
|
6
|
-
{vsn, "
|
6
|
+
{vsn, "<%= version -%>"},
|
7
7
|
% All modules used by the application.
|
8
|
-
{modules, [
|
8
|
+
{modules, []},
|
9
9
|
% All the registered names in the application
|
10
|
-
{registered, [
|
10
|
+
{registered, []},
|
11
11
|
% These must be started for application to run
|
12
12
|
{applications, [kernel, stdlib]},
|
13
13
|
% Environment vars
|
14
14
|
{env, []},
|
15
15
|
% Module and Args used to start
|
16
|
-
{mod, {
|
16
|
+
{mod, {<%= app_name -%>, []}},
|
17
17
|
{start_phases, []}
|
18
18
|
]
|
19
19
|
}.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
-module(make_boot).
|
2
|
+
-export([write_scripts/1]).
|
3
|
+
|
4
|
+
write_scripts(Args) ->
|
5
|
+
[Name] = Args,
|
6
|
+
io:format("write_scripts for ~p~n", [Name]),
|
7
|
+
Erts = erlang:system_info(version),
|
8
|
+
application:load(sasl),
|
9
|
+
Version = "0.1",
|
10
|
+
{value, {kernel, _, Kernel}} = lists:keysearch(kernel, 1,
|
11
|
+
application:loaded_applications()),
|
12
|
+
{value, {stdlib, _, Stdlib}} = lists:keysearch(stdlib, 1,
|
13
|
+
application:loaded_applications()),
|
14
|
+
{value, {sasl, _, Sasl}} = lists:keysearch(sasl, 1,
|
15
|
+
application:loaded_applications()),
|
16
|
+
|
17
|
+
Rel = "{release, {\"~s\", \"~s\"}, {erts, \"~s\"}, ["
|
18
|
+
"{kernel, \"~s\"}, {stdlib, \"~s\"}, {sasl, \"~s\"}, {~s, \"~s\"}]}.",
|
19
|
+
Lowername = string:to_lower(Name),
|
20
|
+
|
21
|
+
Filename = lists:flatten(Lowername ++ ".rel"),
|
22
|
+
io:format("Writing to ~p (as ~s)~n", [Filename, Lowername]),
|
23
|
+
{ok, Fs} = file:open(Filename, [write]),
|
24
|
+
|
25
|
+
io:format(Fs, Rel, [Name, Version, Erts, Kernel, Stdlib, Sasl, Lowername, Version]),
|
26
|
+
file:close(Fs),
|
27
|
+
|
28
|
+
systools:make_script(Lowername, [local]),
|
29
|
+
halt().
|
@@ -1 +1,2 @@
|
|
1
|
-
require "skelerl"
|
1
|
+
require "skelerl"
|
2
|
+
Dir.glob(File.dirname(__FILE__) + "/priv/tasks/*.rake").each {|f| load f}
|
data/script/generate
CHANGED
data/tasks/build.rake
CHANGED
@@ -12,7 +12,7 @@ EXTRA_ERLC = DEPS_FILES.map {|a| "-pa #{a}/ebin" }.join(" ")
|
|
12
12
|
|
13
13
|
ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import -o ebin -W0 #{EXTRA_ERLC}"
|
14
14
|
|
15
|
-
SRC = FileList["src
|
15
|
+
SRC = FileList["src/**/*.erl"]
|
16
16
|
SRC_OBJ = SRC.pathmap("%{src,ebin}X.beam")
|
17
17
|
|
18
18
|
DEP = DEPS_FILES.map {|d| FileList["#{d}/src/*.erl"]}
|
@@ -55,7 +55,8 @@ task :run_tests => :compile do
|
|
55
55
|
TEST_OBJ.each do |obj|
|
56
56
|
obj[%r{.*/(.*).beam}]
|
57
57
|
mod = $1
|
58
|
-
test_cmd = "erl -pa ebin -pa test/ebin -run #{mod} test -run init stop"
|
58
|
+
test_cmd = "erl -pa ebin -pa test/ebin #{EXTRA_ERLC} -run #{mod} test -run init stop"
|
59
|
+
$stdout.puts test_cmd
|
59
60
|
test_output = `#{test_cmd}`
|
60
61
|
|
61
62
|
puts test_output if Rake.application.options.trace
|
@@ -70,6 +71,74 @@ task :run_tests => :compile do
|
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
74
|
+
class << self
|
75
|
+
%w{src ebin}.each do |type|
|
76
|
+
define_method "#{type}_dirs" do
|
77
|
+
Dir[Dir.pwd + "/#{type}"] +
|
78
|
+
Dir[Dir.pwd + "/**/deps/**/#{type}"] +
|
79
|
+
Dir[Dir.pwd + "/test/#{type}"]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
desc "Run all tests with coverage"
|
85
|
+
task :coverage => :compile do
|
86
|
+
puts "Modules under test:"
|
87
|
+
TEST_OBJ.each do |obj|
|
88
|
+
obj[%r{.*/(.*).beam}]
|
89
|
+
mod = $1
|
90
|
+
next if ENV['MODULE'] && mod != ENV['MODULE']
|
91
|
+
|
92
|
+
FileUtils.mkdir(Dir.pwd + "/coverage") unless File.exists?(Dir.pwd + "/coverage")
|
93
|
+
compile = ebin_dirs.collect{|dir| "cover:compile_beam_directory(\"#{dir}\")," }.join("\n ")
|
94
|
+
analyse = src_dirs.inject([]) do |mem,dir|
|
95
|
+
Dir[dir + "/*.erl"].each do |file|
|
96
|
+
base = File.basename(file, ".erl")
|
97
|
+
mem << "cover:analyse_to_file(#{base}, \"coverage/#{base}.html\", [html]),"
|
98
|
+
end
|
99
|
+
mem
|
100
|
+
end.join("\n ")
|
101
|
+
|
102
|
+
test_cmd =<<EOF
|
103
|
+
|
104
|
+
erl +A 10 -sname #{$$} -pa ebin -pa test/ebin #{EXTRA_ERLC} -eval '
|
105
|
+
Module = list_to_atom (hd(init:get_plain_arguments())),
|
106
|
+
{value, {exports, E}} = lists:keysearch (exports,
|
107
|
+
1,
|
108
|
+
Module:module_info()),
|
109
|
+
case lists:member({test, 0}, E) of
|
110
|
+
true -> ok;
|
111
|
+
false -> io:format("error, ~p:test/0 not exported; " ++
|
112
|
+
"possibly you do not have eunit installed~n",
|
113
|
+
[Module]),
|
114
|
+
halt(77)
|
115
|
+
end,
|
116
|
+
#{compile}
|
117
|
+
io:format("~p:test () ...", [Module]),
|
118
|
+
ok = Module:test(),
|
119
|
+
#{analyse}
|
120
|
+
ok
|
121
|
+
' -noshell -run init stop -extra "#{mod}"
|
122
|
+
EOF
|
123
|
+
|
124
|
+
# $stdout.puts test_cmd
|
125
|
+
test_output = `#{test_cmd}`
|
126
|
+
|
127
|
+
puts test_output if Rake.application.options.trace
|
128
|
+
|
129
|
+
if /\*failed\*/ =~ test_output
|
130
|
+
test_output[/(Failed.*Aborted.*Skipped.*Succeeded.*$)/]
|
131
|
+
else
|
132
|
+
test_output[/1>\s*(.*)\n/]
|
133
|
+
end
|
134
|
+
|
135
|
+
puts "#{mod}: #{$1}"
|
136
|
+
|
137
|
+
exit 1 if /\*failed\*/ =~ test_output
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
73
142
|
desc "Clean the beams from the ebin directory"
|
74
143
|
task :clean do
|
75
144
|
# cmd = "rm #{::File.dirname(__FILE__)}/ebin/*.beam"
|
@@ -90,11 +159,13 @@ desc "Rebuild the boot scripts"
|
|
90
159
|
task :build_boot_scripts => [:recompile] do
|
91
160
|
puts "Rebuilding boot scripts"
|
92
161
|
|
93
|
-
|
162
|
+
rakefile, location = Rake.application.find_rakefile_location
|
163
|
+
root_dir = ::File.expand_path( ::File.join(location) )
|
94
164
|
@version = ENV["VERSION"] || ENV["V"] || "0.1"
|
95
|
-
@name = ENV["NAME"] || ::File.basename(
|
165
|
+
@name = ENV["NAME"] || ::File.basename(root_dir)
|
96
166
|
|
97
167
|
cmd = "erl -pa ./ebin/ -run packager start #{@name} #{@version} -run init stop -noshell"
|
168
|
+
puts cmd
|
98
169
|
Kernel.system cmd
|
99
170
|
end
|
100
171
|
|
@@ -131,6 +202,15 @@ namespace(:deps) do
|
|
131
202
|
|
132
203
|
desc "Update and compile deps/"
|
133
204
|
task :up => [:update, :compile]
|
205
|
+
|
206
|
+
desc "Clean the deps"
|
207
|
+
task :clean do
|
208
|
+
DEPS_FILES.each do |dir|
|
209
|
+
cmd = "cd #{dir}/ebin && rm *.beam"
|
210
|
+
puts cmd if Rake.application.options.trace
|
211
|
+
Kernel.system cmd
|
212
|
+
end
|
213
|
+
end
|
134
214
|
end
|
135
215
|
|
136
216
|
desc "Build eunit"
|
@@ -140,4 +220,16 @@ task :build_eunit do
|
|
140
220
|
end
|
141
221
|
|
142
222
|
desc "Compile and get a shell"
|
143
|
-
task :compile_shell => [:compile, :shell]
|
223
|
+
task :compile_shell => [:compile, :shell]
|
224
|
+
|
225
|
+
desc "Generate ctags"
|
226
|
+
task :ctags do
|
227
|
+
ctags_cmd = "ctags -R --language-force=Erlang -F tags src/ deps/*/src test/src"
|
228
|
+
puts ctags_cmd
|
229
|
+
exec ctags_cmd
|
230
|
+
end
|
231
|
+
|
232
|
+
desc "Generate Documentation"
|
233
|
+
task :doc do
|
234
|
+
sh("cd doc && erl -noshell -run edoc files ../#{SRC.join(" ../")} -run init stop")
|
235
|
+
end
|
metadata
CHANGED
@@ -1,89 +1,82 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auser-skelerl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Lerner
|
8
|
+
- Michael Fairchild
|
9
|
+
- Nate Murray
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
13
|
|
12
|
-
date: 2009-
|
14
|
+
date: 2009-08-17 00:00:00 -07:00
|
13
15
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
version_requirements: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.8.0
|
23
|
-
version:
|
24
|
-
description: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more! Mon Feb 09 18:49:15 -0800 2009
|
25
|
-
email:
|
26
|
-
- arilerner@mac.com
|
16
|
+
dependencies: []
|
17
|
+
|
18
|
+
description: Erlang skeleton application
|
19
|
+
email: arilerner@mac.com
|
27
20
|
executables:
|
28
21
|
- gen_server
|
22
|
+
- makefile
|
29
23
|
- skelerl
|
24
|
+
- skelerl-gen_server
|
25
|
+
- skelerl-makefile
|
30
26
|
extensions: []
|
31
27
|
|
32
28
|
extra_rdoc_files:
|
33
29
|
- History.txt
|
34
|
-
- Manifest.txt
|
35
30
|
- README.txt
|
36
|
-
- generators/skeleton/templates/README.txt
|
37
31
|
files:
|
38
|
-
- History.txt
|
39
|
-
- Manifest.txt
|
40
|
-
- README.txt
|
41
32
|
- Rakefile
|
33
|
+
- VERSION.yml
|
42
34
|
- bin/gen_server
|
35
|
+
- bin/makefile
|
43
36
|
- bin/skelerl
|
44
|
-
-
|
37
|
+
- bin/skelerl-gen_server
|
38
|
+
- bin/skelerl-makefile
|
39
|
+
- config/jeweler.rb
|
45
40
|
- config/requirements.rb
|
46
|
-
- ebin/packager.app
|
47
|
-
- examples/example_runner.rb
|
48
41
|
- generators/appfile/USAGE
|
49
42
|
- generators/appfile/appfile_generator.rb
|
50
43
|
- generators/appfile/templates/appfile.app
|
51
44
|
- generators/gen_server/USAGE
|
52
45
|
- generators/gen_server/gen_server_generator.rb
|
46
|
+
- generators/gen_server/templates/README.txt
|
47
|
+
- generators/gen_server/templates/Rakefile
|
53
48
|
- generators/gen_server/templates/gen_server.erl
|
49
|
+
- generators/gen_server/templates/gitignore
|
50
|
+
- generators/makefile/USAGE
|
51
|
+
- generators/makefile/makefile_generator.rb
|
52
|
+
- generators/makefile/templates/Emakefile
|
53
|
+
- generators/makefile/templates/Makefile
|
54
|
+
- generators/makefile/templates/appfile.app.erb
|
55
|
+
- generators/makefile/templates/make_boot.erl.erb
|
56
|
+
- generators/makefile/templates/start.sh
|
54
57
|
- generators/skeleton/USAGE
|
55
58
|
- generators/skeleton/skeleton_generator.rb
|
56
59
|
- generators/skeleton/templates/README.txt
|
57
60
|
- generators/skeleton/templates/Rakefile
|
58
61
|
- generators/skeleton/templates/gitignore
|
59
|
-
- include/empty
|
60
|
-
- lib/skelerl.rb
|
61
|
-
- lib/skelerl/core/object.rb
|
62
|
-
- lib/skelerl/erlpers/core/array.rb
|
63
|
-
- lib/skelerl/erlpers/core/object.rb
|
64
|
-
- lib/skelerl/erlpers/erl_mapper.rb
|
65
|
-
- lib/skelerl/erlpers/mappers/command.rb
|
66
|
-
- lib/skelerl/erlpers/mappers/context.rb
|
67
|
-
- lib/skelerl/erlpers/mappers/namespace.rb
|
68
|
-
- lib/skelerl/init.rb
|
69
62
|
- script/generate
|
70
|
-
- setup.rb
|
71
|
-
- skelerl.gemspec
|
72
|
-
- src/packager.erl
|
73
63
|
- tasks/build.rake
|
74
|
-
- tasks/deployment.rake
|
75
64
|
- tasks/environment.rake
|
76
65
|
- tasks/generate.rake
|
77
66
|
- tasks/website.rake
|
78
|
-
-
|
79
|
-
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
post_install_message:
|
67
|
+
- History.txt
|
68
|
+
- README.txt
|
69
|
+
has_rdoc: false
|
70
|
+
homepage: http://poolpartyrb.com
|
71
|
+
licenses:
|
72
|
+
post_install_message:
|
84
73
|
rdoc_options:
|
74
|
+
- --quiet
|
75
|
+
- --title
|
76
|
+
- Skelerl documentation
|
77
|
+
- --line-numbers
|
85
78
|
- --main
|
86
|
-
- README
|
79
|
+
- README
|
87
80
|
require_paths:
|
88
81
|
- lib
|
89
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -100,10 +93,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
93
|
version:
|
101
94
|
requirements: []
|
102
95
|
|
103
|
-
rubyforge_project:
|
104
|
-
rubygems_version: 1.
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 1.3.5
|
105
98
|
signing_key:
|
106
|
-
specification_version:
|
107
|
-
summary:
|
99
|
+
specification_version: 3
|
100
|
+
summary: The most awesomenest erlang skeleton and generator!
|
108
101
|
test_files: []
|
109
102
|
|