Hey Doug, What types of things are in GeneralORGTools.org? Are those babel definitions? Or something else? -s- On Tue, Jun 16, 2020 at 11:21 AM Salomon Turgman wrote: > Thanks for the useful example. I will take a look. Didn't know about > org-sbe! > > -s- > > On Mon, 15 Jun 2020 15:52:16 -0400 > Douglas Perrin wrote: > > > Hi Salomon Turgman, > > I do this a lot and have had success using a combination of #+SETUPFILE > to > > bring in names and configuration, and org-sbe to do initialization. I mix > > emacs vars and org names in my source headers with back quoting. > > > > The following example has a template file containing user/local > > information. This is brought into the example file, on load, through > #:eval > > calling org-babel-lob-ingest and org-sbe, in addition, parameters are > > pulled in with #+SETUPFILE and the same template file name. The end > result > > for this example is a running docker image with access to local paths and > > "remote" execution via tramp. More complex orchestration and actions in > the > > template are certainly possible using org-sbe calls in the init elisp > > source blocks but hopefully, this shows the flavor of what can be done. > > > > In addition to avoiding code duplication, I have found this to be very > > effective when my group is all working from the same org file (via git) > but > > everyone has their own template file with credentials, local paths, and > org > > more preferences (ie showstars). > > Regards, > > Doug > > > > > --------------------------------------------------------------------------------------------------------------------------------- > > TemplatingExample.org > > > --------------------------------------------------------------------------------------------------------------------------------- > > #+SETUPFILE: Template-Loader.org > > > > * Init Code, run when file is opened > > #+name: Execute-On-Load > > #+begin_src elisp :results output > > ;; for this the container and image have the same name > > (setq *DockerName* "ContanerName") > > #+end_src > > > > * Run Contaner > > #+begin_src bash :results raw drawer :var DockerName=`,*DockerName* > > DockerHubUID=`,*DockerHubUID* containerName=`,*DockerContainer* > > LocalWorkPath=`,*LocalWorkPath* LocalDataPath=`,*LocalDataPath* > > docker run --rm -d \ > > -v $LocalWorkPath:/root/Workdir \ > > -v $LocalDataPath:/root/Data \ > > --name $DockerName $DockerHubUID/$DockerName bash -c "tail -f > > /dev/null" > > #+end_src > > > > * run IN contaner > > #+begin_src bash :results output :dir (concat "/docker:" `,*DockerName* > > ":/root/Workdir/") > > ls > > #+end_src > > > > # Local Variables: > > # eval: (org-babel-lob-ingest "Template-Loader.org") > > # eval: (org-sbe "Init-Template") > > # eval: (org-sbe "Execute-On-Load") > > # End: > > > > > --------------------------------------------------------------------------------------------------------------------------------- > > Template-Loader.org > > > --------------------------------------------------------------------------------------------------------------------------------- > > #+STARTUP: showstars > > #+PROPERTY: header-args :mkdirp yes > > > > #+name: Init-Template > > #+begin_src emacs-lisp :results none > > ;; This is called expecitly via org-sbe in the buffer that will uses > the > > templating > > (setq *DockerHubUID* "MyUserName") > > (setq *LocalWorkPath* "/run/desktop/mnt/host/c/Users/.....") > > (setq *LocalDataPath* "/run/desktop/mnt/host/d/devData/") > > > > ;; ingest + SBE can be used to bring in a hierarchy of templates > > (org-babel-lob-ingest "./GroupTools/GeneralORGTools.org") > > (org-sbe "GeneralORGTools.org") > > > > #+end_src > > > -- > Salomon Turgman >