auser-skelerl 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -2,20 +2,23 @@ History.txt
2
2
  Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
- app_generators/appfile/USAGE
6
- app_generators/appfile/appfile_generator.rb
7
- app_generators/appfile/templates/appfile.app
8
- app_generators/gen_server/USAGE
9
- app_generators/gen_server/gen_server_generator.rb
10
- app_generators/gen_server/templates/gen_server.erl
11
- bin/appfile
12
- bin/build-app
13
- bin/erl_runner
14
5
  bin/gen_server
6
+ bin/skelerl
15
7
  config/hoe.rb
16
8
  config/requirements.rb
17
9
  ebin/packager.app
18
10
  examples/example_runner.rb
11
+ generators/appfile/USAGE
12
+ generators/appfile/appfile_generator.rb
13
+ generators/appfile/templates/appfile.app
14
+ generators/gen_server/USAGE
15
+ generators/gen_server/gen_server_generator.rb
16
+ generators/gen_server/templates/gen_server.erl
17
+ generators/skeleton/USAGE
18
+ generators/skeleton/skeleton_generator.rb
19
+ generators/skeleton/templates/README.txt
20
+ generators/skeleton/templates/Rakefile
21
+ generators/skeleton/templates/gitignore
19
22
  include/empty
20
23
  lib/skelerl.rb
21
24
  lib/skelerl/core/object.rb
data/README.txt CHANGED
@@ -6,7 +6,7 @@ Skeleton Erlang application
6
6
 
7
7
  This is a basic skeleton for erlang applications.
8
8
 
9
- This skeleton app takes care of everything you'd need in an erlang application, hopefully. If not, list it on the wiki and we'll get to it.
9
+ This skeleton app takes care of everything you'd need in an erlang application, hopefully!
10
10
 
11
11
  h2. Building an application
12
12
  1. Include the source code in the src/ directory.
@@ -2,16 +2,16 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'rubigen'
5
+ require "skelerl"
5
6
 
6
7
  if %w(-v --version).include? ARGV.first
7
- require 'appfile/version'
8
- puts "#{File.basename($0)} #{Appfile::VERSION::STRING}"
8
+ puts "#{File.basename($0)} #{Skelerl::VERSION::STRING}"
9
9
  exit(0)
10
10
  end
11
11
 
12
12
  require 'rubigen/scripts/generate'
13
13
  source = RubiGen::PathSource.new(:application,
14
- File.join(File.dirname(__FILE__), "../app_generators"))
14
+ File.join(File.dirname(__FILE__), "../generators"))
15
15
  RubiGen::Base.reset_sources
16
16
  RubiGen::Base.append_sources source
17
- RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'appfile')
17
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'skeleton')
data/config/hoe.rb CHANGED
@@ -2,7 +2,7 @@ require 'skelerl'
2
2
 
3
3
  AUTHOR = 'Ari Lerner' # can also be an array of Authors
4
4
  EMAIL = "arilerner@mac.com"
5
- DESCRIPTION = "This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... hopefully."
5
+ 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!\n\n\n#{Time.now}"
6
6
  GEM_NAME = 'skelerl' # what ppl will type to install your gem
7
7
  RUBYFORGE_PROJECT = 'skelerl' # The unix name for your project
8
8
  HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ Description:
