package rosa import ( "os" "hakurei.app/internal/pkg" ) // cureEtc contains deterministic elements of /etc, made available as part of // [Toolchain]. This silences test suites expecting certain standard files to be // available in /etc. type cureEtc struct{} // Cure writes hardcoded configuration to files under etc. func (cureEtc) Cure(t *pkg.TContext) (err error) { etc := t.GetWorkDir().Append("etc") if err = os.MkdirAll(etc.String(), 0700); err != nil { return } for _, f := range [][2]string{ {"hosts", "127.0.0.1 localhost cure cure-net\n"}, {"passwd", `root:x:0:0:System administrator:/proc/nonexistent:/bin/sh cure:x:1023:1023:Cure:/usr/src:/bin/sh nobody:x:65534:65534:Overflow user:/proc/nonexistent:/system/bin/false `}, {"group", `root:x:0: cure:x:1023: nobody:x:65534: `}, } { if err = os.WriteFile( etc.Append(f[0]).String(), []byte(f[1]), 0400, ); err != nil { return } } return os.Chmod(etc.String(), 0500) } // Kind returns the hardcoded [pkg.Kind] value. func (cureEtc) Kind() pkg.Kind { return kindEtc } // Params is a noop. func (cureEtc) Params(*pkg.IContext) {} // Dependencies returns a nil slice. func (cureEtc) Dependencies() []pkg.Artifact { return nil } // String returns a hardcoded reporting name. func (cureEtc) String() string { return "cure-etc" }