spade 0.0.8.1 → 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 +0 -1
- data/.gitmodules +4 -4
- data/README.md +4 -0
- data/bin/spade +1 -1
- data/lib/spade.rb +0 -51
- data/lib/spade/cli.rb +10 -4
- data/lib/spade/version.rb +1 -1
- data/spade.gemspec +4 -21
- metadata +13 -482
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -40
- data/lib/index.js +0 -14
- data/lib/node/loader.js +0 -146
- data/lib/node/sandbox.js +0 -44
- data/lib/spade.js +0 -1130
- data/lib/spade/bundle.rb +0 -171
- data/lib/spade/cli/base.rb +0 -354
- data/lib/spade/cli/owner.rb +0 -45
- data/lib/spade/cli/project_generator.rb +0 -58
- data/lib/spade/compiler.rb +0 -34
- data/lib/spade/console.rb +0 -39
- data/lib/spade/context.rb +0 -116
- data/lib/spade/credentials.rb +0 -36
- data/lib/spade/dependency_installer.rb +0 -103
- data/lib/spade/environment.rb +0 -35
- data/lib/spade/exports.rb +0 -71
- data/lib/spade/installer.rb +0 -40
- data/lib/spade/loader.rb +0 -238
- data/lib/spade/local.rb +0 -46
- data/lib/spade/package.rb +0 -157
- data/lib/spade/reactor.rb +0 -159
- data/lib/spade/remote.rb +0 -99
- data/lib/spade/repository.rb +0 -18
- data/lib/spade/server.rb +0 -66
- data/lib/spade/shell.rb +0 -36
- data/lib/spade/templates/project/LICENSE +0 -19
- data/lib/spade/templates/project/README.md +0 -21
- data/lib/spade/templates/project/lib/main.js +0 -9
- data/lib/spade/templates/project/project.json +0 -31
- data/lib/spade/templates/project/tests/main-test.js +0 -8
- data/package.json +0 -27
- data/packages/coffee-script/.gitignore +0 -8
- data/packages/coffee-script/.npmignore +0 -11
- data/packages/coffee-script/Cakefile +0 -229
- data/packages/coffee-script/LICENSE +0 -22
- data/packages/coffee-script/README +0 -47
- data/packages/coffee-script/Rakefile +0 -78
- data/packages/coffee-script/bin/cake +0 -7
- data/packages/coffee-script/bin/coffee +0 -7
- data/packages/coffee-script/documentation/coffee/aliases.coffee +0 -11
- data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/block_comment.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +0 -9
- data/packages/coffee-script/documentation/coffee/classes.coffee +0 -25
- data/packages/coffee-script/documentation/coffee/comparisons.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/conditionals.coffee +0 -13
- data/packages/coffee-script/documentation/coffee/default_args.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/do.coffee +0 -4
- data/packages/coffee-script/documentation/coffee/embedded.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/existence.coffee +0 -10
- data/packages/coffee-script/documentation/coffee/expressions.coffee +0 -9
- data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/expressions_try.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/functions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/heredocs.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/heregexes.coffee +0 -11
- data/packages/coffee-script/documentation/coffee/interpolation.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +0 -4
- data/packages/coffee-script/documentation/coffee/object_extraction.coffee +0 -13
- data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +0 -19
- data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/overview.coffee +0 -28
- data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/prototypes.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/scope.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/slices.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/soaks.coffee +0 -1
- data/packages/coffee-script/documentation/coffee/splats.coffee +0 -27
- data/packages/coffee-script/documentation/coffee/splices.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/strings.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/switch.coffee +0 -10
- data/packages/coffee-script/documentation/coffee/try.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/while.coffee +0 -10
- data/packages/coffee-script/documentation/css/docs.css +0 -374
- data/packages/coffee-script/documentation/css/idle.css +0 -64
- data/packages/coffee-script/documentation/docs/browser.html +0 -25
- data/packages/coffee-script/documentation/docs/cake.html +0 -43
- data/packages/coffee-script/documentation/docs/coffee-script.html +0 -51
- data/packages/coffee-script/documentation/docs/command.html +0 -161
- data/packages/coffee-script/documentation/docs/docco.css +0 -186
- data/packages/coffee-script/documentation/docs/grammar.html +0 -399
- data/packages/coffee-script/documentation/docs/helpers.html +0 -31
- data/packages/coffee-script/documentation/docs/index.html +0 -3
- data/packages/coffee-script/documentation/docs/lexer.html +0 -490
- data/packages/coffee-script/documentation/docs/nodes.html +0 -1338
- data/packages/coffee-script/documentation/docs/optparse.html +0 -78
- data/packages/coffee-script/documentation/docs/repl.html +0 -24
- data/packages/coffee-script/documentation/docs/rewriter.html +0 -251
- data/packages/coffee-script/documentation/docs/scope.html +0 -54
- data/packages/coffee-script/documentation/docs/underscore.html +0 -295
- 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 +0 -1607
- data/packages/coffee-script/documentation/js/aliases.js +0 -17
- data/packages/coffee-script/documentation/js/array_comprehensions.js +0 -6
- data/packages/coffee-script/documentation/js/block_comment.js +0 -4
- data/packages/coffee-script/documentation/js/cake_tasks.js +0 -10
- data/packages/coffee-script/documentation/js/classes.js +0 -44
- data/packages/coffee-script/documentation/js/comparisons.js +0 -3
- data/packages/coffee-script/documentation/js/conditionals.js +0 -12
- data/packages/coffee-script/documentation/js/default_args.js +0 -7
- data/packages/coffee-script/documentation/js/do.js +0 -10
- data/packages/coffee-script/documentation/js/embedded.js +0 -4
- data/packages/coffee-script/documentation/js/existence.js +0 -6
- data/packages/coffee-script/documentation/js/expressions.js +0 -15
- data/packages/coffee-script/documentation/js/expressions_assignment.js +0 -2
- data/packages/coffee-script/documentation/js/expressions_comprehension.js +0 -9
- data/packages/coffee-script/documentation/js/expressions_try.js +0 -7
- data/packages/coffee-script/documentation/js/fat_arrow.js +0 -9
- data/packages/coffee-script/documentation/js/functions.js +0 -7
- data/packages/coffee-script/documentation/js/heredocs.js +0 -2
- data/packages/coffee-script/documentation/js/heregexes.js +0 -2
- data/packages/coffee-script/documentation/js/interpolation.js +0 -4
- data/packages/coffee-script/documentation/js/multiple_return_values.js +0 -5
- data/packages/coffee-script/documentation/js/object_comprehensions.js +0 -15
- data/packages/coffee-script/documentation/js/object_extraction.js +0 -10
- data/packages/coffee-script/documentation/js/objects_and_arrays.js +0 -17
- data/packages/coffee-script/documentation/js/objects_reserved.js +0 -4
- data/packages/coffee-script/documentation/js/overview.js +0 -35
- data/packages/coffee-script/documentation/js/parallel_assignment.js +0 -4
- data/packages/coffee-script/documentation/js/patterns_and_splats.js +0 -4
- data/packages/coffee-script/documentation/js/prototypes.js +0 -3
- data/packages/coffee-script/documentation/js/range_comprehensions.js +0 -9
- data/packages/coffee-script/documentation/js/scope.js +0 -8
- data/packages/coffee-script/documentation/js/slices.js +0 -4
- data/packages/coffee-script/documentation/js/soaks.js +0 -2
- data/packages/coffee-script/documentation/js/splats.js +0 -15
- data/packages/coffee-script/documentation/js/splices.js +0 -3
- data/packages/coffee-script/documentation/js/strings.js +0 -2
- data/packages/coffee-script/documentation/js/switch.js +0 -23
- data/packages/coffee-script/documentation/js/try.js +0 -8
- data/packages/coffee-script/documentation/js/while.js +0 -18
- data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +0 -6240
- data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +0 -16
- data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +0 -13
- data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +0 -34
- data/packages/coffee-script/examples/blocks.coffee +0 -54
- data/packages/coffee-script/examples/code.coffee +0 -167
- data/packages/coffee-script/examples/computer_science/README +0 -4
- data/packages/coffee-script/examples/computer_science/binary_search.coffee +0 -25
- data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +0 -11
- data/packages/coffee-script/examples/computer_science/linked_list.coffee +0 -108
- data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +0 -36
- data/packages/coffee-script/examples/computer_science/merge_sort.coffee +0 -19
- data/packages/coffee-script/examples/computer_science/selection_sort.coffee +0 -23
- data/packages/coffee-script/examples/poignant.coffee +0 -181
- data/packages/coffee-script/examples/potion.coffee +0 -206
- data/packages/coffee-script/examples/underscore.coffee +0 -682
- data/packages/coffee-script/examples/web_server.coffee +0 -12
- data/packages/coffee-script/extras/EXTRAS +0 -7
- data/packages/coffee-script/extras/coffee-script.js +0 -8
- data/packages/coffee-script/extras/jsl.conf +0 -44
- data/packages/coffee-script/index.html +0 -2515
- data/packages/coffee-script/lib/browser.js +0 -52
- data/packages/coffee-script/lib/cake.js +0 -76
- data/packages/coffee-script/lib/coffee-script.js +0 -82
- data/packages/coffee-script/lib/command.js +0 -263
- data/packages/coffee-script/lib/grammar.js +0 -581
- data/packages/coffee-script/lib/helpers.js +0 -66
- data/packages/coffee-script/lib/index.js +0 -8
- data/packages/coffee-script/lib/lexer.js +0 -633
- data/packages/coffee-script/lib/nodes.js +0 -2165
- data/packages/coffee-script/lib/optparse.js +0 -111
- data/packages/coffee-script/lib/parser.js +0 -649
- data/packages/coffee-script/lib/repl.js +0 -42
- data/packages/coffee-script/lib/rewriter.js +0 -353
- data/packages/coffee-script/lib/scope.js +0 -120
- data/packages/coffee-script/lib/spade-format.js +0 -45
- data/packages/coffee-script/package.json +0 -26
- data/packages/coffee-script/src/browser.coffee +0 -43
- data/packages/coffee-script/src/cake.coffee +0 -69
- data/packages/coffee-script/src/coffee-script.coffee +0 -92
- data/packages/coffee-script/src/command.coffee +0 -214
- data/packages/coffee-script/src/grammar.coffee +0 -590
- data/packages/coffee-script/src/helpers.coffee +0 -56
- data/packages/coffee-script/src/index.coffee +0 -2
- data/packages/coffee-script/src/lexer.coffee +0 -653
- data/packages/coffee-script/src/nodes.coffee +0 -1754
- data/packages/coffee-script/src/optparse.coffee +0 -99
- data/packages/coffee-script/src/repl.coffee +0 -42
- data/packages/coffee-script/src/rewriter.coffee +0 -326
- data/packages/coffee-script/src/scope.coffee +0 -94
- data/packages/coffee-script/test/arguments.coffee +0 -127
- data/packages/coffee-script/test/assignment.coffee +0 -98
- data/packages/coffee-script/test/break.coffee +0 -18
- data/packages/coffee-script/test/comments.coffee +0 -201
- data/packages/coffee-script/test/conditionals.coffee +0 -181
- data/packages/coffee-script/test/exception_handling.coffee +0 -90
- data/packages/coffee-script/test/helpers.coffee +0 -96
- data/packages/coffee-script/test/importing.coffee +0 -18
- data/packages/coffee-script/test/operators.coffee +0 -225
- data/packages/coffee-script/test/ranges_slices_and_splices.coffee +0 -186
- data/packages/coffee-script/test/regular_expressions.coffee +0 -56
- data/packages/coffee-script/test/test.html +0 -123
- data/packages/coffee-script/test/test_chaining.coffee +0 -77
- data/packages/coffee-script/test/test_classes.coffee +0 -372
- data/packages/coffee-script/test/test_compilation.coffee +0 -26
- data/packages/coffee-script/test/test_comprehensions.coffee +0 -318
- data/packages/coffee-script/test/test_existence.coffee +0 -165
- data/packages/coffee-script/test/test_functions.coffee +0 -379
- data/packages/coffee-script/test/test_heredocs.coffee +0 -111
- data/packages/coffee-script/test/test_literals.coffee +0 -270
- data/packages/coffee-script/test/test_option_parser.coffee +0 -27
- data/packages/coffee-script/test/test_pattern_matching.coffee +0 -162
- data/packages/coffee-script/test/test_returns.coffee +0 -63
- data/packages/coffee-script/test/test_splats.coffee +0 -102
- data/packages/coffee-script/test/test_strings.coffee +0 -118
- data/packages/coffee-script/test/test_switch.coffee +0 -103
- data/packages/coffee-script/test/test_while.coffee +0 -71
- data/packages/ivory/LICENSE.txt +0 -1
- data/packages/ivory/README.md +0 -19
- data/packages/ivory/lib/buffer.js +0 -111
- data/packages/ivory/lib/events.js +0 -137
- data/packages/ivory/lib/fs.js +0 -266
- data/packages/ivory/lib/main.js +0 -13
- data/packages/ivory/lib/path.js +0 -158
- data/packages/ivory/lib/ruby/buffer.rb +0 -145
- data/packages/ivory/lib/ruby/constants.rb +0 -585
- data/packages/ivory/lib/ruby/events.rb +0 -32
- data/packages/ivory/lib/ruby/fs.rb +0 -245
- data/packages/ivory/lib/ruby/process.rb +0 -28
- data/packages/ivory/lib/stream.js +0 -115
- data/packages/ivory/lib/util.js +0 -414
- data/packages/ivory/package.json +0 -11
- data/packages/jquery/main.js +0 -7179
- data/packages/jquery/package.json +0 -10
- data/packages/json/lib/main.js +0 -14
- data/packages/json/package.json +0 -8
- data/packages/lproj/README.md +0 -77
- data/packages/lproj/examples/demo-app/en.lproj/localized.strings +0 -2
- data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +0 -3
- data/packages/lproj/examples/demo-app/index.html +0 -8
- data/packages/lproj/examples/demo-app/lib/main.js +0 -7
- data/packages/lproj/examples/demo-app/package.json +0 -9
- data/packages/lproj/lib/main.js +0 -78
- data/packages/lproj/lib/strings-format.js +0 -6
- data/packages/lproj/package.json +0 -9
- data/packages/optparse/README.md +0 -161
- data/packages/optparse/TODO +0 -1
- data/packages/optparse/examples/browser-test.html +0 -75
- data/packages/optparse/examples/nodejs-test.js +0 -90
- data/packages/optparse/lib/optparse.js +0 -309
- data/packages/optparse/package.json +0 -13
- data/packages/optparse/seed.yml +0 -5
- data/packages/text/lib/main.js +0 -8
- data/packages/text/package.json +0 -9
- data/packages/web-file/README.md +0 -7
- data/packages/web-file/lib/errors.js +0 -32
- data/packages/web-file/lib/file-reader.js +0 -10
- data/packages/web-file/lib/file-system.js +0 -234
- data/packages/web-file/lib/file-writer.js +0 -10
- data/packages/web-file/lib/file.js +0 -9
- data/packages/web-file/lib/main.js +0 -34
- data/packages/web-file/lib/platform.js +0 -25
- data/packages/web-file/lib/ruby/file.rb +0 -252
- data/packages/web-file/lib/ruby/file_reader.rb +0 -69
- data/packages/web-file/lib/ruby/file_system.rb +0 -134
- data/packages/web-file/lib/ruby/file_writer.rb +0 -78
- data/packages/web-file/package.json +0 -12
- data/packages/web-typed-array/README.md +0 -7
- data/packages/web-typed-array/lib/array-buffer-view.js +0 -9
- data/packages/web-typed-array/lib/array-buffer.js +0 -7
- data/packages/web-typed-array/lib/main.js +0 -33
- data/packages/web-typed-array/lib/platform.js +0 -20
- data/packages/web-typed-array/lib/ruby/array_buffer.rb +0 -31
- data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +0 -130
- data/packages/web-typed-array/lib/ruby/typed_array.rb +0 -133
- data/packages/web-typed-array/lib/typed-array.js +0 -26
- data/packages/web-typed-array/package.json +0 -9
- data/spec/cli/build_spec.rb +0 -59
- data/spec/cli/install_spec.rb +0 -120
- data/spec/cli/installed_spec.rb +0 -55
- data/spec/cli/list_spec.rb +0 -75
- data/spec/cli/login_spec.rb +0 -76
- data/spec/cli/new_spec.rb +0 -5
- data/spec/cli/owner_spec.rb +0 -115
- data/spec/cli/push_spec.rb +0 -74
- data/spec/cli/uninstall_spec.rb +0 -58
- data/spec/cli/unpack_spec.rb +0 -73
- data/spec/cli/unyank_spec.rb +0 -74
- data/spec/cli/update_spec.rb +0 -8
- data/spec/cli/yank_spec.rb +0 -74
- data/spec/credentials_spec.rb +0 -24
- 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 +0 -3
- data/spec/fixtures/core-test/lib/main.js +0 -1
- data/spec/fixtures/core-test/resources/runner.css +0 -0
- data/spec/fixtures/core-test/tests/test.js +0 -1
- 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 +0 -30
- data/spec/gauntlet_spec.rb +0 -27
- data/spec/javascript/async-test.js +0 -123
- data/spec/javascript/compiler/javascript.js +0 -13
- data/spec/javascript/compiler/ruby.js +0 -14
- data/spec/javascript/loader-test.js +0 -64
- data/spec/javascript/normalize-test.js +0 -73
- data/spec/javascript/packages-test.js +0 -44
- data/spec/javascript/relative-require-test.js +0 -72
- data/spec/javascript/require-test.js +0 -117
- data/spec/javascript/sandbox/compile.js +0 -37
- data/spec/javascript/sandbox/creation.js +0 -44
- data/spec/javascript/sandbox/format.js +0 -79
- data/spec/javascript/sandbox/misc.js +0 -57
- data/spec/javascript/sandbox/preprocessor.js +0 -81
- data/spec/javascript/sandbox/require.js +0 -48
- data/spec/javascript/sandbox/run-command.js +0 -21
- data/spec/javascript/spade/externs.js +0 -14
- data/spec/javascript/spade/load-factory.js +0 -15
- data/spec/javascript/spade/misc.js +0 -23
- data/spec/javascript/spade/ready.js +0 -12
- data/spec/javascript/spade/register.js +0 -13
- data/spec/javascript_spec.rb +0 -7
- data/spec/package_spec.rb +0 -267
- data/spec/spec_helper.rb +0 -30
- data/spec/support/cli.rb +0 -94
- data/spec/support/core_test.rb +0 -59
- data/spec/support/fake.rb +0 -44
- data/spec/support/fake_gem_server.rb +0 -66
- data/spec/support/fake_gemcutter.rb +0 -49
- data/spec/support/matchers.rb +0 -31
- data/spec/support/path.rb +0 -54
- data/test-spade.html +0 -8
data/lib/spade/bundle.rb
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
# ==========================================================================
|
2
|
-
# Project: Spade - CommonJS Runtime
|
3
|
-
# Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
# License: Licened under MIT license (see LICENSE)
|
5
|
-
# ==========================================================================
|
6
|
-
|
7
|
-
module Spade
|
8
|
-
BOOT_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'));
|
9
|
-
|
10
|
-
module Bundle
|
11
|
-
class << self
|
12
|
-
|
13
|
-
def update(rootdir, opts ={})
|
14
|
-
|
15
|
-
verbose = opts[:verbose]
|
16
|
-
spade_path = File.join(rootdir, SPADE_DIR)
|
17
|
-
FileUtils.rm_r(spade_path) if File.exists? spade_path
|
18
|
-
|
19
|
-
FileUtils.mkdir_p spade_path
|
20
|
-
FileUtils.mkdir_p File.join(spade_path, 'packages')
|
21
|
-
|
22
|
-
FileUtils.ln_s BOOT_PATH, File.join(spade_path, 'boot')
|
23
|
-
|
24
|
-
installed = []
|
25
|
-
|
26
|
-
# Do this to get the Gem.dir right
|
27
|
-
env = Spade::Environment.new
|
28
|
-
|
29
|
-
# In reverse order of precedence
|
30
|
-
package_dirs = [File.join(env.spade_dir, 'gems')]
|
31
|
-
package_dirs += %w[vendor/cache vendor/packages packages].map{|p| File.join(rootdir, p.split('/')) }
|
32
|
-
|
33
|
-
for package_dir in package_dirs
|
34
|
-
Dir.glob(File.join(package_dir, '*')).each do |path|
|
35
|
-
json_file = File.join(path, 'package.json')
|
36
|
-
next unless File.exists?(json_file)
|
37
|
-
|
38
|
-
# How would this happen?
|
39
|
-
next if installed.include? path
|
40
|
-
installed << path
|
41
|
-
|
42
|
-
json = JSON.load File.read(json_file)
|
43
|
-
package_name = json['name']
|
44
|
-
package_version = json['version']
|
45
|
-
|
46
|
-
local = path.index(rootdir) == 0
|
47
|
-
|
48
|
-
# Use relative paths if embedded
|
49
|
-
old_path = if local
|
50
|
-
# Figure out how many levels deep the spade_path is in the project
|
51
|
-
levels = spade_path.sub(rootdir, '').split(File::SEPARATOR).reject{|p| p.empty? }.count + 1
|
52
|
-
# Build relative path
|
53
|
-
File.join(['..'] * levels, path.sub(rootdir, ''))
|
54
|
-
else
|
55
|
-
path
|
56
|
-
end
|
57
|
-
|
58
|
-
new_path = File.join(spade_path, 'packages', package_name)
|
59
|
-
|
60
|
-
FileUtils.ln_s old_path, new_path, :force => true
|
61
|
-
|
62
|
-
puts "Installing #{local ? "local" : "remote"} package #{package_name}" if verbose
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
File.open(File.join(rootdir, 'spade-boot.js'), 'w+') do |fp|
|
67
|
-
fp.write gen_spade_boot(rootdir, opts)
|
68
|
-
end
|
69
|
-
puts "Wrote spade-boot.js" if verbose
|
70
|
-
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
def gen_spade_boot(rootdir, opts={})
|
75
|
-
verbose = opts[:verbose]
|
76
|
-
spade_path = File.join(rootdir, SPADE_DIR, 'packages', '*')
|
77
|
-
known_packages = Dir.glob(spade_path).map do |path|
|
78
|
-
package_name = File.basename path
|
79
|
-
info = JSON.load File.read(File.join(path, 'package.json'))
|
80
|
-
info["sync"] = true
|
81
|
-
info["root"] = "#{SPADE_DIR}/packages/#{package_name}"
|
82
|
-
info["files"] = package_file_list(path)
|
83
|
-
info
|
84
|
-
end
|
85
|
-
|
86
|
-
if File.exists? File.join(rootdir, 'package.json')
|
87
|
-
info = JSON.load File.read(File.join(rootdir, 'package.json'))
|
88
|
-
else
|
89
|
-
info = {
|
90
|
-
"name" => File.basename(rootdir),
|
91
|
-
"directories" => { "lib" => "lib" }
|
92
|
-
}
|
93
|
-
end
|
94
|
-
|
95
|
-
info["root"] = '.'
|
96
|
-
info["sync"] = true
|
97
|
-
info["files"] = package_file_list('.')
|
98
|
-
|
99
|
-
packages = resolve_dependencies(info, known_packages)
|
100
|
-
|
101
|
-
%[// GENERATED: #{Time.now.to_s}
|
102
|
-
// This file is automatically generated by spade. To update run
|
103
|
-
// 'spade update'. To use this file, reference it in your HTML file. Base
|
104
|
-
// sure that your base URL is to the top level directory containing all of
|
105
|
-
// your files.
|
106
|
-
|
107
|
-
/*globals spade */
|
108
|
-
//@ begin boot
|
109
|
-
(function() {
|
110
|
-
// load spade itself
|
111
|
-
var script = document.createElement('script');
|
112
|
-
script.src = "#{SPADE_DIR}/boot/spade.js";
|
113
|
-
script.onload = function() {
|
114
|
-
|
115
|
-
// Register remaining packages with spade
|
116
|
-
#{packages.map{|p| %[spade.register("#{p["name"]}", #{JSON.pretty_generate(p)});\n] } * "\n"}
|
117
|
-
|
118
|
-
// find the main module to run
|
119
|
-
var main = null;
|
120
|
-
var scripts = document.scripts || document.getElementsByTagName("script"),
|
121
|
-
len = scripts.length;
|
122
|
-
for(var idx=0;!main && idx<len;idx++) {
|
123
|
-
main = scripts[idx].getAttribute('data-require');
|
124
|
-
}
|
125
|
-
scripts = null; // avoid memory leaks in IE
|
126
|
-
|
127
|
-
if (main) spade.ready(function() { spade.require(main); });
|
128
|
-
};
|
129
|
-
|
130
|
-
var head = document.head || document.body || document;
|
131
|
-
head.appendChild(script);
|
132
|
-
|
133
|
-
script = head = null; // avoid memory leaks in IE
|
134
|
-
})();
|
135
|
-
//@ end boot
|
136
|
-
]
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
private
|
141
|
-
|
142
|
-
def package_file_list(path)
|
143
|
-
get_all_files(path).map{|p| p.sub(path+File::SEPARATOR, '') } - %w(package.json spade-boot.js)
|
144
|
-
end
|
145
|
-
|
146
|
-
# Supports recursive, be careful
|
147
|
-
def get_all_files(path)
|
148
|
-
Dir.glob(File.join(path, '**', '*')).
|
149
|
-
map{|p| File.symlink?(p) ? get_all_files(p) : p }.
|
150
|
-
flatten.
|
151
|
-
reject{|p| File.extname(p).empty? }
|
152
|
-
end
|
153
|
-
|
154
|
-
def resolve_dependencies(package, available)
|
155
|
-
# TODO: Should available be a hash to speed lookup?
|
156
|
-
if package["dependencies"]
|
157
|
-
# TODO: Check version numbers
|
158
|
-
dependencies = package["dependencies"].keys
|
159
|
-
packages = available.select{|p| dependencies.include?(p["name"]) }.
|
160
|
-
map{|p| resolve_dependencies(p, available) }.
|
161
|
-
flatten
|
162
|
-
(packages << package).uniq
|
163
|
-
else
|
164
|
-
[package]
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
end
|
169
|
-
|
170
|
-
end
|
171
|
-
end
|
data/lib/spade/cli/base.rb
DELETED
@@ -1,354 +0,0 @@
|
|
1
|
-
module Spade::CLI
|
2
|
-
class Base < Thor
|
3
|
-
include Thor::Actions
|
4
|
-
|
5
|
-
source_root File.expand_path('../../templates', __FILE__)
|
6
|
-
|
7
|
-
desc "owner", "Manage users for a package"
|
8
|
-
subcommand "owner", Owner
|
9
|
-
|
10
|
-
class_option :working, :required => false,
|
11
|
-
:default => Spade.discover_root(Dir.pwd),
|
12
|
-
:aliases => ['-w'],
|
13
|
-
:desc => 'Root working directory.'
|
14
|
-
|
15
|
-
class_option :verbose, :type => :boolean, :default => false,
|
16
|
-
:aliases => ['-V'],
|
17
|
-
:desc => 'Show additional debug information while running'
|
18
|
-
|
19
|
-
class_option :require, :type => :array, :required => false,
|
20
|
-
:aliases => ['-r'],
|
21
|
-
:desc => "optional JS files to require before invoking main command"
|
22
|
-
|
23
|
-
map "-i" => "console", "--interactive" => "console"
|
24
|
-
desc "console", "Opens an interactive JavaScript console"
|
25
|
-
def console
|
26
|
-
require 'readline'
|
27
|
-
|
28
|
-
shell = Spade::Shell.new
|
29
|
-
context(:with => shell) do |ctx|
|
30
|
-
shell.ctx = ctx
|
31
|
-
puts "help() for help. quit() to quit."
|
32
|
-
puts "Spade #{Spade::VERSION} (V8 #{V8::VERSION})"
|
33
|
-
puts "WORKING=#{options[:working]}" if options[:verbose]
|
34
|
-
|
35
|
-
trap("SIGINT") { puts "^C" }
|
36
|
-
repl ctx
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
map "-e" => "exec"
|
41
|
-
desc "exec [FILENAME]", "Executes filename or stdin"
|
42
|
-
def exec(*)
|
43
|
-
exec_args = ARGV.dup
|
44
|
-
arg = exec_args.shift while arg != "exec" && !exec_args.empty?
|
45
|
-
|
46
|
-
filename = exec_args.shift
|
47
|
-
puts "Filename: #{filename}" if options[:verbose]
|
48
|
-
|
49
|
-
if filename
|
50
|
-
puts "Working: #{options[:working]}" if options[:verbose]
|
51
|
-
filename = File.expand_path filename, Dir.pwd
|
52
|
-
throw "#{filename} not found" unless File.exists?(filename)
|
53
|
-
fp = File.open filename
|
54
|
-
source = File.basename filename
|
55
|
-
rootdir = Spade.discover_root filename
|
56
|
-
|
57
|
-
caller_id = nil
|
58
|
-
if rootdir
|
59
|
-
json_path = File.join(rootdir, 'package.json')
|
60
|
-
if File.exist?(json_path)
|
61
|
-
package_json = JSON.parse(File.read(json_path))
|
62
|
-
caller_id = "#{package_json['name']}/main"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# peek at first line. If it is poundhash, skip. else rewind file
|
67
|
-
unless fp.readline =~ /^\#\!/
|
68
|
-
fp.rewind
|
69
|
-
end
|
70
|
-
|
71
|
-
# Can't set pos on STDIN so we can only do this for files
|
72
|
-
if options[:verbose]
|
73
|
-
pos = fp.pos
|
74
|
-
puts fp.read
|
75
|
-
fp.pos = pos
|
76
|
-
end
|
77
|
-
else
|
78
|
-
fp = $stdin
|
79
|
-
source = '<stdin>'
|
80
|
-
rootdir = options[:working]
|
81
|
-
caller_id = nil
|
82
|
-
end
|
83
|
-
|
84
|
-
if options[:verbose]
|
85
|
-
puts "source: #{source}"
|
86
|
-
puts "rootdir: #{rootdir}"
|
87
|
-
puts "caller_id: #{caller_id}"
|
88
|
-
end
|
89
|
-
|
90
|
-
begin
|
91
|
-
# allow for poundhash
|
92
|
-
context(:argv => exec_args, :rootdir => rootdir, :caller_id => caller_id) do |ctx|
|
93
|
-
ctx.eval(fp, source) # eval the rest
|
94
|
-
end
|
95
|
-
rescue Interrupt => e
|
96
|
-
puts; exit
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
map "server" => "preview"
|
101
|
-
desc "preview", "Starts a preview server for testing"
|
102
|
-
long_desc %[
|
103
|
-
The preview command starts a simple file server that can be used to
|
104
|
-
load JavaScript-based apps in the browser. This is a convenient way to
|
105
|
-
run apps in the browser instead of having to setup Apache on your
|
106
|
-
local machine. If you are already loading apps through your own web
|
107
|
-
server (for ex using Rails) the preview server is not required.
|
108
|
-
]
|
109
|
-
method_option :port, :type => :string, :default => '4020',
|
110
|
-
:aliases => ['-p'],
|
111
|
-
:desc => 'Port number'
|
112
|
-
def preview
|
113
|
-
require 'spade/server'
|
114
|
-
trap("SIGINT") { Spade::Server.shutdown }
|
115
|
-
Spade::Server.run(options[:working], options[:port]);
|
116
|
-
end
|
117
|
-
|
118
|
-
desc "update", "Update package info in the current project"
|
119
|
-
def update
|
120
|
-
Spade::Bundle.update(options[:working], :verbose => options[:verbose])
|
121
|
-
end
|
122
|
-
|
123
|
-
desc "install [PACKAGE]", "Installs one or many spade packages"
|
124
|
-
method_option :version, :type => :string, :default => ">= 0", :aliases => ['-v'], :desc => 'Specify a version to install'
|
125
|
-
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'], :desc => 'Install a prerelease version'
|
126
|
-
def install(*packages)
|
127
|
-
report_arity_error("install") and return if packages.size.zero?
|
128
|
-
|
129
|
-
begin
|
130
|
-
packages.each do |package|
|
131
|
-
installed = Spade::Remote.new.install(package, options[:version], options[:prerelease])
|
132
|
-
installed.each do |spec|
|
133
|
-
say "Successfully installed #{spec.full_name}"
|
134
|
-
end
|
135
|
-
end
|
136
|
-
rescue Gem::InstallError => e
|
137
|
-
abort "Install error: #{e}"
|
138
|
-
rescue Gem::GemNotFoundException => e
|
139
|
-
abort "Can't find package #{e.name} #{e.version} available for install"
|
140
|
-
rescue Errno::EACCES, Gem::FilePermissionError => e
|
141
|
-
abort e.message
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
desc "installed [PACKAGE]", "Shows what spade packages are installed"
|
146
|
-
def installed(*packages)
|
147
|
-
local = Spade::Local.new
|
148
|
-
index = local.installed(packages)
|
149
|
-
print_specs(packages, index)
|
150
|
-
end
|
151
|
-
|
152
|
-
desc "uninstall [PACKAGE]", "Uninstalls one or many packages"
|
153
|
-
def uninstall(*packages)
|
154
|
-
local = Spade::Local.new
|
155
|
-
if packages.size > 0
|
156
|
-
packages.each do |package|
|
157
|
-
if !local.uninstall(package)
|
158
|
-
abort %{No packages installed named "#{package}"}
|
159
|
-
end
|
160
|
-
end
|
161
|
-
else
|
162
|
-
report_arity_error('uninstall')
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
desc "login", "Log in with your Spade credentials"
|
167
|
-
def login
|
168
|
-
highline = HighLine.new
|
169
|
-
say "Enter your Spade credentials."
|
170
|
-
|
171
|
-
begin
|
172
|
-
email = highline.ask "\nEmail:" do |q|
|
173
|
-
next unless STDIN.tty?
|
174
|
-
q.readline = true
|
175
|
-
end
|
176
|
-
|
177
|
-
password = highline.ask "\nPassword:" do |q|
|
178
|
-
next unless STDIN.tty?
|
179
|
-
q.echo = "*"
|
180
|
-
end
|
181
|
-
rescue Interrupt => ex
|
182
|
-
abort "Cancelled login."
|
183
|
-
end
|
184
|
-
|
185
|
-
say "\nLogging in as #{email}..."
|
186
|
-
|
187
|
-
if Spade::Remote.new.login(email, password)
|
188
|
-
say "Logged in!"
|
189
|
-
else
|
190
|
-
say "Incorrect email or password."
|
191
|
-
login
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
desc "push", "Distribute your spade package"
|
196
|
-
def push(package)
|
197
|
-
remote = Spade::Remote.new
|
198
|
-
if remote.logged_in?
|
199
|
-
say remote.push(package)
|
200
|
-
else
|
201
|
-
say LOGIN_MESSAGE
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
desc "yank", "Remove a specific package version release from SproutCutter"
|
206
|
-
method_option :version, :type => :string, :default => nil, :aliases => ['-v'], :desc => 'Specify a version to yank'
|
207
|
-
method_option :undo, :type => :boolean, :default => false, :desc => 'Unyank package'
|
208
|
-
def yank(package)
|
209
|
-
if options[:version]
|
210
|
-
remote = Spade::Remote.new
|
211
|
-
if remote.logged_in?
|
212
|
-
if options[:undo]
|
213
|
-
say remote.unyank(package, options[:version])
|
214
|
-
else
|
215
|
-
say remote.yank(package, options[:version])
|
216
|
-
end
|
217
|
-
else
|
218
|
-
say LOGIN_MESSAGE
|
219
|
-
end
|
220
|
-
else
|
221
|
-
say "Version required"
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
desc "list", "View available packages for download"
|
226
|
-
method_option :all, :type => :boolean, :default => false, :aliases => ['-a'], :desc => 'List all versions available'
|
227
|
-
method_option :prerelease, :type => :boolean, :default => false, :aliases => ['--pre'], :desc => 'List prerelease versions available'
|
228
|
-
def list(*packages)
|
229
|
-
remote = Spade::Remote.new
|
230
|
-
index = remote.list_packages(packages, options[:all], options[:prerelease])
|
231
|
-
print_specs(packages, index)
|
232
|
-
end
|
233
|
-
|
234
|
-
desc "new [NAME]", "Generate a new project skeleton"
|
235
|
-
def new(name)
|
236
|
-
ProjectGenerator.new(self,
|
237
|
-
name, File.expand_path(name)).run
|
238
|
-
end
|
239
|
-
|
240
|
-
desc "build", "Build a spade package from a package.json"
|
241
|
-
def build
|
242
|
-
local = Spade::Local.new
|
243
|
-
if local.logged_in?
|
244
|
-
package = local.pack("package.json")
|
245
|
-
if package.errors.empty?
|
246
|
-
puts "Successfully built package: #{package.to_ext}"
|
247
|
-
else
|
248
|
-
failure_message = "Spade encountered the following problems building your package:"
|
249
|
-
package.errors.each do |error|
|
250
|
-
failure_message << "\n* #{error}"
|
251
|
-
end
|
252
|
-
abort failure_message
|
253
|
-
end
|
254
|
-
else
|
255
|
-
abort LOGIN_MESSAGE
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
desc "unpack [PACKAGE]", "Extract files from a spade package"
|
260
|
-
method_option :target, :type => :string, :default => ".", :aliases => ['-t'], :desc => 'Unpack to given directory'
|
261
|
-
def unpack(*paths)
|
262
|
-
local = Spade::Local.new
|
263
|
-
|
264
|
-
paths.each do |path|
|
265
|
-
begin
|
266
|
-
package = local.unpack(path, options[:target])
|
267
|
-
unpack_path = File.expand_path(File.join(Dir.pwd, options[:target], package.to_full_name))
|
268
|
-
puts "Unpacked spade into: #{unpack_path}"
|
269
|
-
rescue Errno::EACCES, Gem::FilePermissionError => ex
|
270
|
-
abort "There was a problem unpacking #{path}:\n#{ex.message}"
|
271
|
-
end
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
private
|
276
|
-
|
277
|
-
def report_arity_error(name)
|
278
|
-
self.class.handle_argument_error(self.class.tasks[name], nil)
|
279
|
-
end
|
280
|
-
|
281
|
-
def repl(ctx)
|
282
|
-
ctx.reactor.next_tick do
|
283
|
-
line = Readline.readline("spade> ", true)
|
284
|
-
begin
|
285
|
-
result = ctx.eval(line, '<console>')
|
286
|
-
puts result unless result.nil?
|
287
|
-
rescue V8::JSError => e
|
288
|
-
puts e.message
|
289
|
-
puts e.backtrace(:javascript)
|
290
|
-
rescue StandardError => e
|
291
|
-
puts e
|
292
|
-
puts e.backtrace.join("\n")
|
293
|
-
end
|
294
|
-
repl(ctx)
|
295
|
-
end
|
296
|
-
end
|
297
|
-
|
298
|
-
# Loads a JS file into the context. This is not a require; just load
|
299
|
-
def load(cxt, libfile)
|
300
|
-
begin
|
301
|
-
content = File.readlines(libfile)
|
302
|
-
content.shift if content.first && (content.first =~ /^\#\!/)
|
303
|
-
cxt.eval(content*'')
|
304
|
-
#cxt.load(libfile)
|
305
|
-
rescue V8::JSError => e
|
306
|
-
puts e.message
|
307
|
-
puts e.backtrace(:javascript)
|
308
|
-
rescue StandardError => e
|
309
|
-
puts e
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
# Initialize a context to work against. This will load also handle
|
314
|
-
# autorequires
|
315
|
-
def context(opts={})
|
316
|
-
opts[:rootdir] ||= options[:working]
|
317
|
-
opts[:verbose] = options[:verbose]
|
318
|
-
Spade::MainContext.new(opts) do |ctx|
|
319
|
-
|
320
|
-
requires = opts[:require]
|
321
|
-
requires.each { |r| load(ctx, r) } if requires
|
322
|
-
|
323
|
-
yield(ctx) if block_given?
|
324
|
-
end
|
325
|
-
end
|
326
|
-
|
327
|
-
def print_specs(packages, index)
|
328
|
-
spades = {}
|
329
|
-
|
330
|
-
index.each do |(name, version, platform)|
|
331
|
-
spades[name] ||= []
|
332
|
-
spades[name] << version
|
333
|
-
end
|
334
|
-
|
335
|
-
if spades.size.zero?
|
336
|
-
abort %{No packages found matching "#{packages.join('", "')}".}
|
337
|
-
else
|
338
|
-
spades.each do |name, versions|
|
339
|
-
puts "#{name} (#{versions.sort.reverse.join(", ")})"
|
340
|
-
end
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
def method_missing(meth, *)
|
345
|
-
if File.exist?(meth.to_s)
|
346
|
-
ARGV.unshift("exec")
|
347
|
-
invoke :exec
|
348
|
-
else
|
349
|
-
super
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
|
-
end
|
354
|
-
end
|