2
+
3
+ Create a skeleton erlang directory with eunit tests and config helpers
4
+
5
+ Usage:
6
+
7
+ ./script/generate skeleton <name>
@@ -0,0 +1,91 @@
1
+ require 'rbconfig'
2
+
3
+ class SkeletonGenerator < RubiGen::Base
4
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
5
+ Config::CONFIG['ruby_install_name'])
6
+
7
+ default_options :shebang => DEFAULT_SHEBANG,
8
+ :an_option => 'some_default'
9
+
10
+ attr_reader :app_name, :module_name
11
+
12
+ def initialize(runtime_args, runtime_options = {})
13
+ super
14
+ usage if args.empty?
15
+ @destination_root = args.shift
16
+ @app_name = File.basename(File.expand_path(@destination_root))
17
+ @module_name = app_name.camelize
18
+ extract_options
19
+ end
20
+
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
+
26
+ record do |m|
27
+ # Root directory and all subdirectories.
28
+ m.directory ''
29
+ BASEDIRS.each { |path| m.directory path }
30
+
31
+ # Root
32
+ m.template_copy_each %w( Rakefile )
33
+ m.file_copy_each %w( README.txt )
34
+
35
+ # Test helper
36
+ m.template "gitignore", ".gitignore"
37
+
38
+ # Tests
39
+ %w(ebin include src).each do |directory|
40
+ m.directory "test/#{directory}"
41
+ end
42
+
43
+ include_eunit
44
+ include_configerl
45
+
46
+ end
47
+ end
48
+
49
+ def include_eunit
50
+ cmds = [
51
+ "svn co http://svn.process-one.net/contribs/trunk/eunit #{@destination_root}/test/include/eunit",
52
+ "cd #{@destination_root}/test/include/eunit",
53
+ "make"
54
+ ]
55
+ Kernel.system cmds.join(" && ")
56
+ end
57
+ def include_configerl
58
+ cmds = [
59
+ "git submodule add git://github.com/auser/configerl.git #{@destination_root}/deps/configerl",
60
+ "git submodule init",
61
+ "git submodule update"
62
+ ]
63
+ Kernel.system cmds.join(" && ")
64
+ end
65
+
66
+ protected
67
+ def banner
68
+ <<-EOS
69
+ Create a stub for #{File.basename $0} to get started.
70
+
71
+ Usage: #{File.basename $0} /path/to/your/app [options]"
72
+ EOS
73
+ end
74
+
75
+ def add_options!(opts)
76
+ opts.separator ''
77
+ opts.separator "#{File.basename $0} options:"
78
+ opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
79
+ end
80
+
81
+ def extract_options
82
+ # for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
83
+ # Templates can access these value via the attr_reader-generated methods, but not the
84
+ # raw instance variable value.
85
+ @author = options[:author]
86
+ @description = options[:desc] || "Description of your project"
87
+ end
88
+
89
+ BASEDIRS = %w(deps doc ebin include priv scripts src support)
90
+ BASEFILES = %w(README.txt Rakefile)
91
+ end
@@ -0,0 +1 @@
1
+ Your app description
@@ -0,0 +1 @@
1
+ require "skelerl"
@@ -0,0 +1,2 @@
1
+ *.beam
2
+ erl_crash.dump
data/lib/skelerl.rb CHANGED
@@ -16,7 +16,7 @@ end
16
16
  module Skelerl
17
17
 
18
18
  module VERSION
19
- STRING = "0.0.2"
19
+ STRING = "0.0.3"
20
20
  end
21
21
 
22
22
  end
@@ -43,7 +43,11 @@ class ErlMapper
43
43
  end
44
44
 
45
45
  def realize(force_testing=false)
46
- contexts.collect {|mc| (force_testing || testing) ? mc.string : daemonize(mc.string) }
46
+ contexts.collect {|mc| (force_testing || testing) ? mc.string : launch(mc.string) }
47
+ end
48
+
49
+ def launch(cmd)
50
+ Kernel.system cmd
47
51
  end
48
52
 
49
53
  def daemonize(cmd, &block)
data/skelerl.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{skelerl}
5
- s.version = "0.0.2"
5
+ s.version = "0.0.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ari Lerner"]
9
- s.date = %q{2009-02-04}
10
- s.description = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... hopefully.}
9
+ s.date = %q{2009-02-07}
10
+ s.description = %q{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! Sat Feb 07 16:35:38 -0800 2009}
11
11
  s.email = ["arilerner@mac.com"]
