pray-cli 1.16.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/lib/pray/apply_report.rb +49 -0
  4. data/lib/pray/cli/commands/init.rb +1 -20
  5. data/lib/pray/cli/commands/init_prayer.rb +76 -0
  6. data/lib/pray/cli/commands/init_prayer_manifest.rb +102 -0
  7. data/lib/pray/cli/commands/packages.rb +13 -2
  8. data/lib/pray/cli/commands/trust.rb +3 -3
  9. data/lib/pray/cli/commands/update_latest.rb +14 -16
  10. data/lib/pray/cli/commands/workflow.rb +5 -0
  11. data/lib/pray/cli/help.rb +52 -15
  12. data/lib/pray/cli/helpers.rb +13 -5
  13. data/lib/pray/cli/parse.rb +21 -1
  14. data/lib/pray/cli.rb +3 -1
  15. data/lib/pray/destination.rb +32 -2
  16. data/lib/pray/distribution.rb +94 -0
  17. data/lib/pray/format_serialize.rb +1 -4
  18. data/lib/pray/git_cache.rb +192 -0
  19. data/lib/pray/git_clone.rb +32 -0
  20. data/lib/pray/git_materialize.rb +76 -0
  21. data/lib/pray/git_run.rb +41 -0
  22. data/lib/pray/git_sources.rb +60 -145
  23. data/lib/pray/local_prayer.rb +38 -0
  24. data/lib/pray/lockfile.rb +8 -2
  25. data/lib/pray/manifest.rb +6 -3
  26. data/lib/pray/manifest_json.rb +1 -0
  27. data/lib/pray/manifest_parser_blocks.rb +15 -15
  28. data/lib/pray/materialize.rb +7 -1
  29. data/lib/pray/package_spec.rb +25 -13
  30. data/lib/pray/package_spec_render.rb +4 -3
  31. data/lib/pray/package_spec_version.rb +33 -0
  32. data/lib/pray/plan.rb +2 -1
  33. data/lib/pray/publish.rb +27 -2
  34. data/lib/pray/registry.rb +4 -15
  35. data/lib/pray/registry_http_cache.rb +17 -0
  36. data/lib/pray/render.rb +6 -36
  37. data/lib/pray/render_managed.rb +64 -0
  38. data/lib/pray/render_patch.rb +63 -12
  39. data/lib/pray/resolve.rb +6 -37
  40. data/lib/pray/resolve_local.rb +39 -0
  41. data/lib/pray/resolve_source.rb +5 -0
  42. data/lib/pray/serve.rb +15 -4
  43. data/lib/pray/serve_range.rb +36 -0
  44. data/lib/pray/torrent_manifest.rb +78 -0
  45. data/lib/pray/upstream_drift.rb +42 -0
  46. data/lib/pray/upstream_merge.rb +25 -0
  47. data/lib/pray/upstream_refresh.rb +28 -2
  48. data/lib/pray/verify.rb +2 -2
  49. data/lib/pray/version.rb +2 -2
  50. data/lib/pray.rb +10 -0
  51. metadata +17 -1
@@ -27,6 +27,11 @@ module Pray
27
27
  new_upstream = package.upstream
28
28
  return false unless new_upstream && package.declaration.path
29
29
 
30
+ local_content = local_content_for_refresh(package.root, package.spec)
31
+ if local_content.empty?
32
+ return materialize_empty_path_fork(project, package, previous, sources, git_sources, user_config, options, new_upstream)
33
+ end
34
+
30
35
  old_upstream = previous&.package&.find { |entry| entry.name == package.declaration.name }&.upstream
31
36
  return false unless old_upstream
32
37
  return false if old_upstream.version == new_upstream.version && old_upstream.tree_hash == new_upstream.tree_hash
@@ -40,6 +45,27 @@ module Pray
40
45
  true
41
46
  end
42
47
 
48
+ def materialize_empty_path_fork(project, package, previous, sources, git_sources, user_config, options, new_upstream)
49
+ new_package = resolve_named(
50
+ project.project_root, sources, git_sources, user_config, previous, options,
51
+ new_upstream.name, "= #{new_upstream.version}", new_upstream.source
52
+ )
53
+ new_content = content_file_bytes(new_package.root, new_package.spec)
54
+ write_content_files(package.root, {}, new_content)
55
+ write_refreshed_spec(package, new_package, {}, {}, new_content)
56
+ true
57
+ end
58
+
59
+ def local_content_for_refresh(root, spec)
60
+ paths = content_paths(spec.files)
61
+ return {} if paths.empty?
62
+
63
+ missing = paths.count { |relative| !File.file?(File.join(root, relative)) }
64
+ return {} if missing == paths.length
65
+
66
+ content_file_bytes(root, spec)
67
+ end
68
+
43
69
  def resolve_upstream_pair(project, previous, sources, git_sources, user_config, options, old_upstream, new_upstream)
