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 +12 -9
- data/README.txt +1 -1
- data/bin/{appfile → skelerl} +4 -4
- data/config/hoe.rb +1 -1
- data/{app_generators → generators}/appfile/USAGE +0 -0
- data/{app_generators → generators}/appfile/appfile_generator.rb +0 -0
- data/{app_generators → generators}/appfile/templates/appfile.app +0 -0
- data/{app_generators → generators}/gen_server/USAGE +0 -0
- data/{app_generators → generators}/gen_server/gen_server_generator.rb +0 -0
- data/{app_generators → generators}/gen_server/templates/gen_server.erl +0 -0
- data/generators/skeleton/USAGE +7 -0
- data/generators/skeleton/skeleton_generator.rb +91 -0
- data/generators/skeleton/templates/README.txt +1 -0
- data/generators/skeleton/templates/Rakefile +1 -0
- data/generators/skeleton/templates/gitignore +2 -0
- data/lib/skelerl.rb +1 -1
- data/lib/skelerl/erlpers/erl_mapper.rb +5 -1
- data/skelerl.gemspec +7 -7
- data/tasks/build.rake +39 -2
- metadata +18 -16
- data/bin/build-app +0 -22
- data/bin/erl_runner +0 -26
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
|
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.
|
data/bin/{appfile → skelerl}
RENAMED
@@ -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
|
-
|
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__), "../
|
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 => '
|
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...
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -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"
|
data/lib/skelerl.rb
CHANGED
@@ -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 :
|
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.
|
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-
|
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...
|
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 = ["
|
13
|
-
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
14
|
-
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "
|
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...
|
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
|
-
|
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.
|
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-
|
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...
|
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...
|
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
|