Methods
Attributes
| [RW] | quiet |
Public Class methods
[ show source ]
# File railties/lib/commands/plugin.rb, line 903
903: def initialize(urls_to_fetch, level = 1, cwd = ".")
904: @level = level
905: @cwd = cwd
906: @urls_to_fetch = RUBY_VERSION >= '1.9' ? urls_to_fetch.lines : urls_to_fetch.to_a
907: @quiet = false
908: end
Public Instance methods
[ show source ]
# File railties/lib/commands/plugin.rb, line 942
942: def download(link)
943: puts "+ #{File.join(@cwd, File.basename(link))}" unless @quiet
944: open(link) do |stream|
945: File.open(File.join(@cwd, File.basename(link)), "wb") do |file|
946: file.write(stream.read)
947: end
948: end
949: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 951
951: def fetch(links = @urls_to_fetch)
952: links.each do |l|
953: (l =~ /\/$/ || links == @urls_to_fetch) ? fetch_dir(l) : download(l)
954: end
955: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 957
957: def fetch_dir(url)
958: @level += 1
959: push_d(File.basename(url)) if @level > 0
960: open(url) do |stream|
961: contents = stream.read
962: fetch(links(url, contents))
963: end
964: pop_d if @level > 0
965: @level -= 1
966: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 931
931: def links(base_url, contents)
932: links = []
933: contents.scan(/href\s*=\s*\"*[^\">]*/i) do |link|
934: link = link.sub(/href="/i, "")
935: next if link =~ /svnindex.xsl$/
936: next if link =~ /^(\w*:|)\/\// || link =~ /^\./
937: links << File.join(base_url, link)
938: end
939: links
940: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 910
910: def ls
911: @urls_to_fetch.collect do |url|
912: if url =~ /^svn(\+ssh)?:\/\/.*/
913: `svn ls #{url}`.split("\n").map {|entry| "/#{entry}"} rescue nil
914: else
915: open(url) do |stream|
916: links("", stream.read)
917: end rescue nil
918: end
919: end.flatten
920: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 927
927: def pop_d
928: @cwd = File.dirname(@cwd)
929: end
[ show source ]
# File railties/lib/commands/plugin.rb, line 922
922: def push_d(dir)
923: @cwd = File.join(@cwd, dir)
924: FileUtils.mkdir_p(@cwd)
925: end