cake 0.4.11 → 0.4.13
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/cake +107 -82
- data/cake.gemspec +1 -1
- data/lib/bake.jar +0 -0
- data/lib/cake.jar +0 -0
- data/lib/clojure.jar +0 -0
- metadata +5 -4
data/bin/cake
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'find'
|
4
4
|
require 'open-uri'
|
5
5
|
require 'socket'
|
6
|
-
require 'timeout'
|
7
6
|
require 'fileutils'
|
8
7
|
require 'io/wait'
|
9
8
|
require 'pp'
|
@@ -231,47 +230,60 @@ rescue NotImplementedError, Errno::EINVAL
|
|
231
230
|
file
|
232
231
|
end
|
233
232
|
|
234
|
-
def download(url,
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
233
|
+
def download(url, dir, opts = {})
|
234
|
+
file = File.basename(url)
|
235
|
+
path = "#{dir}/#{file}"
|
236
|
+
|
237
|
+
if opts[:force] or not File.exists?(path)
|
238
|
+
FileUtils.makedirs(dir)
|
239
|
+
open(url, progress_bar(url)) do |remote|
|
240
|
+
open(path, "wb") do |local|
|
241
|
+
while (buf = remote.read(8192)); local.write buf; end
|
240
242
|
end
|
241
|
-
end
|
243
|
+
end; puts
|
244
|
+
end
|
245
|
+
return path unless opts[:dest]
|
246
|
+
|
247
|
+
dir = File.expand_path(opts[:dest])
|
248
|
+
dest = "#{dir}/#{file}"
|
249
|
+
if opts[:force] or not File.exists?(dest)
|
250
|
+
FileUtils.makedirs(dir)
|
251
|
+
FileUtils.copy(path, dest)
|
242
252
|
end
|
253
|
+
dest
|
254
|
+
rescue OpenURI::HTTPError
|
255
|
+
raise "resource not found: #{url}"
|
243
256
|
end
|
244
257
|
|
245
|
-
def get_cake(
|
246
|
-
|
247
|
-
|
248
|
-
|
258
|
+
def get_cake(opts = {})
|
259
|
+
log(:deps, "Fetching cake dependencies...") unless @got_cake; @got_cake = true
|
260
|
+
version = cake_version(opts[:version] || :current)
|
261
|
+
download("#{$github}/jars/cake-#{version}.jar", "#{$m2}/cake/cake/#{snapshot(version)}", opts)
|
262
|
+
end
|
249
263
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
return path unless dest
|
264
|
+
def get_clojure(opts = {})
|
265
|
+
version = opts[:version] || "1.2.0"
|
266
|
+
repo = opts[:repo] || "http://build.clojure.org/releases"
|
267
|
+
path = "org/clojure/clojure/#{version}"
|
268
|
+
download("#{repo}/#{path}/clojure-#{version}.jar", "#{$m2}/#{path}", opts)
|
269
|
+
end
|
257
270
|
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
"#{dest}/#{jar}"
|
262
|
-
rescue OpenURI::HTTPError => e
|
263
|
-
raise if opts[:raise]
|
264
|
-
log(:deps, "unable to find cake version #{version} on clojars.")
|
265
|
-
log(:deps, "please check http://github.com/ninjudd/cake for latest install instructions.")
|
266
|
-
exit
|
271
|
+
def progress_bar(label, ch = '=', bg = '', width = 77, out = $stdout, progress = 0, total = nil)
|
272
|
+
{ :progress_proc => lambda {|c| progress += ((width * c/total).to_i - progress).times { out.print_flush(ch) }},
|
273
|
+
:content_length_proc => lambda {|t| printf("%s\n[%#{width}s]\r[", label, bg); total = t}}
|
267
274
|
end
|
268
275
|
|
269
|
-
def
|
270
|
-
version
|
276
|
+
def cake_version(version)
|
277
|
+
return version unless version.kind_of?(Symbol)
|
278
|
+
version = open("#{$github}/#{version}").gets
|
271
279
|
log(:deps, "most recent standalone version is #{version}") if debug?
|
272
280
|
version
|
273
281
|
end
|
274
282
|
|
283
|
+
def snapshot(version)
|
284
|
+
version.gsub(/\d{8}\.\d{6}$/, "SNAPSHOT")
|
285
|
+
end
|
286
|
+
|
275
287
|
def extract(jar, file, dest = File.dirname(jar))
|
276
288
|
if not File.exists?("#{dest}/#{file}")
|
277
289
|
log(:deps, "extracting #{file} from #{jar}") if verbose?
|
@@ -299,7 +311,7 @@ class JVM
|
|
299
311
|
@type = self.class.name.downcase
|
300
312
|
@classpath = make_path(classpath)
|
301
313
|
@libpath = make_path(libpath)
|
302
|
-
@pidfile = "
|
314
|
+
@pidfile = ".cake/#{type}.pid"
|
303
315
|
@load_time = File.exists?(pidfile) ? File.mtime(pidfile) : Time.now
|
304
316
|
refresh
|
305
317
|
end
|
@@ -323,10 +335,7 @@ class JVM
|
|
323
335
|
Process.kill(0, @pid) # make sure pid is valid
|
324
336
|
TCPSocket.new("localhost", @port).close if @port # make sure jvm is running on port
|
325
337
|
|
326
|
-
if @version != $version
|
327
|
-
kill
|
328
|
-
reset!
|
329
|
-
end
|
338
|
+
kill if @version != $version
|
330
339
|
rescue Errno::ENOENT, Errno::ESRCH, Errno::ECONNREFUSED, Errno::EBADF, Process::Error => e
|
331
340
|
if e.kind_of?(Errno::ECONNREFUSED)
|
332
341
|
log(:start, "defunct #{type} jvm") if debug?
|
@@ -395,10 +404,10 @@ class JVM
|
|
395
404
|
def start
|
396
405
|
return unless enabled?
|
397
406
|
if running?
|
398
|
-
log(:start, "#{type} jvm already running") if $command == :start
|
407
|
+
log(:start, "#{type} jvm already running") if $command == :start and not $opts[:silent]
|
399
408
|
return
|
400
409
|
else
|
401
|
-
log(:start, "starting #{type} jvm") if verbose? or $command == :start
|
410
|
+
log(:start, "starting #{type} jvm") if verbose? or ($command == :start and not $opts[:silent])
|
402
411
|
@port = rand(MAX_PORT - MIN_PORT) + MIN_PORT
|
403
412
|
@pid = daemon %{java #{vm_opts} -Dcake.project="#{$bakedir}" #{java_opts} clojure.main -e "(use '#{type}.core) (start-server #{port})"}
|
404
413
|
File.open(pidfile, 'w') {|f| f.write("#{pid}\n#{port}\n#{$version}\n") }
|
@@ -428,11 +437,14 @@ class JVM
|
|
428
437
|
end
|
429
438
|
|
430
439
|
def kill
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
440
|
+
if pid
|
441
|
+
signal = $opts[:"9"] ? KILL : TERM
|
442
|
+
log(:kill, "sending #{signal} signal to #{type} jvm") if debug?
|
443
|
+
Process.kill(signal, pid)
|
444
|
+
reset!
|
445
|
+
else
|
446
|
+
log(:kill, "#{type} jvm not running") if $command == :kill
|
447
|
+
end
|
436
448
|
end
|
437
449
|
|
438
450
|
def files
|
@@ -475,16 +487,16 @@ class JVM
|
|
475
487
|
save_history
|
476
488
|
end
|
477
489
|
|
478
|
-
def run
|
490
|
+
def run
|
479
491
|
with_socket do |socket|
|
480
|
-
log(:run, "running file #{
|
481
|
-
socket.write(":run #{$vars} #{
|
492
|
+
log(:run, "running file #{$script}") if debug?
|
493
|
+
socket.write(":run #{$vars} #{$script.inspect}")
|
482
494
|
socket.duplex($stdin, $stdout)
|
483
495
|
end
|
484
496
|
end
|
485
497
|
|
486
|
-
def eval
|
487
|
-
forms =
|
498
|
+
def eval
|
499
|
+
forms = $opts[:eval].collect do |form|
|
488
500
|
form == '-' ? $stdin.gets(nil) : form
|
489
501
|
end.join(' ')
|
490
502
|
forms = "(doall (map println [#{forms}]))" unless $opts[:q]
|
@@ -496,7 +508,8 @@ class JVM
|
|
496
508
|
end
|
497
509
|
|
498
510
|
EOL = "EOL__#{rand}"
|
499
|
-
def filter
|
511
|
+
def filter
|
512
|
+
forms = $opts[:filter]
|
500
513
|
with_socket do |socket|
|
501
514
|
socket.write %(:filter #{$vars} "#{EOL}")
|
502
515
|
while line = $stdin.gets
|
@@ -646,6 +659,7 @@ class Cake < JVM
|
|
646
659
|
end
|
647
660
|
|
648
661
|
def java_opts
|
662
|
+
# bootclasspath = %{-Xbootclasspath/a:"#{$clojure}"}
|
649
663
|
[ENV['CAKE_JAVA_OPTS'], $config['cake.java_opts'], super].compact.join(' ')
|
650
664
|
end
|
651
665
|
|
@@ -675,16 +689,16 @@ class Bake < JVM
|
|
675
689
|
end
|
676
690
|
|
677
691
|
def enabled?
|
678
|
-
Dir[
|
692
|
+
Dir['lib/*.jar'].any?
|
679
693
|
end
|
680
694
|
end
|
681
695
|
|
682
|
-
|
683
|
-
|
684
|
-
FileUtils.makedirs("#{$home}/.cake")
|
685
|
-
project_clj = "#{$home}/.cake/project.clj"
|
686
|
-
File.open(project_clj, 'w') do |file|
|
687
|
-
|
696
|
+
def initialize_cake_dirs
|
697
|
+
FileUtils.makedirs("#{$bakedir}/.cake")
|
698
|
+
FileUtils.makedirs("#{$home}/.cake")
|
699
|
+
project_clj = "#{$home}/.cake/project.clj"
|
700
|
+
File.open(project_clj, 'w') do |file|
|
701
|
+
file.write <<END
|
688
702
|
(defproject global "0.0.0"
|
689
703
|
:description "Don't rename this project, but you can change the version if you want."
|
690
704
|
:dependencies [[clojure "1.2.0"]
|
@@ -698,21 +712,24 @@ File.open(project_clj, 'w') do |file|
|
|
698
712
|
;; 4. Configuration options in ~/.cake/config are used in all projects.
|
699
713
|
;;--------------------
|
700
714
|
END
|
701
|
-
end unless File.exists?(project_clj)
|
715
|
+
end unless File.exists?(project_clj)
|
716
|
+
end
|
717
|
+
|
718
|
+
#==================================
|
702
719
|
|
703
720
|
parse_opts!
|
704
721
|
$script = File.expand_path($opts[:run].first) if $opts[:run]
|
705
722
|
$pwd = Dir.getwd
|
706
723
|
$bakedir = project_dir($pwd)
|
707
724
|
$cakedir = File.dirname(File.dirname(readlink(__FILE__)))
|
708
|
-
$
|
709
|
-
$
|
725
|
+
$github = "http://github.com/ninjudd/cake-standalone/raw/master"
|
726
|
+
$m2 = "#{$home}/.m2/repository"
|
710
727
|
$config = Configuration.new("#{$home}/.cake/config", ".cake/config")
|
711
|
-
$timeout = ($config['connect.timeout'] || 20).to_i
|
712
728
|
$vars = {:env => ENV.to_hash, :pwd => $pwd, :args => ARGV, :opts => $opts, :script => $0}.to_clj
|
729
|
+
$timeout = ($config['connect.timeout'] || 20).to_i
|
713
730
|
|
714
731
|
Dir.chdir($bakedir)
|
715
|
-
|
732
|
+
initialize_cake_dirs
|
716
733
|
|
717
734
|
if debug?
|
718
735
|
puts "config: #{$config.inspect}"
|
@@ -733,21 +750,18 @@ if File.exists?("#{$cakedir}/.gitignore") and File.exists?(project)
|
|
733
750
|
$version = IO.read(project).split("\n").first.match(/defproject cake \"(.*)\"/)[1]
|
734
751
|
log(:deps, "project.clj version is #{$version}") if debug?
|
735
752
|
|
736
|
-
|
753
|
+
# Force new cake libs if cake's project.clj has changed.
|
754
|
+
FileUtils.remove_dir(lib, true) if newer?(project, lib) and not $config['cake.disable-auto-deps']
|
755
|
+
|
737
756
|
if Dir["#{lib}/*.jar"].empty? or Dir["#{lib}/dev/*.jar"].empty?
|
738
|
-
# In a new git checkout, need to fetch dependencies.
|
739
|
-
|
740
|
-
|
741
|
-
cakejar = get_cake(version, lib, :raise => true)
|
742
|
-
rescue OpenURI::HTTPError => e
|
743
|
-
version = current_version
|
744
|
-
cakejar = get_cake(version, lib)
|
745
|
-
end
|
746
|
-
extract(cakejar, "bake-#{version}.jar", "#{lib}/dev")
|
757
|
+
# In a new git checkout, need to fetch dependencies.
|
758
|
+
cakejar = get_cake(:version => $version, :dest => lib) rescue get_cake(:version => :current, :dest => lib)
|
759
|
+
extract(cakejar, "bake.jar", "#{lib}/dev")
|
747
760
|
end
|
761
|
+
$clojure = get_clojure(:dest => lib)
|
748
762
|
|
749
|
-
cakepath = ["#{$cakedir}/src", "#{lib}/*:#{lib}/dev/*"]
|
750
|
-
bakepath = ["#{$cakedir}/bake", "#{lib}/dev/*"]
|
763
|
+
cakepath = ["#{$cakedir}/src", "#{lib}/*:#{lib}/dev/*"]
|
764
|
+
bakepath = ["#{$cakedir}/bake", "#{lib}/dev/*"]
|
751
765
|
else
|
752
766
|
cakejar = "#{lib}/cake.jar"
|
753
767
|
bakejar = "#{lib}/bake.jar"
|
@@ -756,23 +770,32 @@ else
|
|
756
770
|
log(:cake, "running from gem") if verbose?
|
757
771
|
if $command == :upgrade
|
758
772
|
log(:upgrade, "checking for updates to cake gem")
|
759
|
-
system('gem update cake')
|
773
|
+
system('gem update cake --no-ri --no-rdoc')
|
760
774
|
end
|
761
775
|
|
762
776
|
$version = File.basename(File.dirname(lib)).split('-')[1]
|
763
|
-
|
777
|
+
$clojure = "#{lib}/clojure.jar"
|
778
|
+
|
779
|
+
cakepath = [cakejar, $clojure]
|
764
780
|
bakepath = bakejar
|
765
781
|
else
|
766
782
|
# Standalone script.
|
767
783
|
log(:cake, "running from standalone script") if verbose?
|
768
|
-
download("
|
784
|
+
download("#{$github}/cake", __FILE__, :force => true) if $command == :upgrade
|
785
|
+
|
786
|
+
$version = cake_version(:stable)
|
787
|
+
cakejar = get_cake(:version => $version)
|
788
|
+
$clojure = get_clojure
|
769
789
|
|
770
|
-
|
771
|
-
|
772
|
-
bakepath = extract(cakepath, "bake-#{$version}.jar")
|
790
|
+
cakepath = [cakejar, $clojure]
|
791
|
+
bakepath = extract(cakejar, "bake.jar")
|
773
792
|
end
|
774
793
|
end
|
775
|
-
|
794
|
+
|
795
|
+
if $command == :upgrade
|
796
|
+
system($0, "start", "--silent")
|
797
|
+
exec($0, "--version")
|
798
|
+
end
|
776
799
|
|
777
800
|
cake = Cake.new(
|
778
801
|
[cakepath, "src", "src/clj", $config['cake.claspath'], "lib/dev/*", "#{$home}/.cake/lib/dev/*"],
|
@@ -787,11 +810,13 @@ if $command == :default and $opts[:version]
|
|
787
810
|
puts "cake #{$version}"
|
788
811
|
exit
|
789
812
|
elsif $command == :kill
|
790
|
-
if $opts[:all]
|
791
|
-
|
813
|
+
if $opts[:all] or $opts[:kill] == ['all']
|
814
|
+
puts "'cake kill --all' is deprecated, in the future use 'cake kill all' instead" if $opts[:all]
|
815
|
+
num = ps.each do |line|
|
792
816
|
pid = line.split(' ').first.to_i
|
793
817
|
Process.kill($opts[:"9"] ? KILL : TERM, pid)
|
794
|
-
end
|
818
|
+
end.size
|
819
|
+
puts "No matching processes belonging to you were found" if num == 0
|
795
820
|
else
|
796
821
|
cake.kill
|
797
822
|
bake.kill
|
data/cake.gemspec
CHANGED
@@ -9,6 +9,6 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.description = "Save your fork, there's cake!"
|
10
10
|
s.email = 'code@justinbalthrop.com'
|
11
11
|
s.executables = ['cake']
|
12
|
-
s.files = ['cake.gemspec', 'bin/cake', 'lib/cake.jar', 'lib/bake.jar']
|
12
|
+
s.files = ['cake.gemspec', 'bin/cake', 'lib/cake.jar', 'lib/bake.jar', 'lib/clojure.jar']
|
13
13
|
s.homepage = 'http://github.com/ninjudd/cake'
|
14
14
|
end
|
data/lib/bake.jar
CHANGED
Binary file
|
data/lib/cake.jar
CHANGED
Binary file
|
data/lib/clojure.jar
ADDED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 13
|
10
|
+
version: 0.4.13
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Justin Balthrop
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-09-09 00:00:00 -07:00
|
20
20
|
default_executable: cake
|
21
21
|
dependencies: []
|
22
22
|
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- bin/cake
|
34
34
|
- lib/cake.jar
|
35
35
|
- lib/bake.jar
|
36
|
+
- lib/clojure.jar
|
36
37
|
has_rdoc: true
|
37
38
|
homepage: http://github.com/ninjudd/cake
|
38
39
|
licenses: []
|