client.printSnapshotList(option[:all]);
when "changelog" then
client = Client.new(option[:url], nil, nil);
- client.printChangeLog();
+ if option[:snapshot].nil?() then
+ client.printChangeLog();
+ else
+ client.printChangeLog(option[:snapshot][0], option[:snapshot][1]);
+ end
else
raise RuntimeError, "Input is incorrect : #{option[:cmd]}"
end
--- /dev/null
+class FileUtil
+ public
+ def FileUtil.getFileNameFromURL(url)
+ fileName = url.split('/')[-1]
+ return fileName
+ end
+
+ public
+ def FileUtil.getFlatURL(url)
+ if url.nil? or url.empty? then
+ return ""
+ end
+
+ return url.delete(".:/@")
+ end
+end
\ No newline at end of file
+require "SnapshotController"
+require "PackageServerConstants"
+require "ftools"
+
+$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
+require "FileUtil"
+
class ChangeLogController
+ def initialize(serverURL, ssController)
+ @serverUrl = serverURL
+ @ssController = ssController
+ end
+
+ ##Get
+ public
+ def getLatestChangeLog()
+ recentSnapshotName = @ssController.getLatestSnapshot().getName();
+ return getChangeLog(recentSnapshotName)
+ end
+
+ public
+ def getChangeLog(snapshotName)
+ logPath = downloadChangeLog(snapshotName)
+
+ if (logPath.nil?() || !File.exist?(logPath)) then
+ return;
+ end
+
+
+ return loadChangeLog(logPath);
+ end
+
+ public
+ def getTotalChangeLog(startSnapshotName, endSnapshotName)
+ if (endSnapshotName.nil?())
+ return;
+ elsif (endSnapshotName.nil?())
+ return getChangeLog(startSnapshot);
+ else
+ changeLog = String.new
+
+ totalSnapshotList = @ssController.getTotalSnapshotName(startSnapshotName,endSnapshotName)
+ totalSnapshotList.each() do |snapshotName|
+ changeLog = changeLog + getChangeLog(snapshotName) + "\n"
+ end
+
+ return changeLog
+ end
+ end
+
+ private
+ def downloadChangeLog(snapshotName)
+ changeLogURLPath = getChangeLogURLPath(snapshotName)
+
+ localPath = getChangeLogPath()
+
+ File.makedirs(localPath)
+
+ logger = DummyLog.new()
+
+ if (FileDownLoader.download(changeLogURLPath,localPath,logger)) then
+ return File.join(localPath, getChangeLogFile(snapshotName))
+ else
+ return nil
+ end
+ end
+
+ private
+ def getChangeLogPath()
+ flatServerName = FileUtil.getFlatURL(@serverUrl)
+ return File.join(PackageServerConfig::CONFIG_PATH, flatServerName, PackageServerConstants::CHANGE_LOG_DIRECTORY_NAME)
+ end
+
+ private
+ def getChangeLogURLPath(snapshotName)
+ changeLogURLPath = File.join(@serverUrl, PackageServerConstants::CHANGE_LOG_DIRECTORY_NAME, getChangeLogFile(snapshotName));
+
+ return changeLogURLPath
+ end
+
+ private
+ def getChangeLogFile(snapshotName)
+ if (snapshotName.nil?() || snapshotName.empty?())
+ return ""
+ end
+ return snapshotName + PackageServerConstants::CHANGE_LOG_FILE_EXTENSION
+ end
+
+ private
+ def loadChangeLog(logPath)
+ changeLog = String.new
+
+ file = File.open(logPath,"r")
+ file.each_line do |line|
+ changeLog = changeLog + line
+ end
+
+ return changeLog
+ end
end
\ No newline at end of file
class PackageServerConstants
- CHANGE_LOG_PATH_FROM_DISTRIBUTION = "changes"
+ #changelog information
+ CHANGE_LOG_DIRECTORY_NAME = "changes"
+ CHANGE_LOG_FILE_EXTENSION = ".log"
+
+ #distribution information
DISTRIBUTION_INFO_FILE_NAME = "distribution.info"
#snapshot information
attr_accessor :snapshotList
def initialize(snapshotFilePath)
@snapshotList = Array.new
+
+ if (File.directory? snapshotFilePath) then
+ snapshotFilePath = File.join(snapshotFilePath, PackageServerConstants::SNAPSHOT_INFO_FILE_NAME)
+ end
loadSnapshot(snapshotFilePath)
end
manualSnapshotList = Array.new
@snapshotList.each() do |snapshot|
- if (snapshot.getValue(PackageServerConstants::SNAPSHOT_TYPE_FIELD).eql?(PackageServerConstants::SNAPSHOT_MANUAL_TYPE_VALUE)) then
+ if (snapshot.getType().eql?(PackageServerConstants::SNAPSHOT_MANUAL_TYPE_VALUE)) then
manualSnapshotList.push(snapshot[name])
end
end
return manualSnapshotList
end
+ public
+ def getLatestSnapshot
+ return @snapshotList.pop()
+ end
+
+ public
+ def getTotalSnapshotName(startSnapshotName, endSnapshotName)
+ totalSnapshotList = Array.new
+
+ @snapshotList.each() do |snapshot|
+ snapshotName = snapshot.getName()
+ if (snapshotName.eql?(startSnapshotName) || snapshotName.eql?(endSnapshotName)) then
+ if (totalSnapshotList.empty?) then
+ totalSnapshotList.push(snapshotName)
+ else
+ break
+ end
+ end
+
+ if (not totalSnapshotList.empty?) then
+ totalSnapshotList.push(snapshotName)
+ end
+ end
+
+ return totalSnapshotList
+ end
+
private
def loadSnapshot(snapshotPath)
+ if not File.exist?(snapshotPath) then
+ return;
+ end
+
parser = PropertyParser.new(nil)
propertySection = parser.parseFile(snapshotPath);
require "FileTransferViaDirect"
require 'digest'
require "SnapshotController"
+require "ChangeLogController"
require 'PackageServerConstants'
+
$update_mutex = Mutex.new
$get_snapshot_mutex = Mutex.new
$cache_mutex = Mutex.new
##Print change log to console.
public
def printChangeLog(snapshot1 = nil, snapshot2 = nil)
- changeLogController = ChangeLogController.new()
+ snapshotPath = File.join(@config_dist_path, PackageServerConstants::SNAPSHOT_INFO_FILE_NAME)
+ @log.info("Read information of snapshot from " + snapshotPath);
+
+ ssController = SnapshotController.new(snapshotPath);
+ changeLogController = ChangeLogController.new(@server_addr, ssController)
+
if (snapshot1.nil?()) then
- changeLogController.getRecentLog();
+ changeLog = changeLogController.getLatestChangeLog();
elsif snapshot2.nil?() then
- changeLogController.getLog(snapshot1);
+ changeLog = changeLogController.getChangeLog(snapshot1);
else
- changeLogController.getLog(snapshot1, snapshot2);
+ changeLog = changeLogController.getTotalChangeLog(snapshot1, snapshot2);
end
+ puts changeLog
end
##Print snapshot list to console.
end
result.each() do |snapshot|
- puts PackageServerConstants::SNAPSHOT_NAME_FIELD + ": " + snapshot.getValue(PackageServerConstants::SNAPSHOT_NAME_FIELD)
- puts PackageServerConstants::SNAPSHOT_TIME_FIELD + ": " + snapshot.getValue(PackageServerConstants::SNAPSHOT_TIME_FIELD)
+ puts PackageServerConstants::SNAPSHOT_NAME_FIELD + ": " + snapshot.getName()
+ puts PackageServerConstants::SNAPSHOT_TIME_FIELD + ": " + snapshot.getTime()
puts
end
+ "\t" + "list-rpkg Show the all packages in the package-server." + "\n" \
+ "\t" + "show-lpkg Show the package in your SDK environment." + "\n" \
+ "\t" + "list-lpkg Show the all packages in your SDK environment." + "\n" \
+ + "\t" + "snapshotlist Show the snapshot list in your SDK environment." + "\n" \
+ + "\t" + "changelog Show the change log in your SDK environment." + "\n" \
+ "\t" + "build-dep Show build-dependency packages" + "\n" \
+ "\t" + "install-dep Show install-dependency packages" + "\n" \
+ "\n" + "Subcommand usage:" + "\n" \
+ "\t" + "pkg-cli list-rpkg -u <package server url> [-o <os>]" + "\n" \
+ "\t" + "pkg-cli show-lpkg -P <package name> [-l <location>]" + "\n" \
+ "\t" + "pkg-cli list-lpkg [-l <location>]" + "\n" \
+ + "\t" + "pkg-cli snapshotlist -u <package server url> [--all]" + "\n" \
+ + "\t" + "pkg-cli changelog -u <package server url> [-snapshot <snapshot name,snapshot name>]" + "\n" \
+ "\t" + "pkg-cli build-dep -P <package name> -u <package server url> [-o <os>]" + "\n" \
+ "\t" + "pkg-cli install-dep -P <package name> -u <package server url> [-o <os>]" + "\n" \
+ "\t" + "pkg-cli register -P <package file path> -a <server address> -d <distribution name> -w <password>" + "\n" \
optparse = OptionParser.new(nil, 32, ' '*8) do|opts|
# Set a banner, displayed at the top
# of the help screen.
+
opts.banner = banner
opts.on('--all', 'show all information') do
options[:all] = true
end
+
+ opts.on('-s', '--snapshot snapshotName1,snapshotName2', Array, 'snapshot name') do |snapshotName|
+ puts snapshotName[0], snapshotName[1]
+ options[:snapshot] = snapshotName
+ end
end
@properties = properties;
end
- public
+ private
def getValue(key)
properties.each() do |property|
if property.key().eql?(key) then
return nil;
end
+
+ public
+ def getName
+ return getValue(PackageServerConstants::SNAPSHOT_NAME_FIELD)
+ end
+
+ public
+ def getTime
+ return getValue(PackageServerConstants::SNAPSHOT_TIME_FIELD)
+ end
+
+ public
+ def getType
+ return getValue(PackageServerConstants::SNAPSHOT_TYPE_FIELD)
+ end
+
+ public
+ def getPath
+ return getValue(PackageServerConstants::SNAPSHOT_PATH_FIELD)
+ end
end
\ No newline at end of file
require "utils"
class PackageServerConfig
+
CONFIG_ROOT = "#{Utils::HOME}/.build_tools"
+ CONFIG_PATH = "#{PackageServerConfig::CONFIG_ROOT}/client"
+
end