Add librsync and dmd
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'net/http'
|
||||
require 'json'
|
||||
require_relative '../config/config'
|
||||
require 'term/ansicolor'
|
||||
|
||||
module SlackBuilder
|
||||
extend Term::ANSIColor
|
||||
|
||||
# Remote repository for a single package.
|
||||
class Repository
|
||||
# Request the latest tag in the given repository.
|
||||
def latest
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
|
||||
# Reads a remote LATEST file.
|
||||
class LatestText < Repository
|
||||
def initialize(latest_url)
|
||||
super()
|
||||
|
||||
@latest_url = latest_url
|
||||
end
|
||||
|
||||
def latest
|
||||
`./bin/slackbuilder text #{@latest_url}`.strip
|
||||
end
|
||||
end
|
||||
|
||||
module_function
|
||||
|
||||
# Checks if there is a new version for the package and returns the latest
|
||||
# version if an update is available, otherwise returns nil.
|
||||
def check_for_latest(package_name, repository)
|
||||
package = find_package_info package_name
|
||||
latest_version = repository.latest
|
||||
|
||||
if package.version == latest_version
|
||||
puts green "#{package_name} is up to date (Version #{package.version})."
|
||||
nil
|
||||
else
|
||||
puts red "#{package_name}: Current version is #{package.version}, #{latest_version} is available."
|
||||
latest_version
|
||||
end
|
||||
end
|
||||
|
||||
private_class_method def find_package_info(package_name)
|
||||
package_path = Pathname.new Dir.glob("#{CONFIG[:repository]}/*/#{package_name}").first
|
||||
package_category = package_path.dirname.basename.to_s
|
||||
Package.parse("#{package_category}/#{package_name}", File.read("#{package_path}/#{package_name}.info"))
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user