...

Source file src/edge-infra.dev/hack/tools/apko-updater-bot/internal/utils.go

Documentation: edge-infra.dev/hack/tools/apko-updater-bot/internal

     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