So far, I've been using include("file") to import local files. This seems
like a really bad idea in the long run, but I've been unable to find
documentation of how to do it differently.
So for all of my own modules, I have to do:
module M
include("N.jl")
importall .N
# do some coding here using N, eg:
N.x(::NewType) = ...
end
and when testing, it gets even weirder
module TestM
include("../src/M.jl")
importall .M
using FactCheck
# awesome tests here
end
It's kind of cumbersome to have to always do an include statement followed
by an import. Is there a better way to structure my src/test directories so
that they can find each other and coexist peacefully? Especially if things
are nested a lot, it can get very weird to have to keep including the file
from the filesystem.
I also don't understand why I end up with an M.N module if I include this
module on the julia terminal, and if I update the N module
(include("src/N.jl")) on the console, it does *not* update the M.N module,
which seems completely wonky to me. Shouldn't each module just have its one
definition in the system?
A second related question is how to best setup a program structure that's
intended to be used as a command line tool, rather than a package that's
installed by julia. I understand I can use Pkg.create, but that seems very
strongly geared towards something that's installed through Pkg.add(). If
there's no better system, I'll go with it, but if anyone has any best
practices that would be awesome to understand.