github.com/google/osv-scalibr@v0.4.1/guidedremediation/internal/lockfile/lockfile.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Package lockfile provides methods for parsing and writing lockfiles. 16 package lockfile 17 18 import ( 19 "deps.dev/util/resolve" 20 scalibrfs "github.com/google/osv-scalibr/fs" 21 "github.com/google/osv-scalibr/guidedremediation/result" 22 "github.com/google/osv-scalibr/guidedremediation/strategy" 23 ) 24 25 // ReadWriter is the interface for parsing and applying remediation patches to a lockfile. 26 type ReadWriter interface { 27 System() resolve.System 28 Read(path string, fsys scalibrfs.FS) (*resolve.Graph, error) 29 SupportedStrategies() []strategy.Strategy 30 31 // Write writes the lockfile after applying the patches to outputPath. 32 // 33 // path is the path to the original (unpatched) lockfile in fsys. 34 // outputPath is the path on disk (*not* in fsys) to write the entire patched lockfile to (this can overwrite the original lockfile). 35 Write(path string, fsys scalibrfs.FS, patches []result.Patch, outputPath string) error 36 }