auser-skelerl 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
+ require 'config/requirements'
2
+
1
3
  begin
2
- require 'config/requirements'
3
- require 'config/hoe' # setup Hoe + all gem configuration
4
- rescue Exception => e
4
+ require 'hanna/rdoctask'
5
+ rescue LoadError => e
6
+ require "rake/rdoctask"
5
7
  end
6
8
 
9
+ require 'config/jeweler' # setup gem configuration
10
+
7
11
  Dir['tasks/**/*.rake'].each { |rake| load rake }
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 0
4
+ :patch: 5
data/bin/gen_server CHANGED
File without changes
data/bin/makefile ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rubigen'
5
+
6
+ if %w(-v --version).include? ARGV.first
7
+ require 'makefile/version'
8
+ puts "#{File.basename($0)} #{GenServer::VERSION::STRING}"
9
+ exit(0)
10
+ end
11
+
12
+ require 'rubigen/scripts/generate'
13
+ source = RubiGen::PathSource.new(:application,
14
+ File.join(File.dirname(__FILE__), "../generators"))
15
+ RubiGen::Base.reset_sources
16
+ RubiGen::Base.append_sources source
17
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'makefile')
data/bin/skelerl CHANGED
@@ -1,17 +1,60 @@
1
1
  #!/usr/bin/env ruby
2
+ Dir[File.dirname(__FILE__) + "/../vendor/gems/*"].each {|lib| $:.unshift( File.expand_path(lib + "/lib") )}
3
+ require "git-style-binary"
4
+ require "colors"
5
+ require 'git-style-binary/command'
2
6
 
3
- require 'rubygems'
4
- require 'rubigen'
5
- require "skelerl"
7
+ GitStyleBinary.primary do
8
+ @theme = :short
9
+
10
+ config = YAML.load(File.read(File.dirname(__FILE__) + '/../VERSION.yml'))
11
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
12
+
13
+ version "Skelerl release: #{version}"
14
+ banner <<-EOS
15
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
6
16
 
7
- if %w(-v --version).include? ARGV.first
8
- puts "#{File.basename($0)} #{Skelerl::VERSION::STRING}"
9
- exit(0)
17
+ The skelerl subcommands commands are:
18
+ \#{GitStyleBinary.pretty_known_subcommands(:short).join(" ")}
19
+
20
+ See 'skelerl help COMMAND' for more information on a specific command.
21
+ EOS
22
+
23
+ run do |command|
24
+ subcommands = GitStyleBinary.list_subcommands
25
+
26
+ puts "Usage: skelerl COMMAND [ARGS]
27
+
28
+ The skelerl subcommands commands are:
29
+ #{subcommands}
30
+
31
+ See 'skelerl help COMMAND' for more information on a specific command"
32
+ end
10
33
  end
11
34
 
