semillagen 0.0.1
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/README.md +27 -0
- data/bin/semillagen +65 -0
- data/default_templates/class/default/classTemplate.as.tpl +22 -0
- data/default_templates/class/default/info.semilla +8 -0
- data/default_templates/class/default/testClassTemplate.as.tpl +30 -0
- data/default_templates/project/default/Gemfile +5 -0
- data/default_templates/project/default/Gemfile.lock +24 -0
- data/default_templates/project/default/MagicBox.as3proj +96 -0
- data/default_templates/project/default/lib/flexunit4/FlexUnit1Lib.swc +0 -0
- data/default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8-javadoc.jar +0 -0
- data/default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8-sources.jar +0 -0
- data/default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8.jar +0 -0
- data/default_templates/project/default/lib/flexunit4/flexunit-4.1.0-8-as3_4.1.0.16076.swc +0 -0
- data/default_templates/project/default/lib/flexunit4/flexunit-cilistener-4.1.0-8-4.1.0.16076.swc +0 -0
- data/default_templates/project/default/lib/flexunit4/flexunit-uilistener-4.1.0-8-4.1.0.16076.swc +0 -0
- data/default_templates/project/default/lib/flexunit4/fluint-extensions-4.1.0-8-4.1.0.16076.swc +0 -0
- data/default_templates/project/default/lib/flexunit4/hamcrest-as3-flex-1.1.3.swc +0 -0
- data/default_templates/project/default/rakefile.rb +128 -0
- data/default_templates/project/default/src/MagicBox.as +104 -0
- data/default_templates/project/default/src/PlainButton.as +72 -0
- data/default_templates/project/default/src/transforms/LeetTransform.as +40 -0
- data/default_templates/project/default/src/transforms/LowerCaseTransform.as +22 -0
- data/default_templates/project/default/src/transforms/ReverseTransform.as +22 -0
- data/default_templates/project/default/src/transforms/SplitTransform.as +22 -0
- data/default_templates/project/default/src/transforms/UpperCaseTransform.as +22 -0
- data/default_templates/project/default/test-src/TestRunner.template +66 -0
- data/default_templates/project/default/test-src/TextFieldListener.as +66 -0
- data/default_templates/project/default/test-src/listeners/SemillaCIListener.as +389 -0
- data/default_templates/project/default/test-src/listeners/TraceListener.as +79 -0
- data/default_templates/project/default/test-src/transforms/LeetTransformTest.as +45 -0
- data/default_templates/project/default/test-src/transforms/LowerCaseTransformTest.as +44 -0
- data/default_templates/project/default/test-src/transforms/ReverseTransformTest.as +31 -0
- data/default_templates/project/default/test-src/transforms/SplitTransformTest.as +37 -0
- data/default_templates/project/default/test-src/transforms/UpperCaseTransformTest.as +45 -0
- data/doc/SemillaGen/TemplateItem.html +340 -0
- data/doc/SemillaGen.html +916 -0
- data/doc/_index.html +112 -0
- data/doc/class_list.html +47 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +55 -0
- data/doc/css/style.css +322 -0
- data/doc/file_list.html +46 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +112 -0
- data/doc/js/app.js +205 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +110 -0
- data/doc/top-level-namespace.html +105 -0
- data/lib/semillagen/generator.rb +248 -0
- data/lib/semillagen/utils.rb +40 -0
- data/lib/semillagen/version.rb +3 -0
- data/lib/semillagen.rb +33 -0
- data/rakefile.rb +39 -0
- data/semillagen.gemspec +76 -0
- metadata +136 -0
@@ -0,0 +1,248 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module SemillaGen
|
5
|
+
|
6
|
+
#Contains description information for a single template item.
|
7
|
+
# A class template can have more than one file in it, for example:
|
8
|
+
# a class definition and the test case definition for the class.
|
9
|
+
class TemplateItem
|
10
|
+
attr_accessor :target, :name_pattern, :source
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
# Generates items (Projects or Classes) using the specified
|
16
|
+
# template and name.
|
17
|
+
#
|
18
|
+
# @param [itemtype] The kind of item to create, ':class' or ':project'.
|
19
|
+
# @param [template] The name of the template to use.
|
20
|
+
# @param [name] The name of project or qualified class name to generate.
|
21
|
+
def self.generate(itemtype, template, name)
|
22
|
+
|
23
|
+
#find the template folder
|
24
|
+
template_folder = SemillaGen::findTemplate(itemtype, template)
|
25
|
+
|
26
|
+
raise "Template not found." if template_folder.nil?
|
27
|
+
|
28
|
+
|
29
|
+
if itemtype == :class
|
30
|
+
#When item is a class type
|
31
|
+
|
32
|
+
#Read the info.semilla file
|
33
|
+
files = SemillaGen::parseInfoFile File.join(template_folder, "info.semilla")
|
34
|
+
SemillaGen::generateFiles(template_folder, files, name)
|
35
|
+
|
36
|
+
elsif itemtype == :project
|
37
|
+
#when item is a project type
|
38
|
+
|
39
|
+
SemillaGen::generateProject(template_folder, name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
# Read a info.semilla file. This file contains
|
46
|
+
# a description of the files to create.
|
47
|
+
# Each line has the following format:
|
48
|
+
# filename_pattern : template_file => target_path
|
49
|
+
#
|
50
|
+
# filename_pattern = How the generated file should be named.
|
51
|
+
# template_file = The file whose contents will be used to generate the new file.
|
52
|
+
# Some keywords inside the text will be replaced
|
53
|
+
# (@@PACKAGE@@, @@NAME@@)
|
54
|
+
# target_path = The folder where the file should be created.
|
55
|
+
#
|
56
|
+
# @param [path] The path to the info.semilla file to read.
|
57
|
+
#
|
58
|
+
# @return [Array of TemplateItem] The collection of TemplateItem parsed.
|
59
|
+
def self.parseInfoFile(path)
|
60
|
+
|
61
|
+
files = {}
|
62
|
+
|
63
|
+
if File.exists? path
|
64
|
+
File.open(path, 'r') do |f|
|
65
|
+
while(line = f.gets)
|
66
|
+
line.strip! #Remove white space
|
67
|
+
|
68
|
+
next if line.start_with?("#") or line.empty? #Skip comments or blank lines
|
69
|
+
|
70
|
+
#Match "FILENAME => PATH"
|
71
|
+
line.match(/([@\w.\-]+)\s*:\s*([\w.\-]+\.tpl) => ([\w.\-\/]+)/) do |m|
|
72
|
+
nameFormat, sourceFile, targetPath = m.captures
|
73
|
+
|
74
|
+
item = SemillaGen::TemplateItem.new
|
75
|
+
item.target = targetPath
|
76
|
+
item.name_pattern = nameFormat
|
77
|
+
item.source = sourceFile
|
78
|
+
|
79
|
+
files[sourceFile] = item
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
return files
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
# Creates a directory hierarchy for the given directory path if the directories
|
93
|
+
# do not exist.
|
94
|
+
#
|
95
|
+
# @param [path] The path to create if it does not exist already.
|
96
|
+
def self.recursive_mkdir(path)
|
97
|
+
steps = path.split File::SEPARATOR
|
98
|
+
|
99
|
+
original_dir = Dir.pwd
|
100
|
+
|
101
|
+
steps.each do |s|
|
102
|
+
#Make dir if it does not exist
|
103
|
+
if !File.directory? s
|
104
|
+
Dir.mkdir s
|
105
|
+
#puts "mkdir #{s}"
|
106
|
+
end
|
107
|
+
Dir.chdir s
|
108
|
+
end
|
109
|
+
|
110
|
+
Dir.chdir original_dir
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
# Generates files for a class.
|
117
|
+
# @param [templateFolder] The folder where the template to be used is located.
|
118
|
+
# @param [fileList] The collection of TemplateItems to be generated.
|
119
|
+
# @param [qualifiedName] The qualified name of the class to be generated (includes namespaces)
|
120
|
+
def self.generateFiles(templateFolder, fileList, qualifiedName)
|
121
|
+
puts "Generating files for: #{qualifiedName}"
|
122
|
+
|
123
|
+
fileList.map do |key, item|
|
124
|
+
#puts "----------#{key}"
|
125
|
+
|
126
|
+
#Check that the sourceFile exists
|
127
|
+
source_full_path = File.absolute_path(File.join(templateFolder, item.source))
|
128
|
+
if File.exists? source_full_path
|
129
|
+
#Obtain namespaces
|
130
|
+
namespaces = qualifiedName.split '.' #Separate all the qualified name components
|
131
|
+
itemName = namespaces.last #the last component is the class name
|
132
|
+
namespaces = namespaces.take(namespaces.length-1) #The rest is the namespace (as array)
|
133
|
+
namespace_text = namespaces.join('.') #the namespace in ActionScript notation
|
134
|
+
|
135
|
+
#Append to the target path, the namespaces as folders
|
136
|
+
final_path = namespaces.unshift(item.target).join(File::SEPARATOR)
|
137
|
+
#Make sure the final_path directories exist
|
138
|
+
self.recursive_mkdir final_path
|
139
|
+
|
140
|
+
#Generate the new name
|
141
|
+
fileName = item.name_pattern.sub('@@', itemName)
|
142
|
+
|
143
|
+
#Read the source file
|
144
|
+
source_text = IO.read source_full_path
|
145
|
+
|
146
|
+
#Define the keywords to be replaced in the template
|
147
|
+
keywords = {}
|
148
|
+
keywords['@@PACKAGE@@'] = namespace_text
|
149
|
+
keywords['@@NAME@@'] = itemName
|
150
|
+
#Replace the keywords in the source text
|
151
|
+
keywords.each do |k,v|
|
152
|
+
source_text.gsub! k, v #use gsub to teplace all ocurrences
|
153
|
+
end
|
154
|
+
#Write out the file
|
155
|
+
outpath = File.join(final_path, fileName)
|
156
|
+
puts " => #{outpath}"
|
157
|
+
File.open(outpath, 'w') {|w| w << source_text}
|
158
|
+
|
159
|
+
else #The source file is not found but it was specified in the info.semilla file.
|
160
|
+
raise "Template file is missing: [#{item.source}]"
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
# Copies (while adjusting contents of files) files and directories recursively.
|
168
|
+
#
|
169
|
+
# @param [path] The path where the source files are read
|
170
|
+
# @param [target_path] The path where the new files will be copied to
|
171
|
+
# @param [options] Hash containing some settings for the file generation/adjustment
|
172
|
+
def self.recursiveCopyDir(path, target_path, options)
|
173
|
+
Dir.foreach path do |f|
|
174
|
+
#Skip hidden files, unless in 'allowedFiles' list
|
175
|
+
next if f.start_with?(".") and !options[:allowed_files].include?(f)
|
176
|
+
|
177
|
+
#The absolute path for the template file/dir
|
178
|
+
source_path = File.join path, f
|
179
|
+
#The name of the file/dir to generate
|
180
|
+
target_name = self.processText f, options
|
181
|
+
#The absolute path of the file/dir to generate
|
182
|
+
generate_path = File.join target_path, target_name
|
183
|
+
|
184
|
+
if File.directory?(source_path)
|
185
|
+
#Create the new dir
|
186
|
+
Dir.mkdir generate_path
|
187
|
+
puts "mkdir #{generate_path}"
|
188
|
+
self.recursiveCopyDir(source_path, generate_path, options)
|
189
|
+
|
190
|
+
else
|
191
|
+
#Copy the file to the new destination
|
192
|
+
|
193
|
+
# -> **Only process files whose extension is not in options[:dont_process_contents]
|
194
|
+
should_process = options[:dont_process_contents].index{|x| source_path.end_with? x}.nil?
|
195
|
+
if should_process
|
196
|
+
# -> Read file contents
|
197
|
+
fileContents = IO.read source_path
|
198
|
+
# -> Adjust project name in content
|
199
|
+
fileContents = self.processText fileContents, options
|
200
|
+
# -> Write file to destination path
|
201
|
+
puts "write #{generate_path} [E]" #The [E] at the end means that the file's contents were editted (ex: Project name replaced).
|
202
|
+
File.open(generate_path, 'w') {|w| w << fileContents}
|
203
|
+
else
|
204
|
+
#just copy the file as is
|
205
|
+
puts "write #{generate_path}"
|
206
|
+
`cp "#{source_path}" "#{generate_path}"`
|
207
|
+
end
|
208
|
+
|
209
|
+
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
|
215
|
+
# Replaces the DEFAULT_PROJECTNAME in the string to the one specified in options
|
216
|
+
#
|
217
|
+
# @param [text] The that will we processed
|
218
|
+
# @param [options] Hash array with the values to be used while processing the text
|
219
|
+
# @return [String]
|
220
|
+
def self.processText(text, options)
|
221
|
+
return text.gsub(SemillaGen::DEFAULT_PROJECTNAME, options[:project_name])
|
222
|
+
end
|
223
|
+
|
224
|
+
# Generates a project
|
225
|
+
#
|
226
|
+
# @param [templateFolder] The folder containing the project template to use
|
227
|
+
# @param [name] The name of the new project
|
228
|
+
def self.generateProject(templateFolder, name)
|
229
|
+
puts "Generating project [#{name}]"
|
230
|
+
|
231
|
+
#Create directory
|
232
|
+
Dir.mkdir name
|
233
|
+
|
234
|
+
options = {}
|
235
|
+
options[:project_name] = name
|
236
|
+
options[:allowed_files] = %w{.gitignore}
|
237
|
+
options[:dont_process_contents] = %w{.swc .swf .jar .exe .bin}
|
238
|
+
|
239
|
+
target_path = File.join(Dir.pwd, name)
|
240
|
+
|
241
|
+
self.recursiveCopyDir(templateFolder, target_path, options)
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
end
|
248
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'pp'
|
3
|
+
|
4
|
+
module SemillaGen
|
5
|
+
|
6
|
+
TEMPLATE_FOLDER = "semilla_templates"
|
7
|
+
|
8
|
+
# Find the template for the specified item type and template name.
|
9
|
+
# Ex: Find a template for projects, named ClassicMVVMProjectTemplate
|
10
|
+
#
|
11
|
+
# @param [itemtype] can be ':class' or ':project'
|
12
|
+
# @param [templatename]
|
13
|
+
def self.findTemplate(itemtype, templatename)
|
14
|
+
|
15
|
+
dirs = [
|
16
|
+
File.expand_path(TEMPLATE_FOLDER), #current folder
|
17
|
+
File.expand_path("~/#{TEMPLATE_FOLDER}"), #home folder
|
18
|
+
SemillaGen::DEFAULT_TEMPLATE_FOLDER #gem lib folder
|
19
|
+
]
|
20
|
+
|
21
|
+
absolute_path = nil;
|
22
|
+
location = File.join(itemtype.to_s, templatename.to_s)
|
23
|
+
#puts "location #{location}"
|
24
|
+
|
25
|
+
dirs.each do |dir|
|
26
|
+
#Look for location in dir
|
27
|
+
currentlocation = File.join(dir, location)
|
28
|
+
#puts currentlocation
|
29
|
+
if File.directory? currentlocation
|
30
|
+
absolute_path = currentlocation
|
31
|
+
break;
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#If we found the template, absolute_path should not be nil
|
36
|
+
puts "Template found at: #{absolute_path}"
|
37
|
+
return absolute_path
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/lib/semillagen.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module SemillaGen
|
4
|
+
|
5
|
+
DEFAULT_TEMPLATE_FOLDER = File.expand_path('../default_templates', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
DEFAULT_PROJECTNAME = "MagicBox"
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'semillagen/utils'
|
11
|
+
require 'semillagen/generator'
|
12
|
+
|
13
|
+
## semillagen Usage:
|
14
|
+
|
15
|
+
=begin
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
- To generate a project (with default template)
|
20
|
+
|
21
|
+
$ semillagen project MyProject
|
22
|
+
|
23
|
+
- To generate a class (with default template)
|
24
|
+
|
25
|
+
$ semillagen class MyProject.MyNamespace.MyClass
|
26
|
+
|
27
|
+
- To generate a class with a specific template
|
28
|
+
|
29
|
+
$ semillagen class MyProject.MySpecialStuff.SpecialClass -t SkinnedControlTemplate
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
=end
|
data/rakefile.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/clean'
|
3
|
+
require 'rake'
|
4
|
+
require_relative "lib/semillagen/version"
|
5
|
+
|
6
|
+
|
7
|
+
version = SemillaGen::VERSION
|
8
|
+
gemfile = "semillagen-#{version}.gem"
|
9
|
+
gemspecfile = "semillagen.gemspec"
|
10
|
+
########################################################################################################################
|
11
|
+
|
12
|
+
#####################################
|
13
|
+
#Clean
|
14
|
+
CLEAN << FileList["*.gem"]
|
15
|
+
|
16
|
+
|
17
|
+
#####################################
|
18
|
+
#Build the gem file
|
19
|
+
file gemfile => [gemspecfile] do |t|
|
20
|
+
sh "gem build #{gemspecfile}"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Builds the gem"
|
24
|
+
task :build => gemfile
|
25
|
+
|
26
|
+
####################################
|
27
|
+
desc "Uninstall the gem"
|
28
|
+
task :uninstall do |t|
|
29
|
+
sh "gem uninstall semillagen"
|
30
|
+
end
|
31
|
+
|
32
|
+
##################################
|
33
|
+
desc "Install the gem"
|
34
|
+
task :install => :build do |t|
|
35
|
+
sh "gem install #{gemfile}"
|
36
|
+
end
|
37
|
+
|
38
|
+
##################################
|
39
|
+
task :default => [:clean, :build, :install]
|
data/semillagen.gemspec
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
|
2
|
+
# -*- encoding: utf-8 -*-
|
3
|
+
$:.push('lib')
|
4
|
+
require "semillagen/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "semillagen"
|
8
|
+
s.version = SemillaGen::VERSION.dup
|
9
|
+
s.date = "2012-03-22"
|
10
|
+
s.summary = "Simple ActionScript project generation."
|
11
|
+
s.email = "support@semilla.com"
|
12
|
+
s.homepage = "http://github.com/Darkoleptiko/SemillaGen/"
|
13
|
+
s.authors = ['Victor G. Rosales']
|
14
|
+
|
15
|
+
s.description = <<-EOF
|
16
|
+
SemillaGen let's you create (Actionscript3.0 based) projects and classes with ease.
|
17
|
+
SemillaGen generated projects or classes are customizable via templates.
|
18
|
+
|
19
|
+
The default templates setup the project for Continuous Integration using FlexUnit.
|
20
|
+
the default class template creates a class and a test case automatically.
|
21
|
+
|
22
|
+
usage:
|
23
|
+
|
24
|
+
To create a new project run:
|
25
|
+
$ semillagen project MyAwesomeProject
|
26
|
+
$ ls
|
27
|
+
MyAwesomeProject
|
28
|
+
|
29
|
+
To create a new class with test case:
|
30
|
+
$ cd MyAwesomeProject
|
31
|
+
$ semillagen class com.semilla.MillionDollarClass
|
32
|
+
|
33
|
+
You will see that semillagen created the following files:
|
34
|
+
src/com/semilla/MillionDollarClass.as
|
35
|
+
test-src/com/semilla/MillionDollarClassTest.as
|
36
|
+
|
37
|
+
The default template is ready for building as soon as created.
|
38
|
+
To build and test your project we use rake.
|
39
|
+
|
40
|
+
$ rake
|
41
|
+
|
42
|
+
Rake will build a debug and release versions of your project. It will also create a FlexUnit test swf and run the test.
|
43
|
+
You will see the results of the tests and also you will see some xml files under the [test-report] folder. These reports
|
44
|
+
are JUnit compatible.
|
45
|
+
|
46
|
+
You can use a CI tool like Jenkins to automatically build and test your project.
|
47
|
+
|
48
|
+
EOF
|
49
|
+
|
50
|
+
dependencies = [
|
51
|
+
# Examples:
|
52
|
+
# [:runtime, "rack", "~> 1.1"],
|
53
|
+
# [:development, "rspec", "~> 2.1"],
|
54
|
+
[:semilla, "semilla", "~> 0.0.5"],
|
55
|
+
[:rake, "rake", "~> 0.9.2"]
|
56
|
+
]
|
57
|
+
|
58
|
+
s.files = Dir['**/*']
|
59
|
+
s.test_files = Dir['test/**/*'] + Dir['spec/**/*']
|
60
|
+
s.executables = Dir['bin/*'].map { |f| File.basename(f) }
|
61
|
+
s.require_paths = ["lib"]
|
62
|
+
|
63
|
+
|
64
|
+
## Make sure you can build the gem on older versions of RubyGems too:
|
65
|
+
s.rubygems_version = "1.8.15"
|
66
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
67
|
+
s.specification_version = 3 if s.respond_to? :specification_version
|
68
|
+
|
69
|
+
dependencies.each do |type, name, version|
|
70
|
+
if s.respond_to?("add_#{type}_dependency")
|
71
|
+
s.send("add_#{type}_dependency", name, version)
|
72
|
+
else
|
73
|
+
s.add_dependency(name, version)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: semillagen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Victor G. Rosales
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: semilla
|
16
|
+
requirement: &2160461360 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.0.5
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2160461360
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &2160460320 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.2
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2160460320
|
36
|
+
description: ! "SemillaGen let's you create (Actionscript3.0 based) projects and classes
|
37
|
+
with ease.\nSemillaGen generated projects or classes are customizable via templates.\n\nThe
|
38
|
+
default templates setup the project for Continuous Integration using FlexUnit.\nthe
|
39
|
+
default class template creates a class and a test case automatically.\n\nusage:\n\nTo
|
40
|
+
create a new project run:\n $ semillagen project MyAwesomeProject \n $ ls\n MyAwesomeProject\n
|
41
|
+
\ \nTo create a new class with test case:\n $ cd MyAwesomeProject\n $ semillagen
|
42
|
+
class com.semilla.MillionDollarClass\n \nYou will see that semillagen created the
|
43
|
+
following files:\nsrc/com/semilla/MillionDollarClass.as\ntest-src/com/semilla/MillionDollarClassTest.as\n\nThe
|
44
|
+
default template is ready for building as soon as created.\nTo build and test your
|
45
|
+
project we use rake.\n\n $ rake\n \nRake will build a debug and release versions
|
46
|
+
of your project. It will also create a FlexUnit test swf and run the test.\nYou
|
47
|
+
will see the results of the tests and also you will see some xml files under the
|
48
|
+
[test-report] folder. These reports\nare JUnit compatible.\n\nYou can use a CI tool
|
49
|
+
like Jenkins to automatically build and test your project.\n \n"
|
50
|
+
email: support@semilla.com
|
51
|
+
executables:
|
52
|
+
- semillagen
|
53
|
+
extensions: []
|
54
|
+
extra_rdoc_files: []
|
55
|
+
files:
|
56
|
+
- bin/semillagen
|
57
|
+
- default_templates/class/default/classTemplate.as.tpl
|
58
|
+
- default_templates/class/default/info.semilla
|
59
|
+
- default_templates/class/default/testClassTemplate.as.tpl
|
60
|
+
- default_templates/project/default/Gemfile
|
61
|
+
- default_templates/project/default/Gemfile.lock
|
62
|
+
- default_templates/project/default/lib/flexunit4/flexunit-4.1.0-8-as3_4.1.0.16076.swc
|
63
|
+
- default_templates/project/default/lib/flexunit4/flexunit-cilistener-4.1.0-8-4.1.0.16076.swc
|
64
|
+
- default_templates/project/default/lib/flexunit4/flexunit-uilistener-4.1.0-8-4.1.0.16076.swc
|
65
|
+
- default_templates/project/default/lib/flexunit4/FlexUnit1Lib.swc
|
66
|
+
- default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8-javadoc.jar
|
67
|
+
- default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8-sources.jar
|
68
|
+
- default_templates/project/default/lib/flexunit4/flexUnitTasks-4.1.0-8.jar
|
69
|
+
- default_templates/project/default/lib/flexunit4/fluint-extensions-4.1.0-8-4.1.0.16076.swc
|
70
|
+
- default_templates/project/default/lib/flexunit4/hamcrest-as3-flex-1.1.3.swc
|
71
|
+
- default_templates/project/default/MagicBox.as3proj
|
72
|
+
- default_templates/project/default/rakefile.rb
|
73
|
+
- default_templates/project/default/src/MagicBox.as
|
74
|
+
- default_templates/project/default/src/PlainButton.as
|
75
|
+
- default_templates/project/default/src/transforms/LeetTransform.as
|
76
|
+
- default_templates/project/default/src/transforms/LowerCaseTransform.as
|
77
|
+
- default_templates/project/default/src/transforms/ReverseTransform.as
|
78
|
+
- default_templates/project/default/src/transforms/SplitTransform.as
|
79
|
+
- default_templates/project/default/src/transforms/UpperCaseTransform.as
|
80
|
+
- default_templates/project/default/test-src/listeners/SemillaCIListener.as
|
81
|
+
- default_templates/project/default/test-src/listeners/TraceListener.as
|
82
|
+
- default_templates/project/default/test-src/TestRunner.template
|
83
|
+
- default_templates/project/default/test-src/TextFieldListener.as
|
84
|
+
- default_templates/project/default/test-src/transforms/LeetTransformTest.as
|
85
|
+
- default_templates/project/default/test-src/transforms/LowerCaseTransformTest.as
|
86
|
+
- default_templates/project/default/test-src/transforms/ReverseTransformTest.as
|
87
|
+
- default_templates/project/default/test-src/transforms/SplitTransformTest.as
|
88
|
+
- default_templates/project/default/test-src/transforms/UpperCaseTransformTest.as
|
89
|
+
- doc/_index.html
|
90
|
+
- doc/class_list.html
|
91
|
+
- doc/css/common.css
|
92
|
+
- doc/css/full_list.css
|
93
|
+
- doc/css/style.css
|
94
|
+
- doc/file_list.html
|
95
|
+
- doc/frames.html
|
96
|
+
- doc/index.html
|
97
|
+
- doc/js/app.js
|
98
|
+
- doc/js/full_list.js
|
99
|
+
- doc/js/jquery.js
|
100
|
+
- doc/method_list.html
|
101
|
+
- doc/SemillaGen/TemplateItem.html
|
102
|
+
- doc/SemillaGen.html
|
103
|
+
- doc/top-level-namespace.html
|
104
|
+
- lib/semillagen/generator.rb
|
105
|
+
- lib/semillagen/utils.rb
|
106
|
+
- lib/semillagen/version.rb
|
107
|
+
- lib/semillagen.rb
|
108
|
+
- rakefile.rb
|
109
|
+
- README.md
|
110
|
+
- semillagen.gemspec
|
111
|
+
homepage: http://github.com/Darkoleptiko/SemillaGen/
|
112
|
+
licenses: []
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project:
|
131
|
+
rubygems_version: 1.8.15
|
132
|
+
signing_key:
|
133
|
+
specification_version: 3
|
134
|
+
summary: Simple ActionScript project generation.
|
135
|
+
test_files: []
|
136
|
+
has_rdoc:
|