cake 0.4.11 → 0.4.13
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/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: []
|