12
- require 'rubigen/scripts/generate'
13
- source = RubiGen::PathSource.new(:application,
14
- File.join(File.dirname(__FILE__), "../generators"))
15
- RubiGen::Base.reset_sources
16
- RubiGen::Base.append_sources source
17
- RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'skeleton')
35
+ # #!/usr/bin/env ruby
36
+ # $:.unshift(File.dirname(__FILE__) + "/../lib")
37
+ #
38
+ # require 'rubygems'
39
+ # require 'rubigen'
40
+ # require "skelerl"
41
+ #
42
+ # if %w(-v --version).include? ARGV.first
43
+ # puts "#{File.basename($0)} #{Skelerl::VERSION::STRING}"
44
+ # exit(0)
45
+ # end
46
+ #
47
+ # require 'rubigen/scripts/generate'
48
+ # source = RubiGen::PathSource.new(:application,
49
+ # File.join(File.dirname(__FILE__), "../generators"))
50
+ # RubiGen::Base.reset_sources
51
+ # RubiGen::Base.append_sources source
52
+ #
53
+ # # Different generators
54
+ # if ARGV.contains_similar_elements? %w(--gen_server gen_server gs)
55
+ # RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'gen_server')
56
+ # elsif ARGV.contains_similar_elements? %w(--makefile make mf makefile)
57
+ # RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'makefile')
58
+ # else
59
+ # RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'skeleton')
60
+ # end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ Dir[File.dirname(__FILE__) + "/../vendor/gems/*"].each {|lib| $:.unshift( File.expand_path(lib + "/lib") )}
3
+ require 'git-style-binary/command'
4
+ require "rubigen"
5
+ require 'rubigen/scripts/generate'
6
+
7
+ GitStyleBinary.command do
8
+ banner <<-EOS
9
+ Usage: #{$0} #{all_options_string}
10
+
11
+ Create a gen_server skeleton
12
+ EOS
13
+
14
+ short_desc "Create a gen_server skeleton"
15
+
16
+ opt :name, "The basename of the gen_server to generate", :type => :string
17
+
18
+ run do |command|
19
+
20
+ source = RubiGen::PathSource.new(:application, File.join(File.dirname(__FILE__), "../generators"))
21
+ RubiGen::Base.reset_sources
22
+ RubiGen::Base.append_sources source
23
+
24
+ argv = [command[:name]]
25
+
26
+ RubiGen::Scripts::Generate.new.run(argv, :generator => 'gen_server')
27
+
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ Dir[File.dirname(__FILE__) + "/../vendor/gems/*"].each {|lib| $:.unshift( File.expand_path(lib + "/lib") )}
3
+ require 'git-style-binary/command'
4
+ require "rubigen"
5
+ require 'rubigen/scripts/generate'
6
+
7
+ GitStyleBinary.command do
8
+ banner <<-EOS
9
+ Usage: #{$0} #{all_options_string}
10
+
11
+ Create a Makefile and application skeleton
12
+ EOS
13
+
14
+ short_desc "Create a makefile"
15
+
16
+ opt :name, "The basename of the makefile application to generate", :type => :string
17
+
18
+ run do |command|
19
+
20
+ source = RubiGen::PathSource.new(:application, File.join(File.dirname(__FILE__), "../generators"))
21
+ RubiGen::Base.reset_sources
22
+ RubiGen::Base.append_sources source
23
+
24
+ argv = [command[:name]]
25
+
26
+ RubiGen::Scripts::Generate.new.run(argv, :generator => 'makefile')
27
+
28
+ end
29
+ end
data/config/jeweler.rb ADDED
@@ -0,0 +1,41 @@
1
+ # You also need to setup your name and email for git if you haven't already done so.
2
+ # Info at http://github.com/guides/tell-git-your-user-name-and-email-address
3
+
4
+ begin
5
+ class Array
6
+ def one_of_regex
7
+ option_list = join "|"
8
+ Regexp.new "(#{option_list})"
9
+ end
10
+ end
11
+ require 'rubygems'
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |s|
14
+ s.name = "skelerl"
15
+ s.description = "Erlang skeleton application"
16
+ s.summary = <<-EOM
17
+ The most awesomenest erlang skeleton and generator!
18
+ EOM
19
+
20
+ s.homepage = "http://poolpartyrb.com"
21
+ s.email = "arilerner@mac.com"
22
+ s.authors = ["Ari Lerner", "Michael Fairchild", "Nate Murray"]
23
+
24
+ s.test_files = Dir["test/**/test_*.rb"]
25
+
26
+ s.files = (%w(Rakefile README.rdoc License.txt VERSION.yml) + Dir["{config,tasks,script,generators,bin}/**/*"])
27
+
28
+ s.files.exclude '**/*.beam'
29
+ s.files.exclude "**/*/erl_crash.dump"
30
+
31
+ s.has_rdoc = true
32
+ s.extra_rdoc_files = ["README.txt", "License.txt", 'History.txt']
33
+ s.rdoc_options = ['--quiet', '--title', 'Skelerl documentation',
34
+ # "index.html",
35
+ "--line-numbers",
36
+ "--main", "README"
37
+ ]
38
+ end
39
+ rescue LoadError
40
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
41
+ end
@@ -1,7 +1,7 @@
1
1
  Description:
