resin 0.1.0 → 0.2.0
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/amber/bin/amberc +352 -0
- data/amber/bin/nodecompile.js +33 -0
- data/bin/resin-compile +6 -0
- data/lib/resin/compiler.rb +81 -0
- metadata +25 -26
data/amber/bin/amberc
ADDED
@@ -0,0 +1,352 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# This is a "compiler" for Amber code. Run without arguments for help.
|
4
|
+
#
|
5
|
+
# Get Amber root directory from the location of this script so that
|
6
|
+
# we can find the st and js directories etc.
|
7
|
+
|
8
|
+
# Earlier we used this but it does not work on Mac
|
9
|
+
# Amber=$(readlink -f `dirname ${0}`/..)
|
10
|
+
TARGET=`dirname ${0}`/..
|
11
|
+
pushd . >/dev/null
|
12
|
+
cd $TARGET
|
13
|
+
AMBER="`\pwd -P`"
|
14
|
+
popd >/dev/null
|
15
|
+
|
16
|
+
function usage {
|
17
|
+
cat <<ENDOFHELP
|
18
|
+
Usage: $0 [-l lib1,lib2...] [-i file] [-m class] [-M file]
|
19
|
+
[-o] [-O|-A] [-d] [-s suffix] [-S suffix] [file1 [file2 ...]] [Program]
|
20
|
+
|
21
|
+
Will compile Amber files - either separately or into a runnable complete
|
22
|
+
program. If no .st files are listed only a linking stage is performed.
|
23
|
+
Files listed will be handled using these rules:
|
24
|
+
|
25
|
+
*.js
|
26
|
+
Files are linked (concatenated) in listed order.
|
27
|
+
If not found we look in $AMBER/js
|
28
|
+
|
29
|
+
*.st
|
30
|
+
Files are compiled into .js files before concatenated.
|
31
|
+
If not found we look in $AMBER/st.
|
32
|
+
|
33
|
+
NOTE: Each file is currently considered to be a fileout of a single class
|
34
|
+
category of the same name as the file!
|
35
|
+
|
36
|
+
If no Program is specified each given .st file will be compiled into
|
37
|
+
a .js file. Otherwise a <Program>.js file is linked together based on
|
38
|
+
the options:
|
39
|
+
|
40
|
+
-l library1,library2
|
41
|
+
Additionally add listed libraries (no spaces or .js) in listed order.
|
42
|
+
|
43
|
+
-i file
|
44
|
+
Add library initializer <file> instead of default $AMBER/js/init.js
|
45
|
+
|
46
|
+
-m class
|
47
|
+
Add at end a call to #main in class <class>.
|
48
|
+
|
49
|
+
-M file
|
50
|
+
Add at end javascript file <file> acting as main.
|
51
|
+
|
52
|
+
-o
|
53
|
+
Optimize each js file using the Google closure compiler.
|
54
|
+
Using Closure compiler found at ~/compiler.jar
|
55
|
+
|
56
|
+
-O
|
57
|
+
Optimize final <Program>.js using the Google closure compiler.
|
58
|
+
Using Closure compiler found at ~/compiler.jar
|
59
|
+
|
60
|
+
-A Same as -O but use --compilation_level ADVANCED_OPTIMIZATIONS
|
61
|
+
|
62
|
+
-d
|
63
|
+
Additionally export code for deploy - stripped from source etc.
|
64
|
+
Uses suffix ".deploy.js" in addition to any explicit given suffic using -s.
|
65
|
+
|
66
|
+
-s suffix
|
67
|
+
Add <suffix> to compiled js files so that File.st is compiled into
|
68
|
+
File.<suffix>.js.
|
69
|
+
|
70
|
+
-S suffix
|
71
|
+
Use <suffix> for all libraries accessed using -L or -l. This makes it possible
|
72
|
+
to have multiple flavors of Amber and libraries in the same place.
|
73
|
+
|
74
|
+
|
75
|
+
Example invocations:
|
76
|
+
|
77
|
+
Just compile Kernel-Objects.st to Kernel-Objects.js:
|
78
|
+
|
79
|
+
amberc Kernel-Objects.st
|
80
|
+
|
81
|
+
Compile Hello.st to Hello.js and create complete program called
|
82
|
+
Program.js and adding a call to class method #main in class Hello:
|
83
|
+
|
84
|
+
amberc -m Hello Hello.st Program
|
85
|
+
|
86
|
+
Compile two .st files into corresponding .js files,
|
87
|
+
and link with specific myboot.js, myKernel.js, myinit.js
|
88
|
+
and main.js and create complete program called Program.js:
|
89
|
+
|
90
|
+
amberc -M main.js myinit.js myboot.js myKernel.js Cat1.st Cat2.st Program
|
91
|
+
|
92
|
+
ENDOFHELP
|
93
|
+
exit 1;
|
94
|
+
}
|
95
|
+
|
96
|
+
# Check we at least got one argument
|
97
|
+
if [ -z $1 ] ; then
|
98
|
+
usage
|
99
|
+
fi
|
100
|
+
|
101
|
+
# Define our predefined library combinations
|
102
|
+
KERNEL="boot Kernel-Objects Kernel-Classes Kernel-Methods Kernel-Collections Kernel-Exceptions Kernel-Transcript"
|
103
|
+
COMPILER="$KERNEL parser Compiler"
|
104
|
+
|
105
|
+
# Predefined initializer
|
106
|
+
INITIALIZER="$AMBER/js/init.js"
|
107
|
+
|
108
|
+
# Default values
|
109
|
+
ENV=
|
110
|
+
INIT=$INITIALIZER
|
111
|
+
MAIN=
|
112
|
+
MAINFILE=
|
113
|
+
BASE=$KERNEL
|
114
|
+
LOAD=
|
115
|
+
CLOSUREOPTS=
|
116
|
+
# Ok, bad coding practice but hey, who would use such a suffix?
|
117
|
+
SUFFIX=no-silly-suffix
|
118
|
+
SUFFIXUSED=
|
119
|
+
DEPLOY=false
|
120
|
+
NODECOMPILE=nodecompile
|
121
|
+
|
122
|
+
# Read options and shift them away
|
123
|
+
while getopts "l:i:m:M:oOAds:S:h?" o; do
|
124
|
+
case "$o" in
|
125
|
+
l) LOAD=$OPTARG;;
|
126
|
+
i) INIT=$OPTARG;;
|
127
|
+
m) MAIN=$OPTARG;;
|
128
|
+
M) MAINFILE=$OPTARG;;
|
129
|
+
o) CLOSURE=true
|
130
|
+
CLOSUREPARTS=true;;
|
131
|
+
O) CLOSURE=true
|
132
|
+
CLOSUREFULL=true;;
|
133
|
+
A) CLOSURE=true
|
134
|
+
CLOSUREOPTS="$CLOSUREOPTS --compilation_level ADVANCED_OPTIMIZATIONS"
|
135
|
+
CLOSUREFULL=true;;
|
136
|
+
d) DEPLOY=true;;
|
137
|
+
s) SUFFIX=$OPTARG
|
138
|
+
SUFFIXUSED=$SUFFIX;;
|
139
|
+
S) LOADSUFFIX=$OPTARG
|
140
|
+
SUFFIXUSED=$SUFFIX;;
|
141
|
+
h) usage;;
|
142
|
+
[?]) usage;;
|
143
|
+
esac
|
144
|
+
done
|
145
|
+
shift $(($OPTIND - 1))
|
146
|
+
|
147
|
+
# Check for Closure compiler and Java
|
148
|
+
if [ ! -z $CLOSURE ]; then
|
149
|
+
java > /dev/null
|
150
|
+
if [ $? -eq 0 ]; then
|
151
|
+
if [ ! -f ~/compiler.jar ]; then
|
152
|
+
echo "Can not find Closure compiler at ~/compiler.jar"
|
153
|
+
exit 1
|
154
|
+
fi
|
155
|
+
else
|
156
|
+
echo "java is not installed and is needed for -O, -A or -o (Closure compiler)."
|
157
|
+
exit 1
|
158
|
+
fi
|
159
|
+
fi
|
160
|
+
|
161
|
+
# Function for looking up listed js files
|
162
|
+
function resolvejs {
|
163
|
+
FNAME="$1$LOADSUFFIX.js"
|
164
|
+
if [ -f $FNAME ]; then
|
165
|
+
RESOLVED="$FNAME"
|
166
|
+
else
|
167
|
+
if [ -f $AMBER/js/$FNAME ]; then
|
168
|
+
RESOLVED="$AMBER/js/$FNAME"
|
169
|
+
else
|
170
|
+
echo "Javascript file not found: $FNAME"
|
171
|
+
exit 1
|
172
|
+
fi
|
173
|
+
fi
|
174
|
+
}
|
175
|
+
|
176
|
+
# Resolve listed libraries in $BASE deparated by spaces
|
177
|
+
for FILE in $BASE
|
178
|
+
do
|
179
|
+
resolvejs $FILE
|
180
|
+
TOBASE="$TOBASE $RESOLVED"
|
181
|
+
done
|
182
|
+
|
183
|
+
# Resolve listed libraries in $LOAD separated by ,
|
184
|
+
LOAD=${LOAD//,/\ }
|
185
|
+
for FILE in $LOAD
|
186
|
+
do
|
187
|
+
resolvejs $FILE
|
188
|
+
TOLOAD="$TOLOAD $RESOLVED"
|
189
|
+
done
|
190
|
+
|
191
|
+
# Resolve COMPILER
|
192
|
+
for FILE in $COMPILER
|
193
|
+
do
|
194
|
+
resolvejs $FILE
|
195
|
+
TOCOMPILER="$TOCOMPILER $RESOLVED"
|
196
|
+
done
|
197
|
+
|
198
|
+
# Add supplied libraries we have not already loaded (they are already resolved)
|
199
|
+
#for FILE in $EXTRA
|
200
|
+
#do
|
201
|
+
# resolvejs $FILE
|
202
|
+
# TOEXTRA="$TOEXTRA $RESOLVED"
|
203
|
+
#done
|
204
|
+
|
205
|
+
TOCOMPILER="$TOCOMPILER$TOLOAD"
|
206
|
+
|
207
|
+
# Resolve init and nodecompile
|
208
|
+
THEREST="init $AMBER/bin/$NODECOMPILE"
|
209
|
+
for FILE in $THEREST
|
210
|
+
do
|
211
|
+
resolvejs $FILE
|
212
|
+
TOCOMPILER="$TOCOMPILER $RESOLVED"
|
213
|
+
done
|
214
|
+
|
215
|
+
# Add supplied libraries
|
216
|
+
LIBS="$TOBASE $TOLOAD"
|
217
|
+
|
218
|
+
# Get a unique tempdir and make it get auto removed on exit
|
219
|
+
TMPDIR=`mktemp -d amberc.XXXXXX`
|
220
|
+
trap "rm -rf $TMPDIR" EXIT
|
221
|
+
|
222
|
+
|
223
|
+
# --------------------------------------------------
|
224
|
+
# Collect libraries and Smalltalk files looking
|
225
|
+
# both locally and in $AMBER/js and $AMBER/st
|
226
|
+
# --------------------------------------------------
|
227
|
+
PROGRAM=
|
228
|
+
until [ "$*" = "" ]
|
229
|
+
do
|
230
|
+
case $1 in
|
231
|
+
*.st)
|
232
|
+
CATEGORY=`basename $1 .st`
|
233
|
+
if [ -f "$1" ]; then
|
234
|
+
COMPILE="$COMPILE $1 $CATEGORY"
|
235
|
+
COMPILED="$COMPILED $CATEGORY$SUFFIXUSED.js"
|
236
|
+
else
|
237
|
+
if [ -f $AMBER/st/$1 ]; then
|
238
|
+
COMPILE="$COMPILE $AMBER/st/$1 $CATEGORY"
|
239
|
+
COMPILED="$COMPILED $CATEGORY$SUFFIXUSED.js"
|
240
|
+
else
|
241
|
+
echo "Amber file not found: $1"
|
242
|
+
exit 1
|
243
|
+
fi
|
244
|
+
fi
|
245
|
+
;;
|
246
|
+
|
247
|
+
*.js)
|
248
|
+
resolvejs $1
|
249
|
+
LIBS="$LIBS $RESOLVED"
|
250
|
+
;;
|
251
|
+
*)
|
252
|
+
# Will end up being the last non js/st argument
|
253
|
+
PROGRAM=$1
|
254
|
+
;;
|
255
|
+
esac
|
256
|
+
shift
|
257
|
+
done
|
258
|
+
|
259
|
+
# --------------------------------------------------
|
260
|
+
# Actual compilation phase of collected .st files
|
261
|
+
# --------------------------------------------------
|
262
|
+
|
263
|
+
# Create compiler dynamically
|
264
|
+
cat $TOCOMPILER > $TMPDIR/compiler.js
|
265
|
+
|
266
|
+
# Compile all collected .st files to .js
|
267
|
+
echo "Loading libraries$TOCOMPILER and compiling ..."
|
268
|
+
node $TMPDIR/compiler.js $DEPLOY $SUFFIX $COMPILE
|
269
|
+
|
270
|
+
# Verify all .js files corresponding to .st files were created, otherwise exit
|
271
|
+
IFS=" "
|
272
|
+
for FILE in $COMPILED
|
273
|
+
do
|
274
|
+
if [ ! -f "$FILE" ]; then
|
275
|
+
echo "Failed compilation of $FILE, exiting."
|
276
|
+
exit 1
|
277
|
+
fi
|
278
|
+
done
|
279
|
+
|
280
|
+
if [ ! -z $CLOSUREPARTS ]; then
|
281
|
+
echo "Compiling all js files using Google closure compiler."
|
282
|
+
|
283
|
+
ALLJSFILES="$COMPILED $LIBS"
|
284
|
+
for FILE in $ALLJSFILES
|
285
|
+
do
|
286
|
+
mv $FILE $FILE.original
|
287
|
+
java -jar ~/compiler.jar $CLOSUREOPTS --js $FILE.original --js_output_file $FILE
|
288
|
+
rm $FILE.original
|
289
|
+
done
|
290
|
+
fi
|
291
|
+
|
292
|
+
|
293
|
+
if [ -z $PROGRAM ]; then
|
294
|
+
echo "Done."
|
295
|
+
exit 0
|
296
|
+
fi
|
297
|
+
|
298
|
+
# --------------------------------------------------
|
299
|
+
# Now we start composing resulting javascript file.
|
300
|
+
# --------------------------------------------------
|
301
|
+
|
302
|
+
# Add collected libraries to libs.js file.
|
303
|
+
if [ ! -z "$LIBS" ]; then
|
304
|
+
echo "Adding libraries $LIBS ..."
|
305
|
+
cat $LIBS > $TMPDIR/libs.js
|
306
|
+
LIBS=$TMPDIR/libs.js
|
307
|
+
fi
|
308
|
+
|
309
|
+
echo "Adding Amber code$COMPILED ..."
|
310
|
+
|
311
|
+
# Check for init file
|
312
|
+
if [ ! -z "$INIT" ]; then
|
313
|
+
if [ -f "$INIT" ]; then
|
314
|
+
echo "Adding initializer $INIT ..."
|
315
|
+
else
|
316
|
+
echo "Can not find init file $INIT, exiting."
|
317
|
+
exit 1
|
318
|
+
fi
|
319
|
+
fi
|
320
|
+
|
321
|
+
# Check for adding main
|
322
|
+
if [ ! -z "$MAIN" ]; then
|
323
|
+
echo "Adding call to $MAIN class >> main ..."
|
324
|
+
echo "smalltalk.$MAIN._main()" > $TMPDIR/main.js
|
325
|
+
MAIN=$TMPDIR/main.js
|
326
|
+
fi
|
327
|
+
|
328
|
+
# Check for adding main file
|
329
|
+
if [ ! -z "$MAINFILE" ]; then
|
330
|
+
if [ -f "$MAINFILE" ]; then
|
331
|
+
echo "Adding main as $MAINFILE ..."
|
332
|
+
else
|
333
|
+
echo "Can not find main file $MAINFILE, exiting."
|
334
|
+
exit 1
|
335
|
+
fi
|
336
|
+
MAIN=$MAINFILE
|
337
|
+
fi
|
338
|
+
|
339
|
+
# And finally concatenate Program.js
|
340
|
+
echo "Writing $PROGRAM.js ..."
|
341
|
+
cat $LIBS $COMPILED $INIT $MAIN > $PROGRAM.js
|
342
|
+
echo "Done."
|
343
|
+
|
344
|
+
|
345
|
+
if [ ! -z $CLOSUREFULL ]; then
|
346
|
+
echo "Compiling $PROGRAM.js file using Google closure compiler."
|
347
|
+
mv $PROGRAM.js $PROGRAM.js.original
|
348
|
+
java -jar ~/compiler.jar $CLOSUREOPTS --js $PROGRAM.js.original --js_output_file $PROGRAM.js
|
349
|
+
rm $PROGRAM.js.original
|
350
|
+
echo "Done."
|
351
|
+
fi
|
352
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// NOTE: This code is called using the amberc bash script - do not use directly.
|
2
|
+
// The arguments variable is a series of .st filenames and category names.
|
3
|
+
// If it is a .st file we import it, if it is a category name we export it
|
4
|
+
// as aCategoryName.js.
|
5
|
+
var sys = require('sys'), fs = require('fs');
|
6
|
+
|
7
|
+
// Only care about our arguments, strip away node, all.js and debug flag.
|
8
|
+
var arguments = process.argv.splice(4);
|
9
|
+
|
10
|
+
// First argument is also produce deploy files: "true" or "false"
|
11
|
+
var deploy = (process.argv[2] == "true");
|
12
|
+
|
13
|
+
// Second argument is suffix: "no-silly-suffix" means none
|
14
|
+
suffix = process.argv[3];
|
15
|
+
if (suffix == "no-silly-suffix") {
|
16
|
+
suffix = "";
|
17
|
+
}
|
18
|
+
|
19
|
+
// If it ends with .st, import it, otherwise export category as .js
|
20
|
+
arguments.forEach(function(val, index, array) {
|
21
|
+
if (/\.st/.test(val)) {
|
22
|
+
sys.puts("Reading file " + val);
|
23
|
+
code = fs.readFileSync(val, "utf8");
|
24
|
+
smalltalk.Importer._new()._import_(code._stream());
|
25
|
+
} else {
|
26
|
+
sys.puts("Exporting " + (deploy ? "(debug + deploy)" : "(debug)") + " category "
|
27
|
+
+ val + " as " + val + suffix + ".js" + (deploy ? " and " + val + suffix + ".deploy.js" : ""));
|
28
|
+
fs.writeFileSync(val + suffix + ".js", smalltalk.Exporter._new()._exportPackage_(val));
|
29
|
+
if (deploy) {
|
30
|
+
fs.writeFileSync(val + suffix + ".deploy.js", smalltalk.StrippedExporter._new()._exportPackage_(val));
|
31
|
+
}
|
32
|
+
}
|
33
|
+
});
|
data/bin/resin-compile
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
|
2
|
+
module Resin
|
3
|
+
module Compiler
|
4
|
+
CORE = ['boot', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods',
|
5
|
+
'Kernel-Collections', 'Kernel-Exceptions', 'Canvas']
|
6
|
+
|
7
|
+
def self.write_file(handle, filepath)
|
8
|
+
package = File.basename(filepath).split('.').first
|
9
|
+
puts "#{package} #{filepath}"
|
10
|
+
handle.write("/* start #{package} */\n")
|
11
|
+
handle.write(File.open(filepath, 'r').read)
|
12
|
+
handle.write("\n/* end #{package} */\n")
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.run(additional_files=nil)
|
17
|
+
begin
|
18
|
+
spec = Gem::Specification.find_by_name('resin')
|
19
|
+
amber_path = File.join(spec.full_gem_path, 'amber')
|
20
|
+
rescue Gem::LoadError
|
21
|
+
amber_path = File.expand_path(File.dirname(__FILE__) + '/../amber/')
|
22
|
+
end
|
23
|
+
project_path = Dir.pwd
|
24
|
+
|
25
|
+
|
26
|
+
files = Dir["#{project_path}/js/*.deploy.js"]
|
27
|
+
drop_files = Dir["#{project_path}/drops/**/js/*.deploy.js"]
|
28
|
+
out = File.open('resin-app.deploy.js', 'w')
|
29
|
+
|
30
|
+
write_file(out, File.join(amber_path, 'js', 'lib', 'jQuery', 'jquery-1.6.4.min.js'))
|
31
|
+
|
32
|
+
puts ">> Writing the Amber core: "
|
33
|
+
CORE.each do |package|
|
34
|
+
# Default to try to load the deploy script if it exists
|
35
|
+
path = File.join(amber_path, 'js', "#{package}.deploy.js")
|
36
|
+
unless File.exists? path
|
37
|
+
path = File.join(amber_path, 'js', "#{package}.js")
|
38
|
+
unless File.exists? path
|
39
|
+
puts "Missing #{package}!"
|
40
|
+
puts "(looked for #{path})"
|
41
|
+
puts "Aborting."
|
42
|
+
exit 1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
write_file(out, path)
|
46
|
+
end
|
47
|
+
puts
|
48
|
+
|
49
|
+
puts ">> Writing project files: "
|
50
|
+
files.each do |path|
|
51
|
+
if path =~ /.*-Tests.*/
|
52
|
+
next
|
53
|
+
end
|
54
|
+
write_file(out, path)
|
55
|
+
end
|
56
|
+
puts
|
57
|
+
|
58
|
+
puts ">> Writing drop files: "
|
59
|
+
drop_files.each do |path|
|
60
|
+
if path =~ /.*-Tests.*/
|
61
|
+
next
|
62
|
+
end
|
63
|
+
write_file(out, path)
|
64
|
+
end
|
65
|
+
puts
|
66
|
+
|
67
|
+
unless additional_files.nil?
|
68
|
+
additional_files.each do |path|
|
69
|
+
path = File.join(project_path, 'js', additional_files)
|
70
|
+
write_file(out, path)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
write_file(out, File.join(amber_path, 'js', 'init.js'))
|
75
|
+
|
76
|
+
out.close
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &7640840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *7640840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &7640400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *7640400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: shotgun
|
38
|
-
requirement: &
|
38
|
+
requirement: &7639920 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *7639920
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &7639500 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *7639500
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rack-test
|
60
|
-
requirement: &
|
60
|
+
requirement: &7639040 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *7639040
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thin
|
71
|
-
requirement: &
|
71
|
+
requirement: &7638620 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *7638620
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: haml
|
82
|
-
requirement: &
|
82
|
+
requirement: &7638200 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *7638200
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: sinatra
|
93
|
-
requirement: &
|
93
|
+
requirement: &7637780 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *7637780
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: json
|
104
|
-
requirement: &
|
104
|
+
requirement: &7637300 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,18 +109,21 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *7637300
|
113
113
|
description:
|
114
114
|
email: tyler@linux.com
|
115
115
|
executables:
|
116
116
|
- runresin
|
117
|
+
- resin-compile
|
117
118
|
extensions: []
|
118
119
|
extra_rdoc_files:
|
119
120
|
- README.markdown
|
120
121
|
files:
|
121
122
|
- bin/runresin
|
123
|
+
- bin/resin-compile
|
122
124
|
- lib/resin/helpers.rb
|
123
125
|
- lib/resin/app.rb
|
126
|
+
- lib/resin/compiler.rb
|
124
127
|
- lib/resin.rb
|
125
128
|
- lib/resin/views/index.haml
|
126
129
|
- amber/css/amber-normalize.css
|
@@ -203,6 +206,8 @@ files:
|
|
203
206
|
- amber/images/amber.png
|
204
207
|
- amber/images/offHover.png
|
205
208
|
- amber/images/amber_small.png
|
209
|
+
- amber/bin/amberc
|
210
|
+
- amber/bin/nodecompile.js
|
206
211
|
- README.markdown
|
207
212
|
homepage: https://github.com/rtyler/resin
|
208
213
|
licenses: []
|
@@ -216,18 +221,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
221
|
- - ! '>='
|
217
222
|
- !ruby/object:Gem::Version
|
218
223
|
version: '0'
|
219
|
-
segments:
|
220
|
-
- 0
|
221
|
-
hash: 2600024671058263064
|
222
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
225
|
none: false
|
224
226
|
requirements:
|
225
227
|
- - ! '>='
|
226
228
|
- !ruby/object:Gem::Version
|
227
229
|
version: '0'
|
228
|
-
segments:
|
229
|
-
- 0
|
230
|
-
hash: 2600024671058263064
|
231
230
|
requirements: []
|
232
231
|
rubyforge_project:
|
233
232
|
rubygems_version: 1.8.10
|