Module: Pray::Plan
- Defined in:
- lib/pray/plan.rb
Defined Under Namespace
Classes: MaterializationPreview
Class Method Summary collapse
- .build_materialization_preview(project, rendered, lockfile, lockfile_path, previous_lockfile) ⇒ Object
- .lockfile_change_status(lockfile_path, lockfile) ⇒ Object
- .package_summary_lines(previous_lockfile, lockfile, _project) ⇒ Object
- .print_materialization_report(preview, mode) ⇒ Object
- .provisioned_change(project, file) ⇒ Object
- .target_change(project, target) ⇒ Object
Class Method Details
.build_materialization_preview(project, rendered, lockfile, lockfile_path, previous_lockfile) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/pray/plan.rb', line 13 def build_materialization_preview(project, rendered, lockfile, lockfile_path, previous_lockfile) MaterializationPreview.new( package_lines: package_summary_lines(previous_lockfile, lockfile, project), lockfile: lockfile_change_status(lockfile_path, lockfile), targets: rendered.map { |target| target_change(project, target) }, provisioned: Render.planned_provisioned_files(project).map { |file| provisioned_change(project, file) }, warnings: [] ) end |
.lockfile_change_status(lockfile_path, lockfile) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/pray/plan.rb', line 52 def lockfile_change_status(lockfile_path, lockfile) return "create" unless File.exist?(lockfile_path) existing = Pray.read_lockfile(lockfile_path) Pray.lockfiles_equivalent?(lockfile, existing) ? "unchanged" : "update" end |
.package_summary_lines(previous_lockfile, lockfile, _project) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/pray/plan.rb', line 36 def package_summary_lines(previous_lockfile, lockfile, _project) if previous_lockfile.nil? lockfile.package.map do |entry| "Package #{entry.name} #{entry.version} (new)" end else lockfile.package.filter_map do |entry| previous = previous_lockfile.package.find { |package| package.name == entry.name } next "Package #{entry.name} #{entry.version} (new)" unless previous next if previous.version == entry.version && previous.tree_hash == entry.tree_hash "Package #{entry.name} #{previous.version} -> #{entry.version}" end end end |
.print_materialization_report(preview, mode) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/pray/plan.rb', line 23 def print_materialization_report(preview, mode) puts (mode == :plan) ? "Plan" : "Install" preview.package_lines.each { |line| puts line } puts "Lockfile: #{preview.lockfile}" preview.targets.each do |path, change| puts "Target #{path}: #{change}" end preview.provisioned.each do |path, change| puts "Provisioned #{path}: #{change}" end preview.warnings.each { |warning| puts "Warning: #{warning}" } end |
.provisioned_change(project, file) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/pray/plan.rb', line 71 def provisioned_change(project, file) destination = File.join(project.project_root, file.path) change = if !File.exist?(destination) "write" elsif FileUtils.compare_file(destination, file.source) "unchanged" else "update" end [file.path, change] end |
.target_change(project, target) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pray/plan.rb', line 59 def target_change(project, target) path = File.join(project.project_root, target.path) change = if !File.exist?(path) "write" elsif File.read(path) == target.content "unchanged" else "update" end [target.path, change] end |