12
- s.executables = ["appfile", "build-app", "erl_runner", "gen_server"]
13
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
14
- s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "app_generators/appfile/USAGE", "app_generators/appfile/appfile_generator.rb", "app_generators/appfile/templates/appfile.app", "app_generators/gen_server/USAGE", "app_generators/gen_server/gen_server_generator.rb", "app_generators/gen_server/templates/gen_server.erl", "bin/appfile", "bin/build-app", "bin/erl_runner", "bin/gen_server", "config/hoe.rb", "config/requirements.rb", "ebin/packager.app", "examples/example_runner.rb", "include/empty", "lib/skelerl.rb", "lib/skelerl/core/object.rb", "lib/skelerl/erlpers/core/array.rb", "lib/skelerl/erlpers/core/object.rb", "lib/skelerl/erlpers/erl_mapper.rb", "lib/skelerl/erlpers/mappers/command.rb", "lib/skelerl/erlpers/mappers/context.rb", "lib/skelerl/erlpers/mappers/namespace.rb", "lib/skelerl/init.rb", "script/generate", "setup.rb", "skelerl.gemspec", "src/packager.erl", "tasks/build.rake", "tasks/deployment.rake", "tasks/environment.rake", "tasks/generate.rake", "tasks/website.rake", "test/erlpers/erl_mapper_spec.rb", "test/erlpers/object_spec.rb", "test/helper.rb"]
12
+ s.executables = ["gen_server", "skelerl"]
13
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "generators/skeleton/templates/README.txt"]
14
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/gen_server", "bin/skelerl", "config/hoe.rb", "config/requirements.rb", "ebin/packager.app", "examples/example_runner.rb", "generators/appfile/USAGE", "generators/appfile/appfile_generator.rb", "generators/appfile/templates/appfile.app", "generators/gen_server/USAGE", "generators/gen_server/gen_server_generator.rb", "generators/gen_server/templates/gen_server.erl", "generators/skeleton/USAGE", "generators/skeleton/skeleton_generator.rb", "generators/skeleton/templates/README.txt", "generators/skeleton/templates/Rakefile", "generators/skeleton/templates/gitignore", "include/empty", "lib/skelerl.rb", "lib/skelerl/core/object.rb", "lib/skelerl/erlpers/core/array.rb", "lib/skelerl/erlpers/core/object.rb", "lib/skelerl/erlpers/erl_mapper.rb", "lib/skelerl/erlpers/mappers/command.rb", "lib/skelerl/erlpers/mappers/context.rb", "lib/skelerl/erlpers/mappers/namespace.rb", "lib/skelerl/init.rb", "script/generate", "setup.rb", "skelerl.gemspec", "src/packager.erl", "tasks/build.rake", "tasks/deployment.rake", "tasks/environment.rake", "tasks/generate.rake", "tasks/website.rake", "test/erlpers/erl_mapper_spec.rb", "test/erlpers/object_spec.rb", "test/helper.rb"]
15
15
  s.has_rdoc = true
16
16
  s.homepage = %q{http://skelerl.rubyforge.org}
17
17
  s.post_install_message = %q{}
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
  s.rubyforge_project = %q{skelerl}
21
21
  s.rubygems_version = %q{1.3.1}
22
- s.summary = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... hopefully.}
22
+ s.summary = %q{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! Sat Feb 07 16:35:38 -0800 2009}
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
data/tasks/build.rake CHANGED
@@ -2,12 +2,22 @@
2
2
  require 'rake/clean'
3
3
  require 'pp'
4
4
 
5
+ deps_dir = Dir.pwd + "/deps"
6
+
5
7
  INCLUDE = File.dirname(__FILE__) + "/include"
6
- ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import"
7
8
 
8
- SRC = FileList['src/*.erl']
9
+ DEPS = Dir["#{deps_dir}/*"].select {|d| d if File.directory? d }
10
+ DEPS_FILES = DEPS.map {|d| "./deps/#{File.basename(d)}" }
11
+ EXTRA_ERLC = DEPS_FILES.map {|a| "-pa #{a}/ebin" }.join(" ")
12
+
13
+ ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import -o ebin -W0 #{EXTRA_ERLC}"
14
+
15
+ SRC = FileList["src/*.erl"]
9
16
  SRC_OBJ = SRC.pathmap("%{src,ebin}X.beam")
10
17
 
18
+ DEP = DEPS_FILES.map {|d| FileList["#{d}/src/*.erl"]}
19
+ DEP_OBJ = DEP.map {|d| d.pathmap("%{src,ebin}X.beam")}
20
+
11
21
  TEST = FileList['test/src/*.erl']
12
22
  TEST_OBJ = TEST.pathmap("%{src,ebin}X.beam")
13
23
 
@@ -29,6 +39,13 @@ desc "Compile everything"
29
39
  task :compile => ["src:compile", "test:compile"]
30
40
  task :recompile => ["clean", "src:compile", "test:compile"]
31
41
 
42
+ desc "Compile deps"
43
+ task :compile_deps do
44
+ DEPS_FILES.each do |dir|
45
+ Kernel.system "cd #{dir} && rake compile"
46
+ end
47
+ end
48
+
32
49
  namespace :src do
33
50
  desc "Compile src"
34
51
  task :compile => ['ebin'] + SRC_OBJ
@@ -92,4 +109,24 @@ desc "Rebuild and repackage"
92
109
  task :repackage => [:build_boot_scripts] do
93
110
  cmd = "erl -pa ./ebin -s packager start -s init stop"
94
111
  Kernel.system cmd
