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.
Files changed (47) hide show
  1. data/Rakefile +7 -3
  2. data/VERSION.yml +4 -0
  3. data/bin/gen_server +0 -0
  4. data/bin/makefile +17 -0
  5. data/bin/skelerl +55 -12
  6. data/bin/skelerl-gen_server +29 -0
  7. data/bin/skelerl-makefile +29 -0
  8. data/config/jeweler.rb +41 -0
  9. data/generators/gen_server/USAGE +3 -3
  10. data/generators/gen_server/gen_server_generator.rb +36 -22
  11. data/generators/gen_server/templates/README.txt +1 -0
  12. data/generators/gen_server/templates/Rakefile +1 -0
  13. data/generators/gen_server/templates/gen_server.erl +107 -0
  14. data/generators/gen_server/templates/gitignore +3 -0
  15. data/generators/makefile/USAGE +5 -0
  16. data/generators/makefile/makefile_generator.rb +68 -0
  17. data/generators/makefile/templates/Emakefile +5 -0
  18. data/generators/makefile/templates/Makefile +31 -0
  19. data/{ebin/packager.app → generators/makefile/templates/appfile.app.erb} +6 -6
  20. data/generators/makefile/templates/make_boot.erl.erb +29 -0
  21. data/generators/makefile/templates/start.sh +4 -0
  22. data/generators/skeleton/skeleton_generator.rb +2 -0
  23. data/generators/skeleton/templates/Rakefile +2 -1
  24. data/generators/skeleton/templates/gitignore +15 -1
  25. data/script/generate +1 -1
  26. data/tasks/build.rake +97 -5
  27. metadata +41 -48
  28. data/Manifest.txt +0 -43
  29. data/config/hoe.rb +0 -73
  30. data/examples/example_runner.rb +0 -24
  31. data/include/empty +0 -0
  32. data/lib/skelerl.rb +0 -22
  33. data/lib/skelerl/core/object.rb +0 -27
  34. data/lib/skelerl/erlpers/core/array.rb +0 -10
  35. data/lib/skelerl/erlpers/core/object.rb +0 -34
  36. data/lib/skelerl/erlpers/erl_mapper.rb +0 -70
  37. data/lib/skelerl/erlpers/mappers/command.rb +0 -13
  38. data/lib/skelerl/erlpers/mappers/context.rb +0 -39
  39. data/lib/skelerl/erlpers/mappers/namespace.rb +0 -8
  40. data/lib/skelerl/init.rb +0 -3
  41. data/setup.rb +0 -1585
  42. data/skelerl.gemspec +0 -36
  43. data/src/packager.erl +0 -75
  44. data/tasks/deployment.rake +0 -43
  45. data/test/erlpers/erl_mapper_spec.rb +0 -113
  46. data/test/erlpers/object_spec.rb +0 -26
  47. 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,5 @@
1
+ { ['./src/*', 'src/*/*', 'src/*/*/*'], [
2
+ {i, "./include"},
3
+ {outdir, "./ebin"},
4
+ debug_info
5
+ ]}.
@@ -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, packager,
1
+ {application, <%= app_name %>,
2
2
  [
3
3
  % Quick description of the server
4
- {description, "Package manager"},
4
+ {description, "Description of the application"},
5
5
  % Version
6
- {vsn, "0.1"},
6
+ {vsn, "<%= version -%>"},
7
7
  % All modules used by the application.
8
- {modules, [packager_app]},
8
+ {modules, []},
9
9
  % All the registered names in the application
10
- {registered, [packager]},
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, {packager_app, []}},
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().
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ # start.sh
3
+ cd `dirname $0`
4
+ erl -pa $PWD/ebin -pa $PWD/deps/*/ebin -name <%= app_name -%> -s reloader -boot <%= app_name -%> $1
@@ -39,6 +39,8 @@ class SkeletonGenerator < RubiGen::Base
39
39
  %w(ebin include src).each do |directory|
40
40
  m.directory "test/#{directory}"
41
41
  end
42
+
43
+ m.directory "priv/tasks"
42
44
 
43
45
  include_eunit
44
46
  include_configerl
@@ -1 +1,2 @@
1
- require "skelerl"
1
+ require "skelerl"
2
+ Dir.glob(File.dirname(__FILE__) + "/priv/tasks/*.rake").each {|f| load f}
@@ -1,2 +1,16 @@
1
1
  *.beam
2
- erl_crash.dump
2
+ erl_crash.dump
3
+ html
4
+ .erlang.cookie
5
+ .autosession.vim
6
+ .DS_Store
7
+ tags
8
+ coverage
9
+ .session.vim
10
+ *-ttb
11
+ *-ttb.ti
12
+ doc/edoc-info
13
+ doc/erlang.png
14
+ doc/*.html
15
+ doc/stylesheet.css
16
+ .dialyzer_plt
data/script/generate CHANGED
@@ -11,4 +11,4 @@ require 'rubigen/scripts/generate'
11
11
 
12
12
  ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
13
  RubiGen::Base.use_component_sources! [:appfile, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
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/*.erl"]
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
- root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__)) )
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(::File.dirname( root_dir ))
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
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-02-09 00:00:00 -08:00
14
+ date: 2009-08-17 00:00:00 -07:00
13
15
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: hoe
17
- version_requirement:
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
- - config/hoe.rb
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
- - test/erlpers/erl_mapper_spec.rb
79
- - test/erlpers/object_spec.rb
80
- - test/helper.rb
81
- has_rdoc: true
82
- homepage: http://skelerl.rubyforge.org
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.txt
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: skelerl
104
- rubygems_version: 1.2.0
96
+ rubyforge_project:
97
+ rubygems_version: 1.3.5
105
98
  signing_key:
106
- specification_version: 2
107
- summary: 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
99
+ specification_version: 3
100
+ summary: The most awesomenest erlang skeleton and generator!
108
101
  test_files: []
109
102