package internal import ( "fmt" "os" "edge-infra.dev/pkg/f8n/devinfra/github/ghfs" "edge-infra.dev/pkg/lib/build/apko" ) type APKOFilePair struct { APKODir string APKOLocalTempDir string APKOPath string APKOFileMode string APKOFileContent []byte APKOFileLocalPath string APKOLockPath string APKOLockFileMode string APKOLockFileContent []byte APKOLockFileLocalPath string } var ( defaultGHFileMode = "100644" ) func APKOPathToFilePair(fs *ghfs.FS, apkoDir string) (APKOFilePair, error) { apkoFilePath := fmt.Sprintf("%s/%s", apkoDir, apko.APKOFileName) apkoFileBytes, err := fs.ReadFile(apkoFilePath) if err != nil { return APKOFilePair{}, err } apkoLockPath := fmt.Sprintf("%s/%s", apkoDir, apko.APKOLockFileName) apkoLockFileBytes, err := fs.ReadFile(apkoLockPath) if err != nil { return APKOFilePair{}, err } localAPKOTempDir, err := os.MkdirTemp("", "apko-tmp") if err != nil { return APKOFilePair{}, err } apkoTempFile, err := os.CreateTemp(localAPKOTempDir, apko.APKOFileName) if err != nil { return APKOFilePair{}, err } _, err = apkoTempFile.Write(apkoFileBytes) if err != nil { return APKOFilePair{}, err } apkoLockTempFile, err := os.CreateTemp(localAPKOTempDir, apko.APKOLockFileName) if err != nil { return APKOFilePair{}, err } _, err = apkoLockTempFile.Write(apkoLockFileBytes) if err != nil { return APKOFilePair{}, err } return APKOFilePair{ APKODir: apkoDir, APKOPath: apkoFilePath, APKOFileMode: defaultGHFileMode, APKOFileContent: apkoFileBytes, APKOFileLocalPath: apkoTempFile.Name(), APKOLockPath: apkoLockPath, APKOLockFileMode: defaultGHFileMode, APKOLockFileContent: apkoLockFileBytes, APKOLockFileLocalPath: apkoLockTempFile.Name(), APKOLocalTempDir: localAPKOTempDir, }, nil }