44
70
  old_package = resolve_named(
45
71
  project.project_root, sources, git_sources, user_config, previous, options,
@@ -80,7 +106,6 @@ module Pray
80
106
  updated = PackageSpecRender.fork_spec_after_refresh(
81
107
  package.spec,
82
108
  new_package.spec,
83
- File.basename(spec_path),
84
109
  clean_replica?(old_content, local_content),
85
110
  merged.keys
86
111
  )
@@ -138,7 +163,8 @@ module Pray
138
163
  Transaction.write_file(File.join(root, relative), bytes)
139
164
  end
140
165
  end
141
- private_class_method :apply_one_path_upstream, :resolve_upstream_pair, :merge_fork_content,
166
+ private_class_method :apply_one_path_upstream, :materialize_empty_path_fork, :local_content_for_refresh,
167
+ :resolve_upstream_pair, :merge_fork_content,
142
168
  :write_refreshed_spec, :resolve_named
143
169
  end
144
170
  end
data/lib/pray/verify.rb CHANGED
@@ -83,10 +83,10 @@ module Pray
83
83
  message: "Package `#{package.declaration.name}` no longer matches the locked tree hash. Run `pray install` to re-resolve packages."
84
84
  )
85
85
  end
86
- if locked.version != package.spec.version
86
+ if locked.version != package.spec.recorded_version
87
87
  report.findings << VerificationFinding.new(
88
88
  kind: "verify_error",
89
- message: "Package `#{package.declaration.name}` resolved to version #{package.spec.version} but `Prayfile.lock` has #{locked.version}. Run `pray install` to refresh the lockfile."
89
+ message: "Package `#{package.declaration.name}` resolved to version #{package.spec.recorded_version} but `Prayfile.lock` has #{locked.version}. Run `pray install` to refresh the lockfile."
90
90
  )
91
91
  end
92
92
  else
data/lib/pray/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pray
4
- VERSION = "1.16.0"
5
- GENERATED_BY = "pray 1.16.0"
4
+ VERSION = "1.18.0"
5
+ GENERATED_BY = "pray 1.18.0"
6
6
  end
data/lib/pray.rb CHANGED
@@ -13,7 +13,13 @@ require_relative "pray/manifest"
13
13
  require_relative "pray/format_serialize"
14
14
  require_relative "pray/format_manifest"
15
15
  require_relative "pray/package_spec"
16
+ require_relative "pray/package_spec_version"
17
+ require_relative "pray/local_prayer"
16
18
  require_relative "pray/lockfile"
19
+ require_relative "pray/distribution"
20
+ require_relative "pray/torrent_manifest"
21
+ require_relative "pray/serve_range"
22
+ require_relative "pray/apply_report"
17
23
  require_relative "pray/config"
18
24
  require_relative "pray/dotenv"
19
25
  require_relative "pray/project_context"
@@ -27,13 +33,17 @@ require_relative "pray/resolve_tarball"
27
33
  require_relative "pray/invocation"
28
34
  require_relative "pray/git_refresh"
29
35
  require_relative "pray/resolve"
36
+ require_relative "pray/resolve_local"
30
37
  require_relative "pray/upstream"
31
38
  require_relative "pray/upstream_merge"
32
39
  require_relative "pray/package_spec_render"
33
40
  require_relative "pray/upstream_refresh"
41
+ require_relative "pray/upstream_drift"
34
42
  require_relative "pray/upstream_latest"
35
43
  require_relative "pray/compose_dest"
36
44
  require_relative "pray/render_patch"
45
+ require_relative "pray/render_content"
46
+ require_relative "pray/render_managed"
37
47
  require_relative "pray/render"
38
48
  require_relative "pray/render_dest"
39
49
  require_relative "pray/transaction"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pray-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Makarov
@@ -102,6 +102,7 @@ files:
102
102
  - bin/pray
103
103
  - lib/pray-cli.rb
104
104
  - lib/pray.rb
105
+ - lib/pray/apply_report.rb
105
106
  - lib/pray/archive.rb
