cake 0.4.18 → 0.5.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.
Files changed (5) hide show
  1. data/bin/cake +44 -69
  2. data/lib/bake.jar +0 -0
  3. data/lib/cake.jar +0 -0
  4. data/lib/clojure.jar +0 -0
  5. metadata +5 -5
data/bin/cake CHANGED
@@ -35,6 +35,10 @@ else
35
35
  def daemon(cmd)
36
36
  puts cmd if debug?
37
37
  pid = fork do
38
+ if not $stdin.tty?
39
+ $stdout.close
40
+ $stderr.close
41
+ end
38
42
  Process.setsid
39
43
  exec(cmd)
40
44
  end
@@ -132,6 +136,7 @@ end
132
136
 
133
137
  begin
134
138
  require 'readline'
139
+ $libedit = true unless Readline.respond_to?(:emacs_editing_mode)
135
140
  rescue LoadError
136
141
  $no_readline = true
137
142
  module Readline
@@ -235,7 +240,6 @@ end
235
240
 
236
241
  def download(url, path, opts = {})
237
242
  file = File.basename(url)
238
- path = "#{path}/#{file}" if File.directory?(path)
239
243
 
240
244
  if opts[:force] or not File.exists?(path)
241
245
  FileUtils.makedirs(File.dirname(path))
@@ -260,14 +264,14 @@ end
260
264
 
261
265
  def get_cake(opts = {})
262
266
  version = cake_version(opts[:version] || :current)
263
- download("#{$github}/jars/cake-#{version}.jar", "#{$m2}/cake/cake/#{snapshot(version)}", opts)
267
+ download("#{$github}/jars/cake-#{version}.jar", "#{$m2}/cake/cake/#{snapshot(version)}/cake-#{version}.jar", opts)
264
268
  end
265
269
 
266
270
  def get_clojure(opts = {})
267
271
  version = opts[:version] || "1.2.0"
268
272
  repo = opts[:repo] || "http://build.clojure.org/releases"
269
273
  path = "org/clojure/clojure/#{version}"
270
- download("#{repo}/#{path}/clojure-#{version}.jar", "#{$m2}/#{path}", opts)
274
+ download("#{repo}/#{path}/clojure-#{version}.jar", "#{$m2}/#{path}/clojure-#{version}.jar", opts)
271
275
  end
272
276
 
273
277
  def progress_bar(label, ch = '=', bg = '', width = 77, out = $stdout, progress = 0, total = nil)
@@ -327,13 +331,13 @@ class JVM
327
331
  end
328
332
 
329
333
  def init
330
- stale = reload_stale_files if enabled? and running?
334
+ reload_stale_files if enabled? and running?
331
335
  start
332
- stale
333
336
  end
334
337
 
335
338
  def refresh
336
339
  @pid, @port, @version = IO.read(pidfile).split("\n"); @pid = @pid.to_i; @port = @port.to_i
340
+
337
341
  Process.kill(0, @pid) # make sure pid is valid
338
342
  TCPSocket.new("localhost", @port).close if @port # make sure jvm is running on port
339
343
 
@@ -341,7 +345,7 @@ class JVM
341
345
  rescue Errno::ENOENT, Errno::ESRCH, Errno::ECONNREFUSED, Errno::EBADF, Process::Error => e
342
346
  if e.kind_of?(Errno::ECONNREFUSED)
343
347
  log(:start, "defunct #{type} jvm") if debug?
344
- kill
348
+ kill(true)
345
349
  end
346
350
  reset! # no pidfile or invalid pid or connection refused
347
351
  end
@@ -358,34 +362,17 @@ class JVM
358
362
  end
359
363
 
360
364
  def reload_stale_files
361
- stale_files = files.select {|f| stale?(f)}
362
-
363
- if stale_files.empty?
364
- log(:reload, "no stale #{type} files found") if verbose? and admin_command?
365
- false
366
- else
367
- log(:reload, "the following #{type} files have changed: #{stale_files.join(', ')}") if debug?
368
-
369
- if stale_files.any? {|f| File.extname(f) != ".clj"}
370
- log(:reload, "non-clojure #{type} files have changed, restarting") if verbose?
371
- stop(:reload)
365
+ with_socket(nil) do |socket|
366
+ socket.write ":reload {}"
367
+ socket.close_write
368
+ if socket.eof?
369
+ FileUtils.touch(pidfile)
370
+ @load_time = Time.now
372
371
  else
