All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 34s
				
			Test / Sandbox (push) Successful in 2m9s
				
			Test / Hpkg (push) Successful in 3m58s
				
			Test / Sandbox (race detector) (push) Successful in 4m31s
				
			Test / Hakurei (race detector) (push) Successful in 5m19s
				
			Test / Hakurei (push) Successful in 2m12s
				
			Test / Flake checks (push) Successful in 1m31s
				
			This corrects minor mistakes in doc comments and adds them for undocumented constants. Signed-off-by: Ophestra <cat@gensokyo.uk>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package hst
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/gob"
 | 
						|
	"path"
 | 
						|
 | 
						|
	"hakurei.app/container/check"
 | 
						|
)
 | 
						|
 | 
						|
func init() { gob.Register(new(FSLink)) }
 | 
						|
 | 
						|
// FilesystemLink is the type string of a symbolic link.
 | 
						|
const FilesystemLink = "link"
 | 
						|
 | 
						|
// FSLink represents a symlink in the container filesystem.
 | 
						|
type FSLink struct {
 | 
						|
	// Pathname in the container mount namespace.
 | 
						|
	Target *check.Absolute `json:"dst"`
 | 
						|
	// Arbitrary linkname value store in the symlink.
 | 
						|
	Linkname string `json:"linkname"`
 | 
						|
	// Whether to treat Linkname as an absolute pathname and dereference before creating the link.
 | 
						|
	Dereference bool `json:"dereference,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
func (l *FSLink) Valid() bool {
 | 
						|
	if l == nil || l.Target == nil || l.Linkname == "" {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
	return !l.Dereference || path.IsAbs(l.Linkname)
 | 
						|
}
 | 
						|
 | 
						|
func (l *FSLink) Path() *check.Absolute {
 | 
						|
	if !l.Valid() {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return l.Target
 | 
						|
}
 | 
						|
 | 
						|
func (l *FSLink) Host() []*check.Absolute { return nil }
 | 
						|
 | 
						|
func (l *FSLink) Apply(z *ApplyState) {
 | 
						|
	if !l.Valid() {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	z.Link(l.Target, l.Linkname, l.Dereference)
 | 
						|
}
 | 
						|
 | 
						|
func (l *FSLink) String() string {
 | 
						|
	if !l.Valid() {
 | 
						|
		return "<invalid>"
 | 
						|
	}
 | 
						|
 | 
						|
	var dereference string
 | 
						|
	if l.Dereference {
 | 
						|
		if l.Target.String() == l.Linkname {
 | 
						|
			return l.Target.String() + "@"
 | 
						|
		}
 | 
						|
		dereference = "*"
 | 
						|
	}
 | 
						|
	return l.Target.String() + " -> " + dereference + l.Linkname
 | 
						|
}
 |