2
2
 
3
- Create a skeleton gen_server file
4
-
3
+ Create a skeleton erlang directory with eunit tests and config helpers
4
+
5
5
  Usage:
6
6
 
7
- ./script/generate gen_server <name>
7
+ skelerl gen_server <name>
@@ -1,51 +1,65 @@
1
- class GenServerGenerator < RubiGen::Base
1
+ require 'rbconfig'
2
2
 
3
+ class GenServerGenerator < RubiGen::Base
3
4
  DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
4
5
  Config::CONFIG['ruby_install_name'])
5
-
6
- default_options :author => nil
7
-
8
- attr_reader :name
9
-
6
+
7
+ default_options :shebang => DEFAULT_SHEBANG,
8
+ :an_option => 'some_default'
9
+
10
+ attr_reader :app_name, :module_name
11
+
10
12
  def initialize(runtime_args, runtime_options = {})
11
13
  super
12
14
  usage if args.empty?
13
- @app_name = args.shift
14
- @destination_root = File.expand_path(".")
15
- @name = base_name
15
+ @destination_root = args.shift
16
+ @app_name = File.basename(File.expand_path(@destination_root))
17
+ @module_name = app_name.camelize
16
18
  extract_options
17
19
  end
18
-
20
+
19
21
  def manifest
22
+ # Use /usr/bin/env if no special shebang was specified
23
+ script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
24
+ windows = (RUBY_PLATFORM =~ /dos|win32|cygwin/i) || (RUBY_PLATFORM =~ /(:?mswin|mingw)/)
25
+
20
26
  record do |m|
21
- m.file "gen_server.erl"
27
+ m.directory File.join("src")
28
+ m.template "gen_server.erl", "src/#{gen_server_file_name}"
22
29
  end
23
30
  end
24
31
 
32
+ def gen_server_file_name
33
+ "#{module_name}.erl"
34
+ end
35
+
36
+ def module_name
37
+ "#{app_name}_srv"
38
+ end
39
+
25
40
  protected
26
41
  def banner
27
42
  <<-EOS
28
- Creates a skeleton gen_server
43
+ Create a stub for #{File.basename $0} to get started.
29
44
 
30
- USAGE: #{spec.name} name
45
+ Usage: #{File.basename $0} gen_server_name [options]"
31
46
  EOS
32
47
  end
33
48
 
34
49
  def add_options!(opts)
35
50
  opts.separator ''
36
- opts.separator 'Options:'
37
- # For each option below, place the default
38
- # at the top of the file next to "default_options"
39
- # opts.on("-a", "--author=\"Your Name\"", String,
40
- # "Some comment about this option",
41
- # "Default: none") { |options[:author]| }
51
+ opts.separator "#{File.basename $0} options:"
42
52
  opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
43
53
  end
44
-
54
+
45
55
  def extract_options
46
56
  # for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
47
57
  # Templates can access these value via the attr_reader-generated methods, but not the
48
58
  # raw instance variable value.
49
- # @author = options[:author]
59
+ @author = options[:author]
60
+ @description = options[:desc] || "Description of your project"
50
61
  end
