Sure thing. Here you go. https://github.com/hovsater/custom_envs

Feel free to reach out if anything is unclear. What we're trying to achieve 
is basically change the default environment from `dev` to `local`. And the 
default test environment from `test` to `ci`.

Thanks,
Kevin

On Saturday, October 1, 2022 at 11:37:41 AM UTC+2 José Valim wrote:

> Can you upload a very small mix new repo to GitHub with what you tried 
> pls? :)
>
> On Sat, Oct 1, 2022 at 11:08 AM Kevin Hovsäter <ke...@hovsater.com> wrote:
>
>> Got it! I just tried making an alias called "test" that points to "
>> test.ci" and then I defined as task within lib/mix/tasks/test.ci.ex 
>> containing the following code:
>>
>> defmodule Mix.Tasks.Test.Ci do
>>   use Mix.Task
>>
>>   @preferred_cli_env :ci
>>
>>   @impl Mix.Task
>>   def run(_args) do
>>     if Mix.env != @preferred_cli_env, do: Mix.env(@preferred_cli_env)
>>     Mix.Task.run("ecto.create", ["--quiet"])
>>     Mix.Task.run("ecto.migrate", ["--quiet"])
>>     Mix.Task.run("test")
>>   end
>> end
>>
>> Unfortunately,  that didn't seem to help. The Mix.env() is correct from 
>> within the Test.Ci task, but I assume it's not propagated to the tasks I 
>> run. How would I go about solving that? I realize this have become more of 
>> an support issue than actual proposal so I'm fine with taking this 
>> somewhere else. :)
>> On Saturday, October 1, 2022 at 11:03:37 AM UTC+2 José Valim wrote:
>>
>>> > Right, I think that would be a possibility. So I would have MIX_ENV 
>>> set to "local" by default, and then explicitly set MIX_ENV to "ci" when 
>>> invoking the test task? I assume that would be done through an alias?
>>>
>>> Right. Either an alias or a custom task!
>>>
>>> On Sat, Oct 1, 2022 at 10:45 AM Kevin Hovsäter <ke...@hovsater.com> 
>>> wrote:
>>>
>>>> Thanks for the quick reply.
>>>>
>>>> Right, I think that would be a possibility. So I would have MIX_ENV set 
>>>> to "local" by default, and then explicitly set MIX_ENV to "ci" when 
>>>> invoking the test task? I assume that would be done through an alias?
>>>>
>>>> > Another option is to relax the check we have inside "mix test" and 
>>>> only raise if you are accidentally trying to run tests inside the "dev" 
>>>> environment. Then you could change the preferred_cli_env env for the test 
>>>> task directly in your mix.exs.
>>>>
>>>> I'm not sure that would help as we still need to set MIX_ENV to "local" 
>>>> to not accidentally invoke "dev" (dev means something different in our 
>>>> case). And since MIX_ENV is set, preferred_cli_env isn't respected when 
>>>> invoking mix test.
>>>>
>>>> On Saturday, October 1, 2022 at 10:29:34 AM UTC+2 José Valim wrote:
>>>>
>>>>> Perhaps a simpler fix is to add a "ci" Mix task to your projects that:
>>>>>
>>>>> 1. sets MIX_ENV to "ci" if not set
>>>>> 2. invokes "mix test"
>>>>>
>>>>> Another option is to relax the check we have inside "mix test" and 
>>>>> only raise if you are accidentally trying to run tests inside the "dev" 
>>>>> environment. Then you could change the preferred_cli_env env for the test 
>>>>> task directly in your mix.exs.
>>>>>
>>>>> On Sat, Oct 1, 2022 at 10:05 AM Kevin Sjöberg <ma...@kevinsjoberg.com> 
>>>>> wrote:
>>>>>
>>>>>> I'm currently working with a client that have hard requirements on 
>>>>>> what the default environments should be across all their products. For 
>>>>>> instance, `local` is the default environment. `ci` is the default 
>>>>>> environment for running tests and `dev` is used as a development staging 
>>>>>> environment.
>>>>>>
>>>>>> Mix supports the `preferred_cli_env` option, which I can declare on a 
>>>>>> project level. This is nice because it allows me to specify the 
>>>>>> preferred 
>>>>>> environment for the test task. Unfortunately, there's no way of 
>>>>>> specifying 
>>>>>> the default environment. It's currently hard-coded to `dev` unless 
>>>>>> `MIX_ENV` is set. The problem with having `MIX_ENV` set is that it 
>>>>>> simply 
>>>>>> makes `preferred_cli_env` void as the environment variable always takes 
>>>>>> precedence, so I'm left with having to specify `MIX_ENV` explicitly when 
>>>>>> running tests anyway.
>>>>>>
>>>>>> I propose adding a new option, `default_env`, to the Mix project 
>>>>>> configuration. If set, it will be reported by `Mix.env` unless `MIX_ENV` 
>>>>>> is 
>>>>>> also present.
>>>>>>
>>>>>> I'd love to hear some thoughts before I pursue this any further.
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "elixir-lang-core" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to elixir-lang-co...@googlegroups.com.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/9029fb90-362d-4a1f-be30-6a8b3bd5f074n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/9029fb90-362d-4a1f-be30-6a8b3bd5f074n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "elixir-lang-core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to elixir-lang-co...@googlegroups.com.
>>>>
>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/elixir-lang-core/7b49f422-aae2-4c75-9224-b7b88c7479b1n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/7b49f422-aae2-4c75-9224-b7b88c7479b1n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to elixir-lang-co...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elixir-lang-core/9cfa0ec0-8dd3-4564-a37e-ce2245966983n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elixir-lang-core/9cfa0ec0-8dd3-4564-a37e-ce2245966983n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/6f0c3912-1183-48af-9d6f-f14e0e290f23n%40googlegroups.com.

Reply via email to