From c8ddd77004c30803b589f047cbca53a8a5c87930 Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Mon, 19 Dec 2022 22:22:55 -0700 Subject: [PATCH] got echo pkg_type done working on packaging nacl, need to branch based on package type --- utils/jex/src/jex.erl | 64 +++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/utils/jex/src/jex.erl b/utils/jex/src/jex.erl index 380a445..b81763a 100644 --- a/utils/jex/src/jex.erl +++ b/utils/jex/src/jex.erl @@ -96,13 +96,14 @@ help_screen() -> " echo devdir echo $HOME/.jex/dev\n" " echo docsdir echo $HOME/.jex/docs\n" " echo tmpdir echo $HOME/.jex/tmp\n" - " echo pkgname name of current package\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 PKG echo $HOME/.jex/docs/PKG\n" - " echo pkg_tmpdir echo $HOME/.jex/tmp/realm-name-X.Y.Z\n" - " echo pkg_tmpdir PKG echo $HOME/.jex/tmp/PKG\n" + " echo pkg_name name of current package\n" + % " echo pkg_tmpdir echo $HOME/.jex/tmp/realm-name-X.Y.Z\n" + % " echo pkg_tmpdir PKG echo $HOME/.jex/tmp/PKG\n" + " echo pkg_type type of current package\n" " echo deps list dependencies of current package\n" " echo serverpid [PORT] show the pid for the documentation server, if alive\n" ]. @@ -139,11 +140,12 @@ dispatch(["echo", "jexdir"]) -> echo(jexdir); dispatch(["echo", "devdir"]) -> echo(devdir); dispatch(["echo", "docsdir"]) -> echo(docsdir); dispatch(["echo", "tmpdir"]) -> echo(tmpdir); -dispatch(["echo", "pkgname"]) -> echo(pkgname); 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", PkgName]) -> echo({pkg_docsdir, PkgName}); +dispatch(["echo", "pkg_name"]) -> echo(pkg_name); +dispatch(["echo", "pkg_type"]) -> echo(pkg_type); dispatch(["echo", "deps"]) -> echo(deps); dispatch(["echo", "serverpid"]) -> echo(serverpid); dispatch(["echo", "serverpid", Port]) -> echo({serverpid, Port}); @@ -210,6 +212,7 @@ cfg(safe) -> end. cfg2(Cfg) -> + % see pkg_type/0, relies on this for validation % allowed values: % - library % - external @@ -241,8 +244,6 @@ echo(docsdir) -> tell(info, "~ts", [docsdir()]); echo(tmpdir) -> tell(info, "~ts", [tmpdir()]); -echo(pkgname) -> - tell(info, "~ts", [pkgname()]); echo(pkg_devdir) -> {_Exists, PkgDevDir} = pkg_devdir(), tell(info, "~ts", [PkgDevDir]); @@ -259,6 +260,8 @@ echo({pkg_docsdir, PkgName}) -> {exists, Dir} -> tell(info, "~ts", [Dir]); Error -> tell(error, "Error: ~tp", [Error]) end; +echo(pkg_name) -> + tell(info, "~ts", [pkg_name()]); echo(pkg_tmpdir) -> {_Exists, PkgTmpDir} = pkg_tmpdir(), tell(info, "~ts", [PkgTmpDir]); @@ -267,6 +270,13 @@ echo({pkg_tmpdir, PkgName}) -> {exists, Dir} -> tell(info, "~ts", [Dir]); Error -> tell(error, "Error: ~tp", [Error]) end; +echo(pkg_type) -> + case pkg_type() of + {ok, PkgType} -> + tell(info, "~tp", [PkgType]); + {error, Error} -> + error(Error) + end; echo(deps) -> PrintDep = fun(Dep) -> tell(info, "~ts", [Dep]) end, lists:foreach(PrintDep, deps()); @@ -296,17 +306,10 @@ docsdir() -> tmpdir() -> filename:join(jexdir(), "tmp"). -pkgname() -> - {ok, Cfg} = cfg(), - Realm = proplists:get_value(realm, Cfg), - Name = proplists:get_value(name, Cfg), - Vsn = proplists:get_value(version, Cfg), - io_lib:format("~tp-~tp-~ts", [Realm, Name, Vsn]). - pkg_devdir() -> - pkg_devdir(pkgname()). + pkg_devdir(pkg_name()). pkg_devdir(Pkg) -> Filename = filename:join(devdir(), Pkg), @@ -316,8 +319,9 @@ pkg_devdir(Pkg) -> end. + pkg_docsdir() -> - pkg_docsdir(pkgname()). + pkg_docsdir(pkg_name()). pkg_docsdir(PkgName) -> Filename = filename:join([docsdir(), PkgName]), @@ -328,8 +332,18 @@ pkg_docsdir(PkgName) -> +pkg_name() -> + {ok, Cfg} = cfg(), + Realm = proplists:get_value(realm, Cfg), + Name = proplists:get_value(name, Cfg), + Vsn = proplists:get_value(version, Cfg), + io_lib:format("~tp-~tp-~ts", [Realm, Name, Vsn]). + + + + pkg_tmpdir() -> - pkg_tmpdir(pkgname()). + pkg_tmpdir(pkg_name()). pkg_tmpdir(PkgName) -> Filename = filename:join([tmpdir(), PkgName]), @@ -340,6 +354,21 @@ pkg_tmpdir(PkgName) -> +-spec pkg_type() -> Result + when Result :: {ok, PkgType} + | {error, Reason :: term()}, + PkgType :: library | external | extension. + +pkg_type() -> + % cfg errors if package type is invalid + % see cfg2/1 + case cfg() of + {ok, Cfg} -> {ok, proplists:get_value(type, Cfg)}; + Error -> Error + end. + + + deps() -> {ok, Cfg} = cfg(), case proplists:get_value(deps, Cfg) of @@ -375,6 +404,7 @@ init() -> %% jex build %%----------------------------------------------------------------------------- +% need to branch on if type is external build(Opts) -> % flags if flag default OptsConfig = [{["-w", "--weak"], {weak, weak}, {weak, strict}}, @@ -581,7 +611,7 @@ serverpid(Port) -> %%----------------------------------------------------------------------------- fulldist() -> - PkgName = pkgname(), + PkgName = pkg_name(), PkgTmpDir = case pkg_tmpdir() of {exists, D} ->