Implicit modules and script style plugins

I want to work on a DSL that looks very similar to unit tests, define some steps but the steps are linked

step "step 1" do
    IO.puts("hi")
end

step "step 2", depends: ["step 1"] do
    IO.puts("bye")
end

Forcing a user to define a module at the top feels possibly distracting.

Two questions, one how should I go about loading an exs at runtime and calling it (I assume Code.compile_file

Second more important question, how might I go about dynamically generating a module or infering one maybe from the filename.