106
107
  - lib/pray/archive_unpack.rb
107
108
  - lib/pray/auth_client.rb
@@ -110,6 +111,8 @@ files:
110
111
  - lib/pray/cli/commands/auth.rb
111
112
  - lib/pray/cli/commands/distribution.rb
112
113
  - lib/pray/cli/commands/init.rb
114
+ - lib/pray/cli/commands/init_prayer.rb
115
+ - lib/pray/cli/commands/init_prayer_manifest.rb
113
116
  - lib/pray/cli/commands/meta.rb
114
117
  - lib/pray/cli/commands/packages.rb
115
118
  - lib/pray/cli/commands/trust.rb
@@ -127,17 +130,23 @@ files:
127
130
  - lib/pray/constraint.rb
128
131
  - lib/pray/dependency_graph.rb
129
132
  - lib/pray/destination.rb
133
+ - lib/pray/distribution.rb
130
134
  - lib/pray/dotenv.rb
131
135
  - lib/pray/environment.rb
132
136
  - lib/pray/error.rb
133
137
  - lib/pray/format_manifest.rb
134
138
  - lib/pray/format_serialize.rb
139
+ - lib/pray/git_cache.rb
140
+ - lib/pray/git_clone.rb
141
+ - lib/pray/git_materialize.rb
135
142
  - lib/pray/git_refresh.rb
143
+ - lib/pray/git_run.rb
136
144
  - lib/pray/git_sources.rb
137
145
  - lib/pray/hashing.rb
138
146
  - lib/pray/http_body.rb
139
147
  - lib/pray/invocation.rb
140
148
  - lib/pray/literal.rb
149
+ - lib/pray/local_prayer.rb
141
150
  - lib/pray/lockfile.rb
142
151
  - lib/pray/lockfile_serialize.rb
143
152
  - lib/pray/manifest.rb
@@ -150,11 +159,13 @@ files:
150
159
  - lib/pray/materialize.rb
151
160
  - lib/pray/package_spec.rb
152
161
  - lib/pray/package_spec_render.rb
162
+ - lib/pray/package_spec_version.rb
153
163
  - lib/pray/path_safety.rb
154
164
  - lib/pray/plan.rb
155
165
  - lib/pray/project_context.rb
156
166
  - lib/pray/publish.rb
157
167
  - lib/pray/registry.rb
168
+ - lib/pray/registry_http_cache.rb
158
169
  - lib/pray/registry_install.rb
159
170
  - lib/pray/registry_integrity.rb
160
171
  - lib/pray/registry_paths.rb
@@ -162,16 +173,19 @@ files:
162
173
  - lib/pray/render_content.rb
163
174
  - lib/pray/render_dest.rb
164
175
  - lib/pray/render_layout.rb
176
+ - lib/pray/render_managed.rb
165
177
  - lib/pray/render_patch.rb
166
178
  - lib/pray/resolve.rb
167
179
  - lib/pray/resolve_context.rb
168
180
  - lib/pray/resolve_deps.rb
169
181
  - lib/pray/resolve_exports.rb
182
+ - lib/pray/resolve_local.rb
170
183
  - lib/pray/resolve_source.rb
171
184
  - lib/pray/resolve_tarball.rb
172
185
  - lib/pray/resource_limits.rb
173
186
  - lib/pray/serve.rb
174
187
  - lib/pray/serve_federation.rb
188
+ - lib/pray/serve_range.rb
175
189
  - lib/pray/session.rb
176
190
  - lib/pray/ssh_agent.rb
177
191
  - lib/pray/statement_surface.rb
@@ -179,6 +193,7 @@ files:
179
193
  - lib/pray/sync.rb
180
194
  - lib/pray/tar_validation.rb
181
195
  - lib/pray/terminal.rb
196
+ - lib/pray/torrent_manifest.rb
182
197
  - lib/pray/transaction.rb
183
198
  - lib/pray/transaction/journal.rb
184
199
  - lib/pray/transaction/owner.rb
@@ -187,6 +202,7 @@ files:
187
202
  - lib/pray/trust_feed.rb
188
203
  - lib/pray/trust_ops.rb
189
204
  - lib/pray/upstream.rb
205
+ - lib/pray/upstream_drift.rb
190
206
  - lib/pray/upstream_latest.rb
191
207
  - lib/pray/upstream_merge.rb
192
208
  - lib/pray/upstream_refresh.rb