spade-packager 0.1.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/.gitignore +2 -0
- data/.gitmodules +6 -0
- data/bin/spadepkg +8 -0
- data/lib/libgems_ext.rb +8 -0
- data/lib/libgems_ext/config_file.rb +33 -0
- data/lib/libgems_ext/dependency_installer.rb +150 -0
- data/lib/libgems_ext/installer.rb +39 -0
- data/lib/libgems_ext/libgems.rb +39 -0
- data/lib/libgems_ext/spec_fetcher.rb +11 -0
- data/lib/spade-packager.rb +1 -0
- data/lib/spade/packager.rb +18 -0
- data/lib/spade/packager/cli.rb +9 -0
- data/lib/spade/packager/cli/base.rb +196 -0
- data/lib/spade/packager/cli/owner.rb +46 -0
- data/lib/spade/packager/cli/project_generator.rb +117 -0
- data/lib/spade/packager/credentials.rb +38 -0
- data/lib/spade/packager/local.rb +50 -0
- data/lib/spade/packager/package.rb +160 -0
- data/lib/spade/packager/remote.rb +98 -0
- data/lib/spade/packager/repository.rb +18 -0
- data/lib/spade/packager/version.rb +5 -0
- data/packages/coffee-script/.gitignore +8 -0
- data/packages/coffee-script/.npmignore +11 -0
- data/packages/coffee-script/Cakefile +229 -0
- data/packages/coffee-script/LICENSE +22 -0
- data/packages/coffee-script/README +47 -0
- data/packages/coffee-script/Rakefile +78 -0
- data/packages/coffee-script/bin/cake +7 -0
- data/packages/coffee-script/bin/coffee +7 -0
- data/packages/coffee-script/documentation/coffee/aliases.coffee +11 -0
- data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +2 -0
- data/packages/coffee-script/documentation/coffee/block_comment.coffee +6 -0
- data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +9 -0
- data/packages/coffee-script/documentation/coffee/classes.coffee +25 -0
- data/packages/coffee-script/documentation/coffee/comparisons.coffee +5 -0
- data/packages/coffee-script/documentation/coffee/conditionals.coffee +13 -0
- data/packages/coffee-script/documentation/coffee/default_args.coffee +8 -0
- data/packages/coffee-script/documentation/coffee/do.coffee +4 -0
- data/packages/coffee-script/documentation/coffee/embedded.coffee +5 -0
- data/packages/coffee-script/documentation/coffee/existence.coffee +10 -0
- data/packages/coffee-script/documentation/coffee/expressions.coffee +9 -0
- data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +3 -0
- data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +3 -0
- data/packages/coffee-script/documentation/coffee/expressions_try.coffee +7 -0
- data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +6 -0
- data/packages/coffee-script/documentation/coffee/functions.coffee +2 -0
- data/packages/coffee-script/documentation/coffee/heredocs.coffee +7 -0
- data/packages/coffee-script/documentation/coffee/heregexes.coffee +11 -0
- data/packages/coffee-script/documentation/coffee/interpolation.coffee +6 -0
- data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +7 -0
- data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +4 -0
- data/packages/coffee-script/documentation/coffee/object_extraction.coffee +13 -0
- data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +19 -0
- data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +5 -0
- data/packages/coffee-script/documentation/coffee/overview.coffee +28 -0
- data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +6 -0
- data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +7 -0
- data/packages/coffee-script/documentation/coffee/prototypes.coffee +3 -0
- data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +2 -0
- data/packages/coffee-script/documentation/coffee/scope.coffee +5 -0
- data/packages/coffee-script/documentation/coffee/slices.coffee +7 -0
- data/packages/coffee-script/documentation/coffee/soaks.coffee +1 -0
- data/packages/coffee-script/documentation/coffee/splats.coffee +27 -0
- data/packages/coffee-script/documentation/coffee/splices.coffee +5 -0
- data/packages/coffee-script/documentation/coffee/strings.coffee +8 -0
- data/packages/coffee-script/documentation/coffee/switch.coffee +10 -0
- data/packages/coffee-script/documentation/coffee/try.coffee +8 -0
- data/packages/coffee-script/documentation/coffee/while.coffee +10 -0
- data/packages/coffee-script/documentation/css/docs.css +374 -0
- data/packages/coffee-script/documentation/css/idle.css +64 -0
- data/packages/coffee-script/documentation/docs/browser.html +25 -0
- data/packages/coffee-script/documentation/docs/cake.html +43 -0
- data/packages/coffee-script/documentation/docs/coffee-script.html +51 -0
- data/packages/coffee-script/documentation/docs/command.html +161 -0
- data/packages/coffee-script/documentation/docs/docco.css +186 -0
- data/packages/coffee-script/documentation/docs/grammar.html +399 -0
- data/packages/coffee-script/documentation/docs/helpers.html +31 -0
- data/packages/coffee-script/documentation/docs/index.html +3 -0
- data/packages/coffee-script/documentation/docs/lexer.html +490 -0
- data/packages/coffee-script/documentation/docs/nodes.html +1338 -0
- data/packages/coffee-script/documentation/docs/optparse.html +78 -0
- data/packages/coffee-script/documentation/docs/repl.html +24 -0
- data/packages/coffee-script/documentation/docs/rewriter.html +251 -0
- data/packages/coffee-script/documentation/docs/scope.html +54 -0
- data/packages/coffee-script/documentation/docs/underscore.html +295 -0
- data/packages/coffee-script/documentation/images/background.png +0 -0
- data/packages/coffee-script/documentation/images/banding.png +0 -0
- data/packages/coffee-script/documentation/images/button_bg.png +0 -0
- data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
- data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
- data/packages/coffee-script/documentation/images/favicon.ico +0 -0
- data/packages/coffee-script/documentation/images/logo.png +0 -0
- data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
- data/packages/coffee-script/documentation/index.html.erb +1607 -0
- data/packages/coffee-script/documentation/js/aliases.js +17 -0
- data/packages/coffee-script/documentation/js/array_comprehensions.js +6 -0
- data/packages/coffee-script/documentation/js/block_comment.js +4 -0
- data/packages/coffee-script/documentation/js/cake_tasks.js +10 -0
- data/packages/coffee-script/documentation/js/classes.js +44 -0
- data/packages/coffee-script/documentation/js/comparisons.js +3 -0
- data/packages/coffee-script/documentation/js/conditionals.js +12 -0
- data/packages/coffee-script/documentation/js/default_args.js +7 -0
- data/packages/coffee-script/documentation/js/do.js +10 -0
- data/packages/coffee-script/documentation/js/embedded.js +4 -0
- data/packages/coffee-script/documentation/js/existence.js +6 -0
- data/packages/coffee-script/documentation/js/expressions.js +15 -0
- data/packages/coffee-script/documentation/js/expressions_assignment.js +2 -0
- data/packages/coffee-script/documentation/js/expressions_comprehension.js +9 -0
- data/packages/coffee-script/documentation/js/expressions_try.js +7 -0
- data/packages/coffee-script/documentation/js/fat_arrow.js +9 -0
- data/packages/coffee-script/documentation/js/functions.js +7 -0
- data/packages/coffee-script/documentation/js/heredocs.js +2 -0
- data/packages/coffee-script/documentation/js/heregexes.js +2 -0
- data/packages/coffee-script/documentation/js/interpolation.js +4 -0
- data/packages/coffee-script/documentation/js/multiple_return_values.js +5 -0
- data/packages/coffee-script/documentation/js/object_comprehensions.js +15 -0
- data/packages/coffee-script/documentation/js/object_extraction.js +10 -0
- data/packages/coffee-script/documentation/js/objects_and_arrays.js +17 -0
- data/packages/coffee-script/documentation/js/objects_reserved.js +4 -0
- data/packages/coffee-script/documentation/js/overview.js +35 -0
- data/packages/coffee-script/documentation/js/parallel_assignment.js +4 -0
- data/packages/coffee-script/documentation/js/patterns_and_splats.js +4 -0
- data/packages/coffee-script/documentation/js/prototypes.js +3 -0
- data/packages/coffee-script/documentation/js/range_comprehensions.js +9 -0
- data/packages/coffee-script/documentation/js/scope.js +8 -0
- data/packages/coffee-script/documentation/js/slices.js +4 -0
- data/packages/coffee-script/documentation/js/soaks.js +2 -0
- data/packages/coffee-script/documentation/js/splats.js +15 -0
- data/packages/coffee-script/documentation/js/splices.js +3 -0
- data/packages/coffee-script/documentation/js/strings.js +2 -0
- data/packages/coffee-script/documentation/js/switch.js +23 -0
- data/packages/coffee-script/documentation/js/try.js +8 -0
- data/packages/coffee-script/documentation/js/while.js +18 -0
- data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +6240 -0
- data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +16 -0
- data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +13 -0
- data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +34 -0
- data/packages/coffee-script/examples/blocks.coffee +54 -0
- data/packages/coffee-script/examples/code.coffee +167 -0
- data/packages/coffee-script/examples/computer_science/README +4 -0
- data/packages/coffee-script/examples/computer_science/binary_search.coffee +25 -0
- data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +11 -0
- data/packages/coffee-script/examples/computer_science/linked_list.coffee +108 -0
- data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +36 -0
- data/packages/coffee-script/examples/computer_science/merge_sort.coffee +19 -0
- data/packages/coffee-script/examples/computer_science/selection_sort.coffee +23 -0
- data/packages/coffee-script/examples/poignant.coffee +181 -0
- data/packages/coffee-script/examples/potion.coffee +206 -0
- data/packages/coffee-script/examples/underscore.coffee +682 -0
- data/packages/coffee-script/examples/web_server.coffee +12 -0
- data/packages/coffee-script/extras/EXTRAS +7 -0
- data/packages/coffee-script/extras/coffee-script.js +8 -0
- data/packages/coffee-script/extras/jsl.conf +44 -0
- data/packages/coffee-script/index.html +2515 -0
- data/packages/coffee-script/lib/browser.js +52 -0
- data/packages/coffee-script/lib/cake.js +76 -0
- data/packages/coffee-script/lib/coffee-script.js +82 -0
- data/packages/coffee-script/lib/command.js +263 -0
- data/packages/coffee-script/lib/grammar.js +581 -0
- data/packages/coffee-script/lib/helpers.js +66 -0
- data/packages/coffee-script/lib/index.js +8 -0
- data/packages/coffee-script/lib/lexer.js +633 -0
- data/packages/coffee-script/lib/nodes.js +2165 -0
- data/packages/coffee-script/lib/optparse.js +111 -0
- data/packages/coffee-script/lib/parser.js +649 -0
- data/packages/coffee-script/lib/repl.js +42 -0
- data/packages/coffee-script/lib/rewriter.js +353 -0
- data/packages/coffee-script/lib/scope.js +120 -0
- data/packages/coffee-script/lib/spade-format.js +45 -0
- data/packages/coffee-script/package.json +26 -0
- data/packages/coffee-script/src/browser.coffee +43 -0
- data/packages/coffee-script/src/cake.coffee +69 -0
- data/packages/coffee-script/src/coffee-script.coffee +92 -0
- data/packages/coffee-script/src/command.coffee +214 -0
- data/packages/coffee-script/src/grammar.coffee +590 -0
- data/packages/coffee-script/src/helpers.coffee +56 -0
- data/packages/coffee-script/src/index.coffee +2 -0
- data/packages/coffee-script/src/lexer.coffee +653 -0
- data/packages/coffee-script/src/nodes.coffee +1754 -0
- data/packages/coffee-script/src/optparse.coffee +99 -0
- data/packages/coffee-script/src/repl.coffee +42 -0
- data/packages/coffee-script/src/rewriter.coffee +326 -0
- data/packages/coffee-script/src/scope.coffee +94 -0
- data/packages/coffee-script/test/arguments.coffee +127 -0
- data/packages/coffee-script/test/assignment.coffee +98 -0
- data/packages/coffee-script/test/break.coffee +18 -0
- data/packages/coffee-script/test/comments.coffee +201 -0
- data/packages/coffee-script/test/conditionals.coffee +181 -0
- data/packages/coffee-script/test/exception_handling.coffee +90 -0
- data/packages/coffee-script/test/helpers.coffee +96 -0
- data/packages/coffee-script/test/importing.coffee +18 -0
- data/packages/coffee-script/test/operators.coffee +225 -0
- data/packages/coffee-script/test/ranges_slices_and_splices.coffee +186 -0
- data/packages/coffee-script/test/regular_expressions.coffee +56 -0
- data/packages/coffee-script/test/test.html +123 -0
- data/packages/coffee-script/test/test_chaining.coffee +77 -0
- data/packages/coffee-script/test/test_classes.coffee +372 -0
- data/packages/coffee-script/test/test_compilation.coffee +26 -0
- data/packages/coffee-script/test/test_comprehensions.coffee +318 -0
- data/packages/coffee-script/test/test_existence.coffee +165 -0
- data/packages/coffee-script/test/test_functions.coffee +379 -0
- data/packages/coffee-script/test/test_heredocs.coffee +111 -0
- data/packages/coffee-script/test/test_literals.coffee +270 -0
- data/packages/coffee-script/test/test_option_parser.coffee +27 -0
- data/packages/coffee-script/test/test_pattern_matching.coffee +162 -0
- data/packages/coffee-script/test/test_returns.coffee +63 -0
- data/packages/coffee-script/test/test_splats.coffee +102 -0
- data/packages/coffee-script/test/test_strings.coffee +118 -0
- data/packages/coffee-script/test/test_switch.coffee +103 -0
- data/packages/coffee-script/test/test_while.coffee +71 -0
- data/packages/ivory/LICENSE.txt +1 -0
- data/packages/ivory/README.md +19 -0
- data/packages/ivory/lib/buffer.js +111 -0
- data/packages/ivory/lib/events.js +137 -0
- data/packages/ivory/lib/fs.js +266 -0
- data/packages/ivory/lib/main.js +13 -0
- data/packages/ivory/lib/path.js +158 -0
- data/packages/ivory/lib/ruby/buffer.rb +145 -0
- data/packages/ivory/lib/ruby/constants.rb +585 -0
- data/packages/ivory/lib/ruby/events.rb +32 -0
- data/packages/ivory/lib/ruby/fs.rb +245 -0
- data/packages/ivory/lib/ruby/process.rb +28 -0
- data/packages/ivory/lib/stream.js +115 -0
- data/packages/ivory/lib/util.js +414 -0
- data/packages/ivory/package.json +11 -0
- data/packages/ivory/spade-boot.js +78 -0
- data/packages/jquery/main.js +7179 -0
- data/packages/jquery/package.json +10 -0
- data/packages/json/lib/main.js +14 -0
- data/packages/json/package.json +8 -0
- data/packages/lproj/README.md +77 -0
- data/packages/lproj/examples/demo-app/en.lproj/localized.strings +2 -0
- data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +3 -0
- data/packages/lproj/examples/demo-app/index.html +8 -0
- data/packages/lproj/examples/demo-app/lib/main.js +7 -0
- data/packages/lproj/examples/demo-app/package.json +9 -0
- data/packages/lproj/lib/main.js +78 -0
- data/packages/lproj/lib/strings-format.js +6 -0
- data/packages/lproj/package.json +9 -0
- data/packages/optparse/README.md +161 -0
- data/packages/optparse/TODO +1 -0
- data/packages/optparse/examples/browser-test.html +75 -0
- data/packages/optparse/examples/nodejs-test.js +90 -0
- data/packages/optparse/lib/optparse.js +309 -0
- data/packages/optparse/package.json +13 -0
- data/packages/optparse/seed.yml +5 -0
- data/packages/text/lib/main.js +8 -0
- data/packages/text/package.json +9 -0
- data/packages/web-file/README.md +7 -0
- data/packages/web-file/lib/errors.js +32 -0
- data/packages/web-file/lib/file-reader.js +10 -0
- data/packages/web-file/lib/file-system.js +234 -0
- data/packages/web-file/lib/file-writer.js +10 -0
- data/packages/web-file/lib/file.js +9 -0
- data/packages/web-file/lib/main.js +34 -0
- data/packages/web-file/lib/platform.js +25 -0
- data/packages/web-file/lib/ruby/file.rb +252 -0
- data/packages/web-file/lib/ruby/file_reader.rb +69 -0
- data/packages/web-file/lib/ruby/file_system.rb +134 -0
- data/packages/web-file/lib/ruby/file_writer.rb +78 -0
- data/packages/web-file/package.json +12 -0
- data/packages/web-typed-array/README.md +7 -0
- data/packages/web-typed-array/lib/array-buffer-view.js +9 -0
- data/packages/web-typed-array/lib/array-buffer.js +7 -0
- data/packages/web-typed-array/lib/main.js +33 -0
- data/packages/web-typed-array/lib/platform.js +20 -0
- data/packages/web-typed-array/lib/ruby/array_buffer.rb +31 -0
- data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +130 -0
- data/packages/web-typed-array/lib/ruby/typed_array.rb +133 -0
- data/packages/web-typed-array/lib/typed-array.js +26 -0
- data/packages/web-typed-array/package.json +9 -0
- data/spade-packager.gemspec +39 -0
- data/spec/cli/build_spec.rb +57 -0
- data/spec/cli/install_spec.rb +119 -0
- data/spec/cli/installed_spec.rb +55 -0
- data/spec/cli/list_spec.rb +74 -0
- data/spec/cli/login_spec.rb +75 -0
- data/spec/cli/new_spec.rb +5 -0
- data/spec/cli/owner_spec.rb +114 -0
- data/spec/cli/push_spec.rb +73 -0
- data/spec/cli/uninstall_spec.rb +58 -0
- data/spec/cli/unpack_spec.rb +72 -0
- data/spec/cli/unyank_spec.rb +73 -0
- data/spec/cli/yank_spec.rb +73 -0
- data/spec/credentials_spec.rb +23 -0
- data/spec/fixtures/badrake-0.8.7.spd +0 -0
- data/spec/fixtures/builder-3.0.0.spd +0 -0
- data/spec/fixtures/bundler-1.1.pre.spd +0 -0
- data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
- data/spec/fixtures/core-test-0.4.3.spd +0 -0
- data/spec/fixtures/core-test/bin/cot +3 -0
- data/spec/fixtures/core-test/lib/main.js +1 -0
- data/spec/fixtures/core-test/resources/runner.css +0 -0
- data/spec/fixtures/core-test/tests/test.js +1 -0
- data/spec/fixtures/highline-1.6.1.spd +0 -0
- data/spec/fixtures/ivory-0.0.1.spd +0 -0
- data/spec/fixtures/jquery-1.4.3.spd +0 -0
- data/spec/fixtures/optparse-1.0.1.spd +0 -0
- data/spec/fixtures/package.json +30 -0
- data/spec/fixtures/rake-0.8.6.spd +0 -0
- data/spec/fixtures/rake-0.8.7.spd +0 -0
- data/spec/gauntlet_spec.rb +27 -0
- data/spec/package_spec.rb +267 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/support/cli.rb +103 -0
- data/spec/support/fake.rb +48 -0
- data/spec/support/fake_gem_server.rb +67 -0
- data/spec/support/fake_gemcutter.rb +50 -0
- data/spec/support/matchers.rb +32 -0
- data/spec/support/path.rb +61 -0
- data/templates/project/LICENSE +19 -0
- data/templates/project/README.md +21 -0
- data/templates/project/lib/main.js +9 -0
- data/templates/project/project.json +31 -0
- data/templates/project/tests/main-test.js +8 -0
- metadata +484 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
module Spade::Packager
|
2
|
+
class Repository
|
3
|
+
attr_accessor :creds
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
self.creds = Credentials.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def logged_in?
|
10
|
+
!self.creds.api_key.nil?
|
11
|
+
end
|
12
|
+
|
13
|
+
def dependency_for(packages)
|
14
|
+
LibGems::Dependency.new(/(#{packages.join('|')})/, LibGems::Requirement.default)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,229 @@
|
|
1
|
+
fs = require 'fs'
|
2
|
+
path = require 'path'
|
3
|
+
{extend} = require './lib/helpers'
|
4
|
+
CoffeeScript = require './lib/coffee-script'
|
5
|
+
{spawn, exec} = require 'child_process'
|
6
|
+
|
7
|
+
# ANSI Terminal Colors.
|
8
|
+
bold = '\033[0;1m'
|
9
|
+
red = '\033[0;31m'
|
10
|
+
green = '\033[0;32m'
|
11
|
+
reset = '\033[0m'
|
12
|
+
|
13
|
+
# Built file header.
|
14
|
+
header = """
|
15
|
+
/**
|
16
|
+
* CoffeeScript Compiler v#{CoffeeScript.VERSION}
|
17
|
+
* http://coffeescript.org
|
18
|
+
*
|
19
|
+
* Copyright 2010, Jeremy Ashkenas
|
20
|
+
* Released under the MIT License
|
21
|
+
*/
|
22
|
+
"""
|
23
|
+
|
24
|
+
sources = [
|
25
|
+
'src/coffee-script.coffee', 'src/grammar.coffee'
|
26
|
+
'src/helpers.coffee', 'src/lexer.coffee', 'src/nodes.coffee'
|
27
|
+
'src/rewriter.coffee', 'src/scope.coffee'
|
28
|
+
]
|
29
|
+
|
30
|
+
# Run a CoffeeScript through our node/coffee interpreter.
|
31
|
+
run = (args) ->
|
32
|
+
proc = spawn 'bin/coffee', args
|
33
|
+
proc.stderr.on 'data', (buffer) -> console.log buffer.toString()
|
34
|
+
proc.on 'exit', (status) -> process.exit(1) if status != 0
|
35
|
+
|
36
|
+
# Log a message with a color.
|
37
|
+
log = (message, color, explanation) ->
|
38
|
+
console.log color + message + reset + ' ' + (explanation or '')
|
39
|
+
|
40
|
+
option '-p', '--prefix [DIR]', 'set the installation prefix for `cake install`'
|
41
|
+
|
42
|
+
task 'install', 'install CoffeeScript into /usr/local (or --prefix)', (options) ->
|
43
|
+
base = options.prefix or '/usr/local'
|
44
|
+
lib = "#{base}/lib/coffee-script"
|
45
|
+
bin = "#{base}/bin"
|
46
|
+
node = "~/.node_libraries/coffee-script"
|
47
|
+
console.log "Installing CoffeeScript to #{lib}"
|
48
|
+
console.log "Linking to #{node}"
|
49
|
+
console.log "Linking 'coffee' to #{bin}/coffee"
|
50
|
+
exec([
|
51
|
+
"mkdir -p #{lib} #{bin}"
|
52
|
+
"cp -rf bin lib LICENSE README package.json src #{lib}"
|
53
|
+
"ln -sfn #{lib}/bin/coffee #{bin}/coffee"
|
54
|
+
"ln -sfn #{lib}/bin/cake #{bin}/cake"
|
55
|
+
"mkdir -p ~/.node_libraries"
|
56
|
+
"ln -sfn #{lib}/lib #{node}"
|
57
|
+
].join(' && '), (err, stdout, stderr) ->
|
58
|
+
if err then console.log stderr.trim() else log 'done', green
|
59
|
+
)
|
60
|
+
|
61
|
+
|
62
|
+
task 'build', 'build the CoffeeScript language from source', ->
|
63
|
+
files = fs.readdirSync 'src'
|
64
|
+
files = ('src/' + file for file in files when file.match(/\.coffee$/))
|
65
|
+
run ['-c', '-o', 'lib'].concat(files)
|
66
|
+
|
67
|
+
|
68
|
+
task 'build:full', 'rebuild the source twice, and run the tests', ->
|
69
|
+
exec 'bin/cake build && bin/cake build && bin/cake test', (err, stdout, stderr) ->
|
70
|
+
console.log stdout.trim() if stdout
|
71
|
+
console.log stderr.trim() if stderr
|
72
|
+
throw err if err
|
73
|
+
|
74
|
+
|
75
|
+
task 'build:parser', 'rebuild the Jison parser (run build first)', ->
|
76
|
+
extend global, require('util')
|
77
|
+
require 'jison'
|
78
|
+
parser = require('./lib/grammar').parser
|
79
|
+
fs.writeFile 'lib/parser.js', parser.generate()
|
80
|
+
|
81
|
+
|
82
|
+
task 'build:ultraviolet', 'build and install the Ultraviolet syntax highlighter', ->
|
83
|
+
exec 'plist2syntax ../coffee-script-tmbundle/Syntaxes/CoffeeScript.tmLanguage', (err) ->
|
84
|
+
throw err if err
|
85
|
+
exec 'sudo mv coffeescript.yaml /usr/local/lib/ruby/gems/1.8/gems/ultraviolet-0.10.2/syntax/coffeescript.syntax'
|
86
|
+
|
87
|
+
|
88
|
+
task 'build:browser', 'rebuild the merged script for inclusion in the browser', ->
|
89
|
+
code = ''
|
90
|
+
for name in ['helpers', 'rewriter', 'lexer', 'parser', 'scope', 'nodes', 'coffee-script', 'browser']
|
91
|
+
code += """
|
92
|
+
require['./#{name}'] = new function() {
|
93
|
+
var exports = this;
|
94
|
+
#{fs.readFileSync "lib/#{name}.js"}
|
95
|
+
};
|
96
|
+
"""
|
97
|
+
{parser, uglify} = require 'uglify-js'
|
98
|
+
ast = parser.parse """
|
99
|
+
this.CoffeeScript = function() {
|
100
|
+
function require(path){ return require[path]; }
|
101
|
+
#{code}
|
102
|
+
return require['./coffee-script']
|
103
|
+
}()
|
104
|
+
"""
|
105
|
+
code = uglify.gen_code uglify.ast_squeeze uglify.ast_mangle ast, extra: yes
|
106
|
+
fs.writeFileSync 'extras/coffee-script.js', header + '\n' + code
|
107
|
+
invoke 'test:browser'
|
108
|
+
|
109
|
+
|
110
|
+
task 'doc:site', 'watch and continually rebuild the documentation for the website', ->
|
111
|
+
exec 'rake doc', (err) ->
|
112
|
+
throw err if err
|
113
|
+
|
114
|
+
|
115
|
+
task 'doc:source', 'rebuild the internal documentation', ->
|
116
|
+
exec 'docco src/*.coffee && cp -rf docs documentation && rm -r docs', (err) ->
|
117
|
+
throw err if err
|
118
|
+
|
119
|
+
|
120
|
+
task 'doc:underscore', 'rebuild the Underscore.coffee documentation page', ->
|
121
|
+
exec 'docco examples/underscore.coffee && cp -rf docs documentation && rm -r docs', (err) ->
|
122
|
+
throw err if err
|
123
|
+
|
124
|
+
task 'bench', 'quick benchmark of compilation time', ->
|
125
|
+
{Rewriter} = require './lib/rewriter'
|
126
|
+
co = sources.map((name) -> fs.readFileSync name).join '\n'
|
127
|
+
fmt = (ms) -> " #{bold}#{ " #{ms}".slice -4 }#{reset} ms"
|
128
|
+
total = 0
|
129
|
+
now = Date.now()
|
130
|
+
time = -> total += ms = -(now - now = Date.now()); fmt ms
|
131
|
+
tokens = CoffeeScript.tokens co, rewrite: false
|
132
|
+
console.log "Lex #{time()} (#{tokens.length} tokens)"
|
133
|
+
tokens = new Rewriter().rewrite tokens
|
134
|
+
console.log "Rewrite#{time()} (#{tokens.length} tokens)"
|
135
|
+
nodes = CoffeeScript.nodes tokens
|
136
|
+
console.log "Parse #{time()}"
|
137
|
+
js = nodes.compile bare: true
|
138
|
+
console.log "Compile#{time()} (#{js.length} chars)"
|
139
|
+
console.log "total #{ fmt total }"
|
140
|
+
|
141
|
+
task 'loc', 'count the lines of source code in the CoffeeScript compiler', ->
|
142
|
+
exec "cat #{ sources.join(' ') } | grep -v '^\\( *#\\|\\s*$\\)' | wc -l | tr -s ' '", (err, stdout) ->
|
143
|
+
console.log stdout.trim()
|
144
|
+
|
145
|
+
|
146
|
+
# Run the CoffeeScript test suite.
|
147
|
+
runTests = (CoffeeScript) ->
|
148
|
+
startTime = Date.now()
|
149
|
+
currentFile = null
|
150
|
+
passedTests = 0
|
151
|
+
failures = []
|
152
|
+
|
153
|
+
# Mix in the assert module globally, to make it available for tests.
|
154
|
+
addGlobal = (name, func) ->
|
155
|
+
global[name] = ->
|
156
|
+
passedTests += 1
|
157
|
+
func arguments...
|
158
|
+
|
159
|
+
addGlobal name, func for name, func of require 'assert'
|
160
|
+
|
161
|
+
# Convenience aliases.
|
162
|
+
global.eq = global.strictEqual
|
163
|
+
global.CoffeeScript = CoffeeScript
|
164
|
+
|
165
|
+
# Our test helper function for delimiting different test cases.
|
166
|
+
global.test = (description, fn) ->
|
167
|
+
try
|
168
|
+
fn()
|
169
|
+
catch e
|
170
|
+
e.description = description if description?
|
171
|
+
e.source = fn.toString() if fn.toString?
|
172
|
+
failures.push file: currentFile, error: e
|
173
|
+
|
174
|
+
# A recursive functional equivalence helper; uses egal for testing equivalence.
|
175
|
+
# See http://wiki.ecmascript.org/doku.php?id=harmony:egal
|
176
|
+
arrayEqual = (a, b) ->
|
177
|
+
if a is b
|
178
|
+
# 0 isnt -0
|
179
|
+
a isnt 0 or 1/a is 1/b
|
180
|
+
else if a instanceof Array and b instanceof Array
|
181
|
+
return no unless a.length is b.length
|
182
|
+
return no for el, idx in a when not arrayEqual el, b[idx]
|
183
|
+
yes
|
184
|
+
else
|
185
|
+
# NaN is NaN
|
186
|
+
a isnt a and b isnt b
|
187
|
+
|
188
|
+
global.arrayEq = (a, b, msg) -> ok arrayEqual(a,b), msg
|
189
|
+
|
190
|
+
# When all the tests have run, collect and print errors.
|
191
|
+
# If a stacktrace is available, output the compiled function source.
|
192
|
+
process.on 'exit', ->
|
193
|
+
time = ((Date.now() - startTime) / 1000).toFixed(2)
|
194
|
+
message = "passed #{passedTests} tests in #{time} seconds#{reset}"
|
195
|
+
return log(message, green) unless failures.length
|
196
|
+
log "failed #{failures.length} and #{message}", red
|
197
|
+
for fail in failures
|
198
|
+
{error, file} = fail
|
199
|
+
jsFile = file.replace(/\.coffee$/,'.js')
|
200
|
+
match = error.stack?.match(new RegExp(fail.file+":(\\d+):(\\d+)"))
|
201
|
+
[match, line, col] = match if match
|
202
|
+
log "\n #{error.toString()}", red
|
203
|
+
log " #{error.description}", red if error.description
|
204
|
+
log " #{jsFile}: line #{line or 'unknown'}, column #{col or 'unknown'}", red
|
205
|
+
console.log " #{error.source}" if error.source
|
206
|
+
|
207
|
+
# Run every test in the `test` folder, recording failures.
|
208
|
+
fs.readdir 'test', (err, files) ->
|
209
|
+
files.forEach (file) ->
|
210
|
+
return unless file.match(/\.coffee$/i)
|
211
|
+
fileName = path.join 'test', file
|
212
|
+
fs.readFile fileName, (err, code) ->
|
213
|
+
currentFile = fileName
|
214
|
+
try
|
215
|
+
CoffeeScript.run code.toString(), {fileName}
|
216
|
+
catch e
|
217
|
+
failures.push file: currentFile, error: e
|
218
|
+
|
219
|
+
|
220
|
+
task 'test', 'run the CoffeeScript language test suite', ->
|
221
|
+
runTests CoffeeScript
|
222
|
+
|
223
|
+
|
224
|
+
task 'test:browser', 'run the test suite against the merged browser script', ->
|
225
|
+
source = fs.readFileSync 'extras/coffee-script.js', 'utf-8'
|
226
|
+
result = {}
|
227
|
+
global.testingBrowser = yes
|
228
|
+
(-> eval source).call result
|
229
|
+
runTests result.CoffeeScript
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2010 Jeremy Ashkenas
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,47 @@
|
|
1
|
+
=
|
2
|
+
{
|
3
|
+
} } {
|
4
|
+
{ { } }
|
5
|
+
} }{ {
|
6
|
+
{ }{ } } _____ __ __
|
7
|
+
( }{ }{ { ) / ____| / _|/ _|
|
8
|
+
.- { { } { }} -. | | ___ | |_| |_ ___ ___
|
9
|
+
( ( } { } { } } ) | | / _ \| _| _/ _ \/ _ \
|
10
|
+
|`-..________ ..-'| | |___| (_) | | | || __/ __/
|
11
|
+
| | \_____\___/|_| |_| \___|\___|
|
12
|
+
| ;--.
|
13
|
+
| (__ \ _____ _ _
|
14
|
+
| | ) ) / ____| (_) | |
|
15
|
+
| |/ / | (___ ___ _ __ _ _ __ | |_
|
16
|
+
| ( / \___ \ / __| '__| | '_ \| __|
|
17
|
+
| |/ ____) | (__| | | | |_) | |_
|
18
|
+
| | |_____/ \___|_| |_| .__/ \__|
|
19
|
+
`-.._________..-' | |
|
20
|
+
|_|
|
21
|
+
|
22
|
+
|
23
|
+
CoffeeScript is a little language that compiles into JavaScript.
|
24
|
+
|
25
|
+
Install Node.js, and then the CoffeeScript compiler:
|
26
|
+
sudo bin/cake install
|
27
|
+
|
28
|
+
Or, if you have the Node Package Manager installed:
|
29
|
+
npm install coffee-script
|
30
|
+
|
31
|
+
Compile a script:
|
32
|
+
coffee /path/to/script.coffee
|
33
|
+
|
34
|
+
For documentation, usage, and examples, see:
|
35
|
+
http://coffeescript.org/
|
36
|
+
|
37
|
+
To suggest a feature, report a bug, or general discussion:
|
38
|
+
http://github.com/jashkenas/coffee-script/issues/
|
39
|
+
|
40
|
+
If you'd like to chat, drop by #coffeescript on Freenode IRC,
|
41
|
+
or on webchat.freenode.net.
|
42
|
+
|
43
|
+
The source repository:
|
44
|
+
git://github.com/jashkenas/coffee-script.git
|
45
|
+
|
46
|
+
All contributors are listed here:
|
47
|
+
http://github.com/jashkenas/coffee-script/contributors
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'erb'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
desc "Build the documentation page"
|
8
|
+
task :doc do
|
9
|
+
source = 'documentation/index.html.erb'
|
10
|
+
child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" }
|
11
|
+
at_exit { Process.kill("INT", child) }
|
12
|
+
Signal.trap("INT") { exit }
|
13
|
+
loop do
|
14
|
+
mtime = File.stat(source).mtime
|
15
|
+
if !@mtime || mtime > @mtime
|
16
|
+
rendered = ERB.new(File.read(source)).result(binding)
|
17
|
+
File.open('index.html', 'w+') {|f| f.write(rendered) }
|
18
|
+
end
|
19
|
+
@mtime = mtime
|
20
|
+
sleep 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Build coffee-script-source gem"
|
25
|
+
task :gem do
|
26
|
+
require 'rubygems'
|
27
|
+
require 'rubygems/package'
|
28
|
+
|
29
|
+
gemspec = Gem::Specification.new do |s|
|
30
|
+
s.name = 'coffee-script-source'
|
31
|
+
s.version = JSON.parse(File.read('package.json'))["version"]
|
32
|
+
s.date = Time.now.strftime("%Y-%m-%d")
|
33
|
+
|
34
|
+
s.homepage = "http://jashkenas.github.com/coffee-script/"
|
35
|
+
s.summary = "The CoffeeScript Compiler"
|
36
|
+
s.description = <<-EOS
|
37
|
+
CoffeeScript is a little language that compiles into JavaScript.
|
38
|
+
Underneath all of those embarrassing braces and semicolons,
|
39
|
+
JavaScript has always had a gorgeous object model at its heart.
|
40
|
+
CoffeeScript is an attempt to expose the good parts of JavaScript
|
41
|
+
in a simple way.
|
42
|
+
EOS
|
43
|
+
|
44
|
+
s.files = [
|
45
|
+
'lib/coffee_script/coffee-script.js',
|
46
|
+
'lib/coffee_script/source.rb'
|
47
|
+
]
|
48
|
+
|
49
|
+
s.authors = ['Jeremy Ashkenas']
|
50
|
+
s.email = 'jashkenas@gmail.com'
|
51
|
+
s.rubyforge_project = 'coffee-script-source'
|
52
|
+
end
|
53
|
+
|
54
|
+
file = File.open("coffee-script-source.gem", "w")
|
55
|
+
Gem::Package.open(file, 'w') do |pkg|
|
56
|
+
pkg.metadata = gemspec.to_yaml
|
57
|
+
|
58
|
+
path = "lib/coffee_script/source.rb"
|
59
|
+
contents = <<-ERUBY
|
60
|
+
module CoffeeScript
|
61
|
+
module Source
|
62
|
+
def self.bundled_path
|
63
|
+
File.expand_path("../coffee-script.js", __FILE__)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
ERUBY
|
68
|
+
pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
|
69
|
+
tar_io.write(contents)
|
70
|
+
end
|
71
|
+
|
72
|
+
contents = File.read("extras/coffee-script.js")
|
73
|
+
path = "lib/coffee_script/coffee-script.js"
|
74
|
+
pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
|
75
|
+
tar_io.write(contents)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|