···1212 "time"
13131414 "forgejo.org/modules/log"
1515+ "forgejo.org/modules/optional"
1516 "forgejo.org/modules/user"
1616- "forgejo.org/modules/util"
1717)
18181919var ForgejoVersion = "1.0.0"
···162162 // The following is a purposefully undocumented option. Please do not run Forgejo as root. It will only cause future headaches.
163163 // Please don't use root as a bandaid to "fix" something that is broken, instead the broken thing should instead be fixed properly.
164164 unsafeAllowRunAsRoot := ConfigSectionKeyBool(rootSec, "I_AM_BEING_UNSAFE_RUNNING_AS_ROOT")
165165- unsafeAllowRunAsRoot = unsafeAllowRunAsRoot || util.OptionalBoolParse(os.Getenv("GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT")).Value()
165165+ unsafeAllowRunAsRoot = unsafeAllowRunAsRoot || optional.ParseBool(os.Getenv("GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT")).Value()
166166 RunMode = os.Getenv("GITEA_RUN_MODE")
167167 if RunMode == "" {
168168 RunMode = rootSec.Key("RUN_MODE").MustString("prod")
-11
modules/util/util.go
···1414 "strconv"
1515 "strings"
16161717- "forgejo.org/modules/optional"
1818-1917 "golang.org/x/crypto/ssh"
2018 "golang.org/x/text/cases"
2119 "golang.org/x/text/language"
2220)
2323-2424-// OptionalBoolParse get the corresponding optional.Option[bool] of a string using strconv.ParseBool
2525-func OptionalBoolParse(s string) optional.Option[bool] {
2626- v, e := strconv.ParseBool(s)
2727- if e != nil {
2828- return optional.None[bool]()
2929- }
3030- return optional.Some(v)
3131-}
32213322// IsEmptyString checks if the provided string is empty
3423func IsEmptyString(s string) bool {
-14
modules/util/util_test.go
···1111 "strings"
1212 "testing"
13131414- "forgejo.org/modules/optional"
1514 "forgejo.org/modules/test"
1615 "forgejo.org/modules/util"
1716···179178 require.NoError(t, err)
180179181180 assert.NotEqual(t, bytes3, bytes4)
182182-}
183183-184184-func TestOptionalBoolParse(t *testing.T) {
185185- assert.Equal(t, optional.None[bool](), util.OptionalBoolParse(""))
186186- assert.Equal(t, optional.None[bool](), util.OptionalBoolParse("x"))
187187-188188- assert.Equal(t, optional.Some(false), util.OptionalBoolParse("0"))
189189- assert.Equal(t, optional.Some(false), util.OptionalBoolParse("f"))
190190- assert.Equal(t, optional.Some(false), util.OptionalBoolParse("False"))
191191-192192- assert.Equal(t, optional.Some(true), util.OptionalBoolParse("1"))
193193- assert.Equal(t, optional.Some(true), util.OptionalBoolParse("t"))
194194- assert.Equal(t, optional.Some(true), util.OptionalBoolParse("True"))
195181}
196182197183// Test case for any function which accepts and returns a single string.