373
- log(:reload, "clojure #{type} files have changed, reloading") if verbose?
374
- with_socket(nil) do |socket|
375
- stale_files = stale_files.collect {|f| %{"#{f}"} }
376
- socket.write ":reload {} [#{stale_files.join(" ")}]"
377
- socket.close_write
378
- if socket.eof?
379
- FileUtils.touch(pidfile)
380
- @load_time = Time.now
381
- else
382
- inspect(socket)
383
- log(:reload, "unable to reload all #{type} files, restarting") if verbose?
384
- stop(:reload)
385
- end
386
- end
372
+ inspect(socket) if debug?
373
+ log(:reload, "unable to reload all #{type} files, restarting") if verbose?
374
+ stop(:reload)
387
375
  end
388
- true
389
376
  end
390
377
  end
391
378
 
@@ -438,9 +425,9 @@ class JVM
438
425
  end || (log(mode, "#{type} jvm not running") if $command == :stop)
439
426
  end
440
427
 
441
- def kill
428
+ def kill(force = $opts[:"9"])
442
429
  if pid
443
- signal = $opts[:"9"] ? KILL : TERM
430
+ signal = force ? KILL : TERM
444
431
  log(:kill, "sending #{signal} signal to #{type} jvm") if debug?
445
432
  Process.kill(signal, pid)
446
433
  reset!
@@ -449,21 +436,6 @@ class JVM
449
436
  end
450
437
  end
451
438
 
452
- def files
453
- files = ["project.clj", "#{$home}/.cake/config", ".cake/config"]
454
- classpath.split(PATH_SEP).uniq.each do |path|
455
- if path =~ /(.*)\/\*$/
456
- files.concat Dir["#{path}.jar"] << "#{$1}/." # include the directory itself so deletions will be detected
457
- else
458
- Find.find(path) do |f|
459
- Find.prune if f == "#{$bakedir}/src/jvm"
460
- files << f if f =~ /\.(clj|class|jar)$/ and File.exists?(f) and not File.directory?(f)
461
- end if File.exists?(path)
462
- end
463
- end
464
- files
465
- end
466
-
467
439
  def ping
468
440
  return unless enabled?
469
441
  with_socket do |socket|
@@ -518,7 +490,7 @@ class JVM
518
490
  while line = $stdin.gets
519
491
  socket.write [line.chomp, ~forms].to_clj
520
492
  while (line = socket.gets)
521
- break if line.start_with?(EOL)
493
+ break if line.index(EOL) == 0
522
494
  puts line
523
495
  end
524
496
  end
@@ -534,7 +506,7 @@ private
534
506
 
535
507
  def inspect(socket)
536
508
  while line = socket.gets
537
- break if line.start_with?('reload-failed:') and not debug?
509
+ break if line.index('reload-failed:') == 0 and not debug?
538
510
  puts line
539
511
  end
540
512
  end
@@ -561,7 +533,7 @@ private
561
533
  log :cake, "connection to #{type} jvm is taking a long time...",
562
534
  "you can use ^C to abort and use 'cake kill' or 'cake kill -9' to force the jvm to restart"
563
535
  end
564
- retry
536
+ retry unless retries < -$timeout
565
537
  end
566
538
  ensure
567
539
  socket.close if socket
@@ -661,13 +633,9 @@ class Cake < JVM
661
633
  end
662
634
  end
663
635
 
664
- def files
665
- super.concat ["tasks.clj", "#{$home}/.cake/tasks.clj"]
666
- end
667
-
668
636
  def java_opts
669
637
  # bootclasspath = %{-Xbootclasspath/a:"#{$clojure}"}
670
- [ENV['CAKE_JAVA_OPTS'], $config['cake.java_opts'], super].compact.join(' ')
638
+ ["-Xms16M -Xmx64M", ENV['CAKE_JAVA_OPTS'], $config['cake.java_opts'], super].compact.join(' ')
671
639
  end
672
640
 
673
641
  private
@@ -692,17 +660,17 @@ end
692
660
 
693
661
  class Bake < JVM
694
662
  def java_opts
695
- [ENV['JAVA_OPTS'], $config['project.java_opts'], super].compact.join(' ')
663
+ ["-Xms128M -Xmx256M", ENV['JAVA_OPTS'], $config['project.java_opts'], super].compact.join(' ')
696
664
  end
697
665
 
698
666
  def enabled?
699
- Dir['lib/*.jar'].any?
667
+ Dir['lib/*.jar'].any? or Dir['classes/**/*.class'].any?
700
668
  end
701
669
  end
702
670
 
703
671
  def initialize_cake_dirs
704
- FileUtils.makedirs("#{$bakedir}/.cake")
705
- FileUtils.makedirs("#{$home}/.cake")
672
+ FileUtils.makedirs("#{$bakedir}/.cake/run")
673
+ FileUtils.makedirs("#{$home}/.cake/run")
706
674
  project_clj = "#{$home}/.cake/project.clj"
707
675
  File.open(project_clj, 'w') do |file|
708
676
  file.write <<END
