[wip] documentation generation/serving
This commit is contained in:
+92
-29
@@ -31,10 +31,10 @@ help() ->
|
|||||||
|
|
||||||
% TODONE: make tsdocs
|
% TODONE: make tsdocs
|
||||||
% TODONE: jex pull
|
% TODONE: jex pull
|
||||||
% TODO: delete before mindist
|
% TODONE: delete before mindist
|
||||||
% TODO: delete before push
|
% TODONE: delete before push
|
||||||
% TODO: delete before pushdocs
|
% TODONE: delete before pushdocs
|
||||||
% TODO: jex viewdocs [port]
|
% TODO: jex viewdocs PKG [port]
|
||||||
% TODO: make fulldist tarballs
|
% TODO: make fulldist tarballs
|
||||||
|
|
||||||
% TODO: be smart about creating jex_include
|
% TODO: be smart about creating jex_include
|
||||||
@@ -58,9 +58,10 @@ help_screen() ->
|
|||||||
" echo docsdir echo $HOME/.jex/docs\n"
|
" echo docsdir echo $HOME/.jex/docs\n"
|
||||||
" echo pkgname name of current package\n"
|
" echo pkgname name of current package\n"
|
||||||
" echo pkg_devdir echo $HOME/.jex/dev/realm-name-X.Y.Z\n"
|
" echo pkg_devdir echo $HOME/.jex/dev/realm-name-X.Y.Z\n"
|
||||||
|
" echo pkg_devdir PKG echo $HOME/.jex/dev/PKG\n"
|
||||||
" echo pkg_docsdir echo $HOME/.jex/docs/realm-name-X.Y.Z\n"
|
" echo pkg_docsdir echo $HOME/.jex/docs/realm-name-X.Y.Z\n"
|
||||||
|
" echo pkg_docsdir PKG echo $HOME/.jex/docs/PKG\n"
|
||||||
" echo deps list dependencies of current package\n"
|
" echo deps list dependencies of current package\n"
|
||||||
" echo pathof PKG list the path to PKG or \n"
|
|
||||||
" init mkdir -p $HOME/.jex/dev\n"
|
" init mkdir -p $HOME/.jex/dev\n"
|
||||||
" build tsc && cp -r ./src/jex_include ./dist/\n"
|
" build tsc && cp -r ./src/jex_include ./dist/\n"
|
||||||
" -w, --weak continue building even if tsc fails\n"
|
" -w, --weak continue building even if tsc fails\n"
|
||||||
@@ -70,6 +71,7 @@ help_screen() ->
|
|||||||
" push rsync -a jex_mindist/ PKG_DEVDIR\n"
|
" push rsync -a jex_mindist/ PKG_DEVDIR\n"
|
||||||
" mkdocs (maybe run dwim- first) npx typedoc\n"
|
" mkdocs (maybe run dwim- first) npx typedoc\n"
|
||||||
" pushdocs rsync -a docs/ PKG_DOCSDIR\n"
|
" pushdocs rsync -a docs/ PKG_DOCSDIR\n"
|
||||||
|
" viewdocs PKG [PORT] view package docs in browser\n"
|
||||||
" ls ls $HOME/.jex/dev\n"
|
" ls ls $HOME/.jex/dev\n"
|
||||||
" tree tree $HOME/.jex/\n"
|
" tree tree $HOME/.jex/\n"
|
||||||
" rmpkg PKG rm -r $HOME/.jex/dev/PKG\n"
|
" rmpkg PKG rm -r $HOME/.jex/dev/PKG\n"
|
||||||
@@ -88,7 +90,9 @@ dispatch(["echo", "devdir"]) -> echo(devdir);
|
|||||||
dispatch(["echo", "docsdir"]) -> echo(docsdir);
|
dispatch(["echo", "docsdir"]) -> echo(docsdir);
|
||||||
dispatch(["echo", "pkgname"]) -> echo(pkgname);
|
dispatch(["echo", "pkgname"]) -> echo(pkgname);
|
||||||
dispatch(["echo", "pkg_devdir"]) -> echo(pkg_devdir);
|
dispatch(["echo", "pkg_devdir"]) -> echo(pkg_devdir);
|
||||||
|
dispatch(["echo", "pkg_devdir", PkgName]) -> echo({pkg_devdir, PkgName});
|
||||||
dispatch(["echo", "pkg_docsdir"]) -> echo(pkg_docsdir);
|
dispatch(["echo", "pkg_docsdir"]) -> echo(pkg_docsdir);
|
||||||
|
dispatch(["echo", "pkg_docsdir", PkgName]) -> echo({pkg_docsdir, PkgName});
|
||||||
dispatch(["echo", "deps"]) -> echo(deps);
|
dispatch(["echo", "deps"]) -> echo(deps);
|
||||||
dispatch(["init"]) -> init();
|
dispatch(["init"]) -> init();
|
||||||
dispatch(["build" | Opts]) -> build(Opts);
|
dispatch(["build" | Opts]) -> build(Opts);
|
||||||
@@ -96,6 +100,8 @@ dispatch(["mindist" | Opts]) -> mindist(Opts);
|
|||||||
dispatch(["push"]) -> push();
|
dispatch(["push"]) -> push();
|
||||||
dispatch(["mkdocs"]) -> mkdocs();
|
dispatch(["mkdocs"]) -> mkdocs();
|
||||||
dispatch(["pushdocs"]) -> pushdocs();
|
dispatch(["pushdocs"]) -> pushdocs();
|
||||||
|
dispatch(["viewdocs", Pkg]) -> viewdocs(Pkg);
|
||||||
|
dispatch(["viewdocs", Pkg, Port]) -> viewdocs(Pkg, Port);
|
||||||
dispatch(["ls"]) -> ls();
|
dispatch(["ls"]) -> ls();
|
||||||
dispatch(["tree"]) -> tree();
|
dispatch(["tree"]) -> tree();
|
||||||
dispatch(["rmpkg", Pkg]) -> rmpkg(Pkg);
|
dispatch(["rmpkg", Pkg]) -> rmpkg(Pkg);
|
||||||
@@ -160,17 +166,24 @@ echo(docsdir) ->
|
|||||||
echo(pkgname) ->
|
echo(pkgname) ->
|
||||||
tell(info, "~ts", [pkgname()]);
|
tell(info, "~ts", [pkgname()]);
|
||||||
echo(pkg_devdir) ->
|
echo(pkg_devdir) ->
|
||||||
tell(info, "~ts", [pkg_devdir()]);
|
{_Exists, PkgDevDir} = pkg_devdir(),
|
||||||
|
tell(info, "~ts", [PkgDevDir]);
|
||||||
|
echo({pkg_devdir, PkgName}) ->
|
||||||
|
case pkg_devdir(PkgName) of
|
||||||
|
{exists, Dir} -> tell(info, "~ts", [Dir]);
|
||||||
|
Error -> tell(error, "Error: ~tp", [Error])
|
||||||
|
end;
|
||||||
echo(pkg_docsdir) ->
|
echo(pkg_docsdir) ->
|
||||||
tell(info, "~ts", [pkg_docsdir()]);
|
{_Exists, PkgDocsDir} = pkg_docsdir(),
|
||||||
|
tell(info, "~ts", [PkgDocsDir]);
|
||||||
|
echo({pkg_docsdir, PkgName}) ->
|
||||||
|
case pkg_docsdir(PkgName) of
|
||||||
|
{exists, Dir} -> tell(info, "~ts", [Dir]);
|
||||||
|
Error -> tell(error, "Error: ~tp", [Error])
|
||||||
|
end;
|
||||||
echo(deps) ->
|
echo(deps) ->
|
||||||
PrintDep =
|
PrintDep = fun(Dep) -> tell(info, "~ts", [Dep]) end,
|
||||||
fun(Dep) ->
|
lists:foreach(PrintDep, deps()).
|
||||||
tell(info, "~ts", [Dep])
|
|
||||||
end,
|
|
||||||
lists:foreach(PrintDep, deps());
|
|
||||||
echo({pathof, Pkg}) ->
|
|
||||||
tell(info, "~ts", [pathof(Pkg)]).
|
|
||||||
|
|
||||||
|
|
||||||
home() ->
|
home() ->
|
||||||
@@ -197,10 +210,25 @@ pkgname() ->
|
|||||||
io_lib:format("~tp-~tp-~ts", [Realm, Name, Vsn]).
|
io_lib:format("~tp-~tp-~ts", [Realm, Name, Vsn]).
|
||||||
|
|
||||||
pkg_devdir() ->
|
pkg_devdir() ->
|
||||||
filename:join(devdir(), pkgname()).
|
pkg_devdir(pkgname()).
|
||||||
|
|
||||||
|
pkg_devdir(Pkg) ->
|
||||||
|
Filename = filename:join(devdir(), Pkg),
|
||||||
|
case file_exists(Filename) of
|
||||||
|
true -> {exists, Filename};
|
||||||
|
false -> {dne, Filename}
|
||||||
|
end.
|
||||||
|
|
||||||
pkg_docsdir() ->
|
pkg_docsdir() ->
|
||||||
filename:join([docsdir(), pkgname()]).
|
pkg_docsdir(pkgname()).
|
||||||
|
|
||||||
|
pkg_docsdir(PkgName) ->
|
||||||
|
Filename = filename:join([docsdir(), PkgName]),
|
||||||
|
case file_exists(Filename) of
|
||||||
|
true -> {exists, Filename};
|
||||||
|
false -> {dne, Filename}
|
||||||
|
end.
|
||||||
|
|
||||||
|
|
||||||
deps() ->
|
deps() ->
|
||||||
{ok, Cfg} = cfg(),
|
{ok, Cfg} = cfg(),
|
||||||
@@ -212,12 +240,6 @@ deps() ->
|
|||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
pathof(Pkg) ->
|
|
||||||
Filename = filename:join(devdir(), Pkg),
|
|
||||||
case file_exists(Filename) of
|
|
||||||
true -> Filename;
|
|
||||||
false -> error({unknown_package, Pkg})
|
|
||||||
end.
|
|
||||||
|
|
||||||
file_exists(Filename) ->
|
file_exists(Filename) ->
|
||||||
case file:read_file_info(Filename) of
|
case file:read_file_info(Filename) of
|
||||||
@@ -277,13 +299,14 @@ mindist(Opts) ->
|
|||||||
% flags if flag default
|
% flags if flag default
|
||||||
OptsConfig = [{["-f", "--force"], {force, force}, {force, dont_force}}],
|
OptsConfig = [{["-f", "--force"], {force, force}, {force, dont_force}}],
|
||||||
#{force := Force} = parseopts(OptsConfig, Opts),
|
#{force := Force} = parseopts(OptsConfig, Opts),
|
||||||
|
_ = cmd("rm -r jex_mindist"),
|
||||||
_ = cmd("mkdir -p jex_mindist"),
|
_ = cmd("mkdir -p jex_mindist"),
|
||||||
_ = mindist_cp(Force),
|
_ = mindist_cp(Force),
|
||||||
_ = cmd("rm -r jex_mindist/src/jex_include"),
|
_ = cmd("rm -r jex_mindist/src/jex_include"),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
mindist_cp(dont_force) ->
|
mindist_cp(dont_force) ->
|
||||||
_ = cmd("rsync -avv --exclude=\"*.swp\" src jex_mindist"),
|
_ = cmd("rsync -avv --exclude=\"*.swp\" --exclude=\"*.swo\" src jex_mindist"),
|
||||||
_ = cmd("cp -rv dist jex_mindist"),
|
_ = cmd("cp -rv dist jex_mindist"),
|
||||||
ok;
|
ok;
|
||||||
mindist_cp(force) ->
|
mindist_cp(force) ->
|
||||||
@@ -298,7 +321,9 @@ mindist_cp(force) ->
|
|||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
|
|
||||||
push() ->
|
push() ->
|
||||||
_ = cmd(io_lib:format("rsync -avv jex_mindist/ ~ts", [pkg_devdir()])),
|
{_Exists, PackageDestination} = pkg_devdir(),
|
||||||
|
_ = cmd(["rm -r ", PackageDestination]),
|
||||||
|
_ = cmd(["rsync -avv jex_mindist/ ", PackageDestination()]),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
|
||||||
@@ -323,8 +348,14 @@ tree() ->
|
|||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
|
|
||||||
rmpkg(Pkg) ->
|
rmpkg(Pkg) ->
|
||||||
Filename = pathof(Pkg),
|
case pkg_devdir(Pkg) of
|
||||||
_ = cmd(io_lib:format("rm -r ~ts", [Filename])),
|
{exists, Filename} -> cmd(io_lib:format("rm -r ~ts", [Filename]));
|
||||||
|
{dne, Filename} -> tell(error, "package not installed: ~ts", [Pkg])
|
||||||
|
end,
|
||||||
|
case pkg_docsdir(Pkg) of
|
||||||
|
{exists, Filename} -> cmd(io_lib:format("rm -r ~ts", [Filename]));
|
||||||
|
{dne, Filename} -> tell(error, "documentation not installed: ~ts", [Pkg])
|
||||||
|
end,
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
@@ -342,11 +373,15 @@ pull([]) ->
|
|||||||
ok.
|
ok.
|
||||||
|
|
||||||
pull_dep(Dep) ->
|
pull_dep(Dep) ->
|
||||||
Src = pathof(Dep),
|
case pkg_devdir(Dep) of
|
||||||
|
{exists, Src} ->
|
||||||
Dst = filename:join("./src/jex_include", Dep),
|
Dst = filename:join("./src/jex_include", Dep),
|
||||||
_ = cmd(io_lib:format("mkdir -p ~ts", [Dst])),
|
_ = cmd(io_lib:format("mkdir -p ~ts", [Dst])),
|
||||||
%tell(info, "path of ~s: ~s", [Dep, Src]),
|
%tell(info, "path of ~s: ~s", [Dep, Src]),
|
||||||
_ = cmd(io_lib:format("rsync -avv ~ts/ ~ts", [Src, Dst])),
|
_ = cmd(io_lib:format("rsync -avv ~ts/ ~ts", [Src, Dst]));
|
||||||
|
DNE ->
|
||||||
|
error(DNE)
|
||||||
|
end,
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
@@ -362,7 +397,35 @@ mkdocs() ->
|
|||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
|
|
||||||
pushdocs() ->
|
pushdocs() ->
|
||||||
_ = cmd(["rsync -avv docs/ ", pkg_docsdir()]),
|
{_Exists, DocsDestDir} = pkg_docsdir(),
|
||||||
|
_ = cmd(["rm -r ", DocsDestDir]),
|
||||||
|
_ = cmd(["rsync -avv docs/ ", DocsDestDir]),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------------
|
||||||
|
%% jex viewdocs
|
||||||
|
%%-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
viewdocs(Pkg) ->
|
||||||
|
viewdocs(Pkg, 6969).
|
||||||
|
|
||||||
|
viewdocs(Pkg, Port) ->
|
||||||
|
case pkg_docsdir(Pkg) of
|
||||||
|
{exists, DocsPath} -> viewdocs2(DocsPath, Port);
|
||||||
|
DNE -> error(DNE)
|
||||||
|
end.
|
||||||
|
|
||||||
|
viewdocs2(DocsPath, Port) ->
|
||||||
|
spawn_link(fun() -> servedocs(DocsPath, Port) end),
|
||||||
|
firefox(Port).
|
||||||
|
|
||||||
|
servedocs(DocsPath, Port) ->
|
||||||
|
_ = cmd(io_lib:format("cd ~ts && python3 -m http.server ~tp", [DocsPath, Port])),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
firefox(Port) ->
|
||||||
|
_ = cmd(io_lib:format("firefox localhost:~tp", [Port])),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
%%-----------------------------------------------------------------------------
|
%%-----------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user