...
1 package internal
2
3 import (
4 "fmt"
5 "os"
6
7 "edge-infra.dev/pkg/f8n/devinfra/github/ghfs"
8 "edge-infra.dev/pkg/lib/build/apko"
9 )
10
11 type APKOFilePair struct {
12 APKODir string
13 APKOLocalTempDir string
14 APKOPath string
15 APKOFileMode string
16 APKOFileContent []byte
17 APKOFileLocalPath string
18 APKOLockPath string
19 APKOLockFileMode string
20 APKOLockFileContent []byte
21 APKOLockFileLocalPath string
22 }
23
24 var (
25 defaultGHFileMode = "100644"
26 )
27
28 func APKOPathToFilePair(fs *ghfs.FS, apkoDir string) (APKOFilePair, error) {
29 apkoFilePath := fmt.Sprintf("%s/%s", apkoDir, apko.APKOFileName)
30 apkoFileBytes, err := fs.ReadFile(apkoFilePath)
31 if err != nil {
32 return APKOFilePair{}, err
33 }
34
35 apkoLockPath := fmt.Sprintf("%s/%s", apkoDir, apko.APKOLockFileName)
36 apkoLockFileBytes, err := fs.ReadFile(apkoLockPath)
37 if err != nil {
38 return APKOFilePair{}, err
39 }
40
41 localAPKOTempDir, err := os.MkdirTemp("", "apko-tmp")
42 if err != nil {
43 return APKOFilePair{}, err
44 }
45
46 apkoTempFile, err := os.CreateTemp(localAPKOTempDir, apko.APKOFileName)
47 if err != nil {
48 return APKOFilePair{}, err
49 }
50 _, err = apkoTempFile.Write(apkoFileBytes)
51 if err != nil {
52 return APKOFilePair{}, err
53 }
54 apkoLockTempFile, err := os.CreateTemp(localAPKOTempDir, apko.APKOLockFileName)
55 if err != nil {
56 return APKOFilePair{}, err
57 }
58 _, err = apkoLockTempFile.Write(apkoLockFileBytes)
59 if err != nil {
60 return APKOFilePair{}, err
61 }
62
63 return APKOFilePair{
64 APKODir: apkoDir,
65 APKOPath: apkoFilePath,
66 APKOFileMode: defaultGHFileMode,
67 APKOFileContent: apkoFileBytes,
68 APKOFileLocalPath: apkoTempFile.Name(),
69 APKOLockPath: apkoLockPath,
70 APKOLockFileMode: defaultGHFileMode,
71 APKOLockFileContent: apkoLockFileBytes,
72 APKOLockFileLocalPath: apkoLockTempFile.Name(),
73 APKOLocalTempDir: localAPKOTempDir,
74 }, nil
75 }
76
View as plain text