hexpm / hex

Package manager for the Erlang ecosystem.
https://hex.pm
976 stars 187 forks source link

CI env variable displays warning if it's a string #1054

Open altdsoy opened 1 week ago

altdsoy commented 1 week ago

Hello,

I'm not sure if the description is good enough, but I'm using a CI tool (Woodpecker CI) that injects the CI ENV variable with a string value.

It seems that when hex is checking its configuration it also checks this ENV.

In the following commit: https://github.com/hexpm/hex/commit/5eb05bdeb1e2632c67ff1ae44448a0c38617cf7a , its value is checked against a boolean:

def to_boolean(nil), do: {:ok, nil}
def to_boolean(false), do: {:ok, false}
def to_boolean(true), do: {:ok, true}
def to_boolean("0"), do: {:ok, false}
def to_boolean("1"), do: {:ok, true}
def to_boolean("false"), do: {:ok, false}
def to_boolean("true"), do: {:ok, true}
def to_boolean("FALSE"), do: {:ok, false}
def to_boolean("TRUE"), do: {:ok, true}
def to_boolean(_), do: :error

In my case because I don't have control on this ENV variable, Hex ends up considering it's an error and I'm getting an annoying warning on every mix command in my CI pipeline:

Invalid Hex config, falling back to default. Source: environment variable CI= "woodpecker".

I would like to open a PR but I wanted to discuss for an idiomatic way to solve this.

We can simply assume a truthy value for this ENV in particular (maybe using something like to_truthy_boolean) ?