Export the reviewed allowlisted snapshot from private source commit 07c1655921f21ee5e4fc4d85639d199e8867b17d. This records the Docker Compose activation, schema-compatible rollback, and stateful migration resource findings from Observatory Preview 19 dogfooding. AI-Assisted: OpenAI Codex Signed-off-by: Cole Speelman <crspeelman@gmail.com>
39 lines
743 B
Go
39 lines
743 B
Go
//go:build linux
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
package deploy
|
|
|
|
import (
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
type fileIdentity struct {
|
|
mode os.FileMode
|
|
uid, gid int
|
|
owned bool
|
|
}
|
|
|
|
func identityFor(info os.FileInfo, fallback os.FileMode) fileIdentity {
|
|
identity := fileIdentity{mode: fallback}
|
|
if info == nil {
|
|
return identity
|
|
}
|
|
identity.mode = info.Mode().Perm()
|
|
if stat, ok := info.Sys().(*syscall.Stat_t); ok {
|
|
identity.uid = int(stat.Uid)
|
|
identity.gid = int(stat.Gid)
|
|
identity.owned = true
|
|
}
|
|
return identity
|
|
}
|
|
func applyIdentity(file *os.File, identity fileIdentity) error {
|
|
if identity.owned {
|
|
if err := file.Chown(identity.uid, identity.gid); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return file.Chmod(identity.mode)
|
|
}
|