Class: Fig::Repository
- Inherits:
-
Object
- Object
- Fig::Repository
- Defined in:
- lib/fig/repository.rb
Instance Method Summary collapse
- #bundle_resources(package_statements) ⇒ Object
- #clean(package_name, version_name) ⇒ Object
-
#initialize(os, local_repository_dir, remote_repository_url, remote_repository_user = nil) ⇒ Repository
constructor
A new instance of Repository.
- #list_packages ⇒ Object
- #load_package(package_name, version_name) ⇒ Object
- #local_dir_for_package(package_name, version_name) ⇒ Object
- #publish_package(package_statements, package_name, version_name) ⇒ Object
- #read_local_package(package_name, version_name) ⇒ Object
- #read_package_from_directory(dir, package_name, version_name) ⇒ Object
- #read_package_from_file(file_name, package_name, version_name) ⇒ Object
- #read_remote_package(package_name, version_name) ⇒ Object
- #update_package(package_name, version_name) ⇒ Object
Constructor Details
#initialize(os, local_repository_dir, remote_repository_url, remote_repository_user = nil) ⇒ Repository
Returns a new instance of Repository.
5 6 7 8 9 10 11 |
# File 'lib/fig/repository.rb', line 5 def initialize(os, local_repository_dir, remote_repository_url, remote_repository_user=nil) @os = os @local_repository_dir = local_repository_dir @remote_repository_url = remote_repository_url @remote_repository_user = remote_repository_user @parser = Parser.new end |
Instance Method Details
#bundle_resources(package_statements) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/fig/repository.rb', line 59 def bundle_resources(package_statements) resources = [] new_package_statements = package_statements.reject do |statement| if statement.is_a?(Resource) && !is_url?(statement.url) resources << statement.url true else false end end if resources.size > 0 file = "resources.tar.gz" file unless system "tar -zcf #{file} #{resources.join(' ')}" new_package_statements.unshift(Archive.new(file)) end new_package_statements end |
#clean(package_name, version_name) ⇒ Object
13 14 15 16 17 |
# File 'lib/fig/repository.rb', line 13 def clean(package_name, version_name) dir = File.join(@local_repository_dir, package_name) dir = File.join(dir, version_name) if version_name FileUtils.rm_rf(dir) end |
#list_packages ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/fig/repository.rb', line 19 def list_packages results = [] @os.list(@local_repository_dir).each do |package_name| @os.list(File.join(@local_repository_dir, package_name)).each do |version_name| results << "#{package_name}/#{version_name}" end end results end |
#load_package(package_name, version_name) ⇒ Object
77 78 79 80 |
# File 'lib/fig/repository.rb', line 77 def load_package(package_name, version_name) update_package(package_name, version_name) if @remote_repository_url read_local_package(package_name, version_name) end |
#local_dir_for_package(package_name, version_name) ⇒ Object
115 116 117 |
# File 'lib/fig/repository.rb', line 115 def local_dir_for_package(package_name, version_name) File.join(@local_repository_dir, package_name, version_name) end |
#publish_package(package_statements, package_name, version_name) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fig/repository.rb', line 29 def publish_package(package_statements, package_name, version_name) temp_dir = temp_dir_for_package(package_name, version_name) @os.clear_directory(temp_dir) fig_file = File.join(temp_dir, ".fig") content = bundle_resources(package_statements).map do |statement| if statement.is_a?(Archive) || statement.is_a?(Resource) if statement.is_a?(Resource) && !is_url?(statement.url) archive_name = statement.url archive_remote = "#{remote_dir_for_package(package_name, version_name)}/#{statement.url}" else archive_name = statement.url.split("/").last archive_remote = "#{remote_dir_for_package(package_name, version_name)}/#{archive_name}" end if is_url?(statement.url) archive_local = File.join(temp_dir, archive_name) @os.download(statement.url, archive_local) else archive_local = statement.url end @os.upload(archive_local, archive_remote, @remote_repository_user) statement.class.new(archive_name).unparse('') else statement.unparse('') end end @os.write(fig_file, content.join("\n")) @os.upload(fig_file, remote_fig_file_for_package(package_name, version_name), @remote_repository_user) # update_package(package_name, version_name) end |
#read_local_package(package_name, version_name) ⇒ Object
90 91 92 93 |
# File 'lib/fig/repository.rb', line 90 def read_local_package(package_name, version_name) dir = local_dir_for_package(package_name, version_name) read_package_from_directory(dir, package_name, version_name) end |
#read_package_from_directory(dir, package_name, version_name) ⇒ Object
101 102 103 |
# File 'lib/fig/repository.rb', line 101 def read_package_from_directory(dir, package_name, version_name) read_package_from_file(File.join(dir, ".fig"), package_name, version_name) end |
#read_package_from_file(file_name, package_name, version_name) ⇒ Object
105 106 107 108 109 110 111 112 113 |
# File 'lib/fig/repository.rb', line 105 def read_package_from_file(file_name, package_name, version_name) if not @os.exist?(file_name) $stderr.puts "Package not found: #{package_name}/#{version_name}" exit 1 end modified_time = @os.mtime(file_name) content = @os.read(file_name) @parser.parse_package(package_name, version_name, File.dirname(file_name), content) end |
#read_remote_package(package_name, version_name) ⇒ Object
95 96 97 98 99 |
# File 'lib/fig/repository.rb', line 95 def read_remote_package(package_name, version_name) url = remote_fig_file_for_package(package_name, version_name) content = @os.read_url(url) @parser.parse_package(package_name, version_name, nil, content) end |
#update_package(package_name, version_name) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/fig/repository.rb', line 82 def update_package(package_name, version_name) remote_fig_file = remote_fig_file_for_package(package_name, version_name) local_fig_file = local_fig_file_for_package(package_name, version_name) if @os.download(remote_fig_file, local_fig_file) install_package(package_name, version_name) end end |