Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ pkg/
/.yardoc/
test/gem_home
tmp/

Gemfile.lock
33 changes: 20 additions & 13 deletions lib/autoproj/installation_manifest.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,41 +99,48 @@ def find_package_by_name(name)
end

def load(path = @path)
@packages = Hash.new
raw = YAML.load(File.open(path))
if raw.respond_to?(:to_str) # old CSV-based format
CSV.read(path).map do |row|
name, srcdir, prefix, builddir = *row
builddir = nil if builddir && builddir.empty?
packages[name] = Package.new(name, srcdir, prefix, builddir, [])
end
@packages = load_from_csv(path)
save(path)
else
raw.each do |entry|
return
end

@packages, @package_sets =
raw.each_with_object([{}, {}]) do |entry, (pkgs, pkg_sets)|
if entry["package_set"]
pkg_set = PackageSet.new(
entry["package_set"], entry["vcs"], entry["raw_local_dir"], entry["user_local_dir"]
)
package_sets[pkg_set.name] = pkg_set
pkg_sets[pkg_set.name] = pkg_set
else
manifest = load_manifest(entry["manifest"])
manifest = load_manifest(entry["manifest"] || {})
pkg = Package.new(
entry["name"], entry["type"], entry["vcs"], entry["srcdir"], entry["importdir"],
entry["prefix"], entry["builddir"], entry["logdir"], entry["dependencies"],
manifest
)
packages[pkg.name] = pkg
pkgs[pkg.name] = pkg
end
end
end

def load_from_csv(path)
packages = {}
CSV.read(path).map do |row|
name, srcdir, prefix, builddir = *row
builddir = nil if builddir && builddir.empty?
packages[name] = Package.new(name, srcdir, prefix, builddir, [])
end
packages
end

def load_manifest(entry)
entry = entry.dup
%w[authors maintainers rock_maintainers].each do |field|
entry[field] = load_contact_list(entry[field])
entry[field] = load_contact_list(entry[field] || [])
end
entry["dependencies"] = load_manifest_dependencies(entry["dependencies"])
entry["dependencies"] = load_manifest_dependencies(entry["dependencies"] || [])

Manifest.new(**entry.transform_keys(&:to_sym))
end
Expand Down
8 changes: 4 additions & 4 deletions test/cli/test_watch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,19 +60,19 @@ module CLI
@pkg_set_manifest_file = File.join(pkg_set_manifest_dir,
"tools", "package.xml")

FileUtils.touch(manifest_file)
FileUtils.touch(ros_manifest_file)
File.write(manifest_file, "<package />")
File.write(ros_manifest_file, "<package />")
FileUtils.touch(autobuild_file)
FileUtils.touch(ruby_file)
FileUtils.mkdir_p(File.join(pkg_set_manifest_dir, "tools"))
FileUtils.touch(pkg_set_manifest_file)
File.write(pkg_set_manifest_file, "<package />")
sleep 0.1
cli.update_workspace
cli.setup_notifier
cli.start_watchers
end
after do
cli.cleanup_notifier
cli.cleanup_notifier if cli.notifier
end

def process_events
Expand Down
Loading