Class: Papers::ManifestUpdater
Instance Method Summary
collapse
#blank?, #build_header, #ensure_valid_url, #gem_entry, #gem_name_and_version, #get_installed_bower_components, #get_installed_gems, #get_installed_javascripts, #get_installed_npm_packages, #initialize, #manifest_exists?
Instance Method Details
#delete_gems(result_gems, manifest_names) ⇒ Object
89
90
91
92
93
94
95
96
|
# File 'lib/papers/manifest_updater.rb', line 89
def delete_gems(result_gems, manifest_names)
manifest_names.each do |(gem_name, gem_key)|
if gemspecs.none? { |gem| gem.name == gem_name }
result_gems.delete(gem_key)
end
end
end
|
#gemspecs ⇒ Object
109
110
111
|
# File 'lib/papers/manifest_updater.rb', line 109
def gemspecs
@gemspecs ||= Bundler.load.specs.dup
end
|
#manifest_names(result_gems) ⇒ Object
102
103
104
105
106
107
|
# File 'lib/papers/manifest_updater.rb', line 102
def manifest_names(result_gems)
result_gems.reduce({}) do |hash, (key, _)|
hash[name_from_key(key)] = key
hash
end
end
|
#name_from_key(key) ⇒ Object
98
99
100
|
# File 'lib/papers/manifest_updater.rb', line 98
def name_from_key(key)
key.include?("-") ? key.rpartition("-").first : key
end
|
#new_gem(result_gems, gemspec) ⇒ Object
85
86
87
|
# File 'lib/papers/manifest_updater.rb', line 85
def new_gem(result_gems, gemspec)
result_gems[gem_name_and_version(gemspec)] = gem_entry(gemspec)
end
|
#update ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/papers/manifest_updater.rb', line 23
def update
raise Papers::FileMissingError.new(@manifest_path) unless manifest_exists?
original_content = File.read(@manifest_path)
result = YAML.load(original_content)
update_gems(result)
update_javascript(result, "javascripts", get_installed_javascripts)
update_javascript(result, "bower_components", get_installed_bower_components)
update_javascript(result, "npm_packages", get_installed_npm_packages)
+ YAML.dump(result)
end
|
#update! ⇒ Object
14
15
16
17
18
19
20
21
|
# File 'lib/papers/manifest_updater.rb', line 14
def update!
updated_content = update
File.open(@manifest_path, 'w') do |file|
file.write(updated_content)
end
puts "Updated #{@manifest_path}! Run your tests and check your diffs!"
end
|
#update_gem(result_gems, gemspec, manifest_gem_key) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/papers/manifest_updater.rb', line 70
def update_gem(result_gems, gemspec, manifest_gem_key)
manifest_gem = result_gems.delete(manifest_gem_key)
if gemspec.license && gemspec.license != manifest_gem["license"]
new_licenses = gemspec.licenses || []
new_licenses << gemspec.license
new_licenses.uniq!
manifest_gem["license"] = "License Change! Was '#{manifest_gem["license"]}', is now #{new_licenses}"
end
name = gem_name_and_version(gemspec)
name = gemspec.name if gemspec.name == manifest_gem_key
result_gems[name] = manifest_gem
end
|
#update_gems(result) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/papers/manifest_updater.rb', line 37
def update_gems(result)
result_gems = result["gems"]
return unless result_gems
manifest_names = manifest_names(result_gems)
gemspecs.each do |gemspec|
if manifest_gem_key = manifest_names[gemspec.name]
update_gem(result_gems, gemspec, manifest_gem_key)
else
new_gem(result_gems, gemspec)
end
end
delete_gems(result_gems, manifest_names)
end
|
#update_javascript(result, key, installed) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/papers/manifest_updater.rb', line 53
def update_javascript(result, key, installed)
existing = result[key]
return unless existing && installed
removed = existing.keys - installed.keys
installed.merge!(existing)
removed.each do |remove|
installed.delete(remove)
end
result[key] = installed
end
|