112
+ end
113
+
114
+ desc "Shell command"
115
+ task :shell do
116
+ cmd = "erl -pa ./ebin #{EXTRA_ERLC} -boot start_sasl"
117
+ Kernel.system cmd
118
+ end
119
+
120
+ desc "Update submodules"
121
+ task :update do
122
+ cmd = "git submodule update"
123
+ DEPS_FILES.each do |dir|
124
+ Kernel.system "cd #{dir} && #{cmd}"
125
+ end
126
+ end
127
+
128
+ desc "Build eunit"
129
+ task :build_eunit do
130
+ cmd = "cd test/include/eunit && make"
131
+ Kernel.system cmd
95
132
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auser-skelerl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-04 00:00:00 -08:00
12
+ date: 2009-02-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -21,39 +21,41 @@ dependencies:
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.8.0
23
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... hopefully.
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! Sat Feb 07 16:35:38 -0800 2009
25
25
  email:
26
26
  - arilerner@mac.com
27
27
  executables:
28
- - appfile
29
- - build-app
30
- - erl_runner
31
28
  - gen_server
29
+ - skelerl
32
30
  extensions: []
33
31
 
34
32
  extra_rdoc_files:
35
33
  - History.txt
36
34
  - Manifest.txt
37
35
  - README.txt
36
+ - generators/skeleton/templates/README.txt
38
37
  files:
39
38
  - History.txt
40
39
  - Manifest.txt
41
40
  - README.txt
42
41
  - Rakefile
43
- - app_generators/appfile/USAGE
44
- - app_generators/appfile/appfile_generator.rb
45
- - app_generators/appfile/templates/appfile.app
46
- - app_generators/gen_server/USAGE
47
- - app_generators/gen_server/gen_server_generator.rb
48
- - app_generators/gen_server/templates/gen_server.erl
49
- - bin/appfile
50
- - bin/build-app
51
- - bin/erl_runner
52
42
  - bin/gen_server
43
+ - bin/skelerl
53
44
  - config/hoe.rb
54
45
  - config/requirements.rb
55
46
  - ebin/packager.app
56
47
  - examples/example_runner.rb
48
+ - generators/appfile/USAGE
49
+ - generators/appfile/appfile_generator.rb
50
+ - generators/appfile/templates/appfile.app
51
+ - generators/gen_server/USAGE
52
+ - generators/gen_server/gen_server_generator.rb
53
+ - generators/gen_server/templates/gen_server.erl
54
+ - generators/skeleton/USAGE
55
+ - generators/skeleton/skeleton_generator.rb
56
+ - generators/skeleton/templates/README.txt
57
+ - generators/skeleton/templates/Rakefile
58
+ - generators/skeleton/templates/gitignore
57
59
  - include/empty
58
60
  - lib/skelerl.rb
59
61
  - lib/skelerl/core/object.rb
@@ -102,6 +104,6 @@ rubyforge_project: skelerl
102
104
  rubygems_version: 1.2.0
103
105
  signing_key:
104
106
  specification_version: 2
105
- summary: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... hopefully.
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! Sat Feb 07 16:35:38 -0800 2009
106
108
  test_files: []
107
109
 
data/bin/build-app DELETED
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
-
4
- root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "ebin") )
5
-
6
- if ARGV.size > 0
7
- @name = ARGV.shift
8
- @version = ARGV.shift || "0.1"
9
- end
10
-
11
- @version ||= "0.1"
12
- @name ||= ::File.basename(::File.dirname( root_dir ))
13
-
14
- INCLUDE = "include"
15
- ERLC_FLAGS = "-I#{INCLUDE}"
16
-
17
- cmd = "cd #{root_dir} && NAME=#{@name} VERSION=#{@version} rake build_boot_scripts"
18
-
19
- puts "** Building #{@name} **"
20
- puts "Running command #{cmd}"
21
-
22
- %x[#{cmd}]
data/bin/erl_runner DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "#{::File.dirname(__FILE__)}/../lib/skelerl"
3
- require 'rubygems'
4
- require 'optparse'
5
-
6
- @opts = OptionParser.new
7
- progname = File.basename(__FILE__, File.extname(__FILE__))
8
-
9
-
10
- @opts.on('-v', '--verbose', 'Be verbose') { @verbose = true }
11
- @opts.on('-t', '--test', 'Put in test mode') { @testing = true }
12
-
13
- @opts.on_tail("-h", "--help", "Show this message") do
14
- puts <<-EOP
15
- Usage: #{progname} <filename> [options]
16
- EOP
17
- exit
18
- end
19
-
20
- @opts.parse(ARGV.dup)
21
-
22
- instance_eval open(ARGV.pop).read
23
-
24
- mappers.each do |mapper|
25
- @testing ? puts(mapper.realize(@testing)) : mapper.realize(@testing)
26
- end