github.com/safing/portbase@v0.19.5/utils/renameio/example_test.go (about) 1 package renameio_test 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/safing/portbase/utils/renameio" 8 ) 9 10 func ExampleTempFile_justone() { //nolint:testableexamples 11 persist := func(temperature float64) error { 12 t, err := renameio.TempFile("", "/srv/www/metrics.txt") 13 if err != nil { 14 return err 15 } 16 defer func() { 17 _ = t.Cleanup() 18 }() 19 if _, err := fmt.Fprintf(t, "temperature_degc %f\n", temperature); err != nil { 20 return err 21 } 22 return t.CloseAtomicallyReplace() 23 } 24 // Thanks to the write package, a webserver exposing /srv/www never 25 // serves an incomplete or missing file. 26 if err := persist(31.2); err != nil { 27 log.Fatal(err) 28 } 29 } 30 31 func ExampleTempFile_many() { //nolint:testableexamples 32 // Prepare for writing files to /srv/www, effectively caching calls to 33 // TempDir which TempFile would otherwise need to make. 34 dir := renameio.TempDir("/srv/www") 35 persist := func(temperature float64) error { 36 t, err := renameio.TempFile(dir, "/srv/www/metrics.txt") 37 if err != nil { 38 return err 39 } 40 defer func() { 41 _ = t.Cleanup() 42 }() 43 if _, err := fmt.Fprintf(t, "temperature_degc %f\n", temperature); err != nil { 44 return err 45 } 46 return t.CloseAtomicallyReplace() 47 } 48 49 // Imagine this was an endless loop, reading temperature sensor values. 50 // Thanks to the write package, a webserver exposing /srv/www never 51 // serves an incomplete or missing file. 52 for { 53 if err := persist(31.2); err != nil { 54 log.Fatal(err) 55 } 56 } 57 }