announcements

Project/library announcements ONLY - use threaded replies for discussions. Do not cross post here from other channels. Consider #events or #news-and-articles for other announcements.
clyfe 2020-12-09T10:30:43.077900Z

[ANN] Tape Framework pre.alpha: kind of like Duct but for Frontend Announcement https://github.com/tape-framework/doc/blob/master/ANNs/0-pre.alpha.md, tutorial https://github.com/tape-framework/doc/blob/master/docs/Tutorial.md, example app https://github.com/tape-framework/7guis, project https://github.com/tape-framework/. Gist is: Reagent + Re-Frame + Integrant system out of a Module system (ported from Duct) + an experimental interface to Re-Frame + some extra tooling + a body of recipes.

👍 5
clyfe 2020-12-12T23:53:03.123200Z

@beders Your idea turned out great! https://github.com/tape-framework/mvc/commit/f85fe6b56a3287b5b0f699c87da593dad1d2f8dd

beders 2020-12-14T06:31:10.128300Z

cool! Thanks for putting it in!

mpenet 2020-12-09T14:16:37.080100Z

fyi there's a (clj) "tape" library out there already https://github.com/mpenet/tape If you want to do some SEO you might want find another name; or not, personally I don't mind.

👍 1
alidlorenzo 2020-12-09T14:57:55.082100Z

Releasing Interdep, a library that helps you intercept a monorepo’s deps.edn configs, so as to provide a sane, documented way of managing multiple subrepo deps and aliases. Many libraries out in wild use Leiningen for monorepo support. Intention of this library is to serve as stop-gap solution using only tools.deps. https://github.com/rejoice-cljc/interdep

🤘 2
alexmiller 2020-12-09T15:15:56.082500Z

I wish that had a rationale. I have no idea what problem it's trying to solve.

alexmiller 2020-12-09T15:16:57.082700Z

(as someone that might be in a position to solve such a problem)

borkdude 2020-12-09T15:17:33.082900Z

This library came up in #tools-deps before. It tries to solve the multi-repo problem that people have tried to fix with CLJ_CONFIG

borkdude 2020-12-09T15:19:13.083100Z

But then by generating a deps.edn on the fly

alexmiller 2020-12-09T15:19:17.083300Z

I'm confused by the discussion of aliases in the readme

alexmiller 2020-12-09T15:19:27.083500Z

is this the same problem as https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects

borkdude 2020-12-09T15:20:04.083800Z

yes

alexmiller 2020-12-09T15:21:45.084Z

well, I'm really asking @alidcastano

alidlorenzo 2020-12-09T15:37:50.084200Z

so it solves two problems 1. using the nested aliases of subrepo deps, since with default functionality local dep aliases are not activated. 2. calling multiple aliases can be tedious (e.g. :app-main:api-main), so we also match aliases based on configured profiles (http://e.ga :main profile for matching the those aliases)

alidlorenzo 2020-12-09T15:38:39.084400Z

i’ll try to make motivation/docs more clear when I get a chance

alidlorenzo 2020-12-09T15:42:16.084600Z

a third problem, btw, is that using local:root deps is not always possible if deployment needs to be reproducible, so in that situation you also need a tool that unifies nested configurations

alexmiller 2020-12-09T15:43:52.084800Z

these seem like different problems than the ask question above. if there are good problems here, filing an ask question that asks it would be helpful to me. I'm not sure the problems you list are really the problems though, seems like could dig deeper. (like why do you need to invoke nested aliases of subrepo deps? what do those aliases do? etc)

alidlorenzo 2020-12-09T15:48:44.085100Z

one basic scenario: I have an :app/test and :api/test alias, and I want to run them from root of project another more opinionated scenario: I avoided putting subrepo deps in top-level :path and :deps , since they’re automatically loaded. instead, each subrepo puts all its deps under aliases, so I’d call the :app/main and :api/main aliases to load their deps before starting a program. reasoning for this choice, is that I wanted more control over what deps were loaded before starting a program from root

alidlorenzo 2020-12-09T15:50:59.085300Z

prior to Interdep, I was using :local/root deps but had to configure all my subrepo deps/aliases in root deps.edn, basically defeating the purpose of separating logic into nested projects (as they were all configured in root, anyway, and had to be run together from there)

beders 2020-12-09T15:52:43.085500Z

I kinda like the meta-data approach.. However, if you go down that route, I would also expect to see it being used in subscriptions. From one of the samples:

[celsius         @(rf/subscribe [::temperature-converter.c/celsius])
Would have expected to see this: (tape/subscribe temperature.converter.c/celsius)

beders 2020-12-09T15:54:37.086Z

that way I don't have to make a translation from keyword to fn (which my IDE also doesn't understand)

alexmiller 2020-12-09T15:54:57.086200Z

trying to be a little more generic, you have one conceptual project that is broken into multiple parts (here app and api) and you're trying to manage both their independent deps, and their per-component aliases, and dep relationships between the components

alidlorenzo 2020-12-09T15:55:53.086400Z

yes 🙂

alexmiller 2020-12-09T15:55:54.086600Z

maven-style deps are no good for dev purposes. local deps solve some problems but create others.

clyfe 2020-12-09T16:12:20.086800Z

(defn tape-subscribe [f & args]
  (let [{:keys [ns name] ::v/keys [sub]} (meta (var f))
        kw (if (qualified-keyword? sub) sub (keyword (str ns) (str name)))]
    (rf/subscribe (into [kw] args))))
;; (tape-subscribe temperature.converter.c/celsius)
Should work in the meantime I believe.

👍 1