(ctx context.Context, bk *engineutil.Client, ws *core.Workspace, lock *workspace.Lock)
| 1786 | } |
| 1787 | |
| 1788 | func exportWorkspaceLockToHost(ctx context.Context, bk *engineutil.Client, ws *core.Workspace, lock *workspace.Lock) error { |
| 1789 | lockBytes, err := lock.Marshal() |
| 1790 | if err != nil { |
| 1791 | return fmt.Errorf("marshal lock: %w", err) |
| 1792 | } |
| 1793 | |
| 1794 | lockPath, err := workspaceLockPath(ws) |
| 1795 | if err != nil { |
| 1796 | return err |
| 1797 | } |
| 1798 | |
| 1799 | tmpFile, err := os.CreateTemp("", "workspace-lock-*") |
| 1800 | if err != nil { |
| 1801 | return fmt.Errorf("create temp file: %w", err) |
| 1802 | } |
| 1803 | defer os.Remove(tmpFile.Name()) |
| 1804 | |
| 1805 | if _, err := tmpFile.Write(lockBytes); err != nil { |
| 1806 | tmpFile.Close() |
| 1807 | return fmt.Errorf("write temp file: %w", err) |
| 1808 | } |
| 1809 | if err := tmpFile.Close(); err != nil { |
| 1810 | return fmt.Errorf("close temp file: %w", err) |
| 1811 | } |
| 1812 | |
| 1813 | if err := bk.LocalFileExport(ctx, tmpFile.Name(), workspace.LockFileName, lockPath, true); err != nil { |
| 1814 | return fmt.Errorf("export lock: %w", err) |
| 1815 | } |
| 1816 | return nil |
| 1817 | } |
| 1818 | |
| 1819 | func (srv *Server) flushWorkspaceLocks(ctx context.Context, client *daggerClient) error { |
| 1820 | sess := client.daggerSession |
no test coverage detected