@@ -720,6 +688,12 @@ def initialize_cake_dirs
720
688
  ;;--------------------
721
689
  END
722
690
  end unless File.exists?(project_clj)
691
+
692
+ # Enable paren matching if using readline and .inputrc doesn't exist.
693
+ inputrc = "#{$home}/.inputrc"
694
+ File.open(inputrc, 'w') do |file|
695
+ file.write "set blink-matching-paren on\n"
696
+ end unless $no_readline or $libedit or File.exists?(inputrc)
723
697
  end
724
698
 
725
699
  #==================================
@@ -728,11 +702,11 @@ parse_opts!
728
702
  $script = File.expand_path($opts[:run].first) if $opts[:run]
729
703
  $pwd = Dir.getwd
730
704
  $bakedir = project_dir($pwd)
731
- $cakedir = File.dirname(File.dirname(readlink(__FILE__)))
705
+ $cakedir = File.expand_path(File.dirname(File.dirname(readlink(__FILE__))))
732
706
  $github = "http://github.com/ninjudd/cake-standalone/raw/master"
733
707
  $m2 = "#{$home}/.m2/repository"
734
708
  $config = Configuration.new("#{$home}/.cake/config", ".cake/config")
735
- $vars = {:env => ENV.to_hash, :pwd => $pwd, :args => ARGV, :opts => $opts, :script => $0}.to_clj
709
+ $vars = {:shellenv => ENV.to_hash, :pwd => $pwd, :args => ARGV, :opts => $opts, :script => $0}.to_clj
736
710
  $timeout = ($config['connect.timeout'] || 20).to_i
737
711
 
738
712
  initialize_cake_dirs
@@ -760,14 +734,15 @@ if File.exists?("#{$cakedir}/.gitignore") and File.exists?(project)
760
734
  # Force new cake libs if cake's project.clj has changed.
761
735
  FileUtils.remove_dir(lib, true) if newer?(project, lib) and not $config['cake.disable-auto-deps']
762
736
 
763
- if Dir["#{lib}/*.jar"].empty?
737
+ if Dir["#{lib}/*.jar"].empty? or Dir["#{lib}/dev/*.jar"].empty?
764
738
  # In a new git checkout, need to fetch dependencies.
765
739
  cakejar = get_cake(:version => $version, :dest => lib) rescue get_cake(:version => :current, :dest => lib)
740
+ extract(cakejar, "bake.jar", "#{lib}/dev")
766
741
  end
767
742
  $clojure = get_clojure(:dest => lib)
768
743
 
769
- cakepath = ["#{$cakedir}/src", "#{lib}/*"]
770
- bakepath = ["#{$cakedir}/bake"]
744
+ cakepath = ["#{$cakedir}/src", "#{lib}/*", "#{lib}/dev/*"]
745
+ bakepath = ["#{$cakedir}/bake", "#{lib}/dev/*"]
771
746
  else
772
747
  cakejar = "#{lib}/cake.jar"
773
748
  bakejar = "#{lib}/bake.jar"
@@ -815,15 +790,15 @@ cake = Cake.new(
815
790
  [$config['cake.library.path'], "lib/dev/native"]
816
791
  )
817
792
  bake = Bake.new(
818
- [bakepath, "src", "src/clj", "classes", "resources", "dev", "test", $config['project.classpath'], $opts[:cp], "lib/*", "lib/dev/*", "#{$home}/.cake/lib/dev/*"],
793
+ [bakepath, "src", "src/clj", "classes", "resources", "dev", "test", "test/classes", $config['project.classpath'], $opts[:cp], "lib/*", "lib/dev/*", "#{$home}/.cake/lib/dev/*"],
819
794
  [$config['project.library.path'], "lib/native", "lib/dev/native"]
820
795
  )
821
796
 
822
797
  if $command == :default and $opts[:version]
823
798
  puts "cake #{$version}"
824
799
  exit
825
- elsif $command == :kill
826
- if $opts[:all] or $opts[:kill] == ['all']
800
+ elsif $command == :killall or $command == :kill
801
+ if $opts[:all] or $opts[:kill] == ['all'] or $command == :killall
827
802
  puts "'cake kill --all' is deprecated, in the future use 'cake kill all' instead" if $opts[:all]
828
803
  num = ps.each do |line|
829
804
  pid = line.split(' ').first.to_i
data/lib/bake.jar CHANGED
Binary file
data/lib/cake.jar CHANGED
Binary file
data/lib/clojure.jar CHANGED
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: 43
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 18
10
- version: 0.4.18
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
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-09-25 00:00:00 -07:00
19
+ date: 2010-10-13 00:00:00 -07:00
20
20
  default_executable: cake
21
21
  dependencies: []
22
22