51
- end
62
+
63
+ BASEDIRS = %w()
64
+ BASEFILES = %w()
65
+ end
@@ -0,0 +1 @@
1
+ Your app description
@@ -0,0 +1 @@
1
+ require "skelerl"
@@ -0,0 +1,107 @@
1
+ %%%-------------------------------------------------------------------
2
+ %%% File : <%= gen_server_file_name %>
3
+ %%% Author : <%= ENV["USER"] %>
4
+ %%% Description : desc
5
+ %%% Created : <%= Time.now.strftime("%F") %>
6
+ %%%-------------------------------------------------------------------
7
+
8
+ -module (<%= module_name %>).
9
+ -behaviour(gen_server).
10
+
11
+ %% API
12
+ -export([start_link/0]).
13
+
14
+ %% gen_server callbacks
15
+ -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
16
+ terminate/2, code_change/3]).
17
+
18
+ -record(state, {
19
+
20
+ }).
21
+
22
+ %% Macros
23
+ -define(SERVER, ?MODULE).
24
+ -define(DEFAULT_CONFIG, {}).
25
+
26
+ %%====================================================================
27
+ %% API
28
+ %%====================================================================
29
+ %%--------------------------------------------------------------------
30
+ %% Function: start() -> {ok,Pid} | ignore | {error,Error}
31
+ %% Description: Alias for start_link
32
+ %%--------------------------------------------------------------------
33
+ start_link() ->
34
+ start_link(?DEFAULT_CONFIG).
35
+
36
+ %%--------------------------------------------------------------------
37
+ %% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
38
+ %% Description: Starts the server
39
+ %%--------------------------------------------------------------------
40
+ start_link(Config) ->
41
+ gen_server:start_link({local, ?SERVER}, ?MODULE, [Config], []).
42
+
43
+ %%====================================================================
44
+ %% gen_server callbacks
45
+ %%====================================================================
46
+
47
+ %%--------------------------------------------------------------------
48
+ %% Function: init(Args) -> {ok, State} |
49
+ %% {ok, State, Timeout} |
50
+ %% ignore |
51
+ %% {stop, Reason}
52
+ %% Description: Initiates the server
53
+ %%--------------------------------------------------------------------
54
+ init(Args) ->
55
+ {ok, #state{}}.
56
+
57
+ %%--------------------------------------------------------------------
58
+ %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
59
+ %% {reply, Reply, State, Timeout} |
60
+ %% {noreply, State} |
61
+ %% {noreply, State, Timeout} |
62
+ %% {stop, Reason, Reply, State} |
63
+ %% {stop, Reason, State}
64
+ %% Description: Handling call messages
65
+ %%--------------------------------------------------------------------
66
+ handle_call(_Request, _From, State) ->
67
+ Reply = ok,
68
+ {reply, Reply, State}.
69
+
70
+ %%--------------------------------------------------------------------
71
+ %% Function: handle_cast(Msg, State) -> {noreply, State} |
72
+ %% {noreply, State, Timeout} |
73
+ %% {stop, Reason, State}
74
+ %% Description: Handling cast messages
75
+ %%--------------------------------------------------------------------
76
+ handle_cast(_Msg, State) ->
77
+ {noreply, State}.
78
+
79
+ %%--------------------------------------------------------------------
80
+ %% Function: handle_info(Info, State) -> {noreply, State} |
81
+ %% {noreply, State, Timeout} |
82
+ %% {stop, Reason, State}
83
+ %% Description: Handling all non call/cast messages
84
+ %%--------------------------------------------------------------------
85
+ handle_info(_Info, State) ->
86
+ {noreply, State}.
87
+
88
+ %%--------------------------------------------------------------------
89
+ %% Function: terminate(Reason, State) -> void()
90
+ %% Description: This function is called by a gen_server when it is about to
91
+ %% terminate. It should be the opposite of Module:init/1 and do any necessary
92
+ %% cleaning up. When it returns, the gen_server terminates with Reason.
93
+ %% The return value is ignored.
94
+ %%--------------------------------------------------------------------
95
+ terminate(_Reason, _State) ->
96
+ ok.
97
+
98
+ %%--------------------------------------------------------------------
99
+ %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
100
+ %% Description: Convert process state when code is changed
101
+ %%--------------------------------------------------------------------
102
+ code_change(_OldVsn, State, _Extra) ->
103
+ {ok, State}.
104
+
105
+ %%--------------------------------------------------------------------
106
+ %%% Internal functions
107
+ %%--------------------------------------------------------------------
@@ -0,0 +1,3 @@
1
+ *.beam
2
+ erl_crash.dump
3
+ test/include
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Creates a makefile project with a bootscript generator
3
+
4
+ Usage:
5
+ ./script/generate makefile <name>