emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: HJ <hj-orgmode-1@hj.proberto.com>
To: emacs-orgmode@gnu.org
Subject: self-referencing babel shell code blocks
Date: Sun, 17 Jan 2021 22:41:00 +0100	[thread overview]
Message-ID: <a140aec2-a5a2-d137-ef0c-5d3eabcb0081@XXXXXXXXX.XXX> (raw)


  hi,

   I'm  trying to figure out how to write a block , header, PROPERTY or 
whatever is necessary so the output of a command in babel source block 
identifies it own position - the line (or block or something) in buffer 
(or at least the file) in which it is written. ( Plus the checked out 
git revision / branch. )


  I've been experimenting with the following, so far without much luck ...

  Which of these pieces of information (see the "echo" line below) is it 
possible to get? Which is easy? (variables VAR[0345] are most critical) 
How would one write a snippet which provides (some of) this information?

  Is it much harder with command 1 being SSH to a remote machine? Would 
":dir user@remotemachine:/some/dir" work better? Or at all?

  Perhaps I would know how to find out VAR6 and VAR7 by running first 
some `git cmd1` and `git cmd2` locally in a " command 0 " - but is there 
a way to get that info from magit somehow?

  But what I am most desperate for is how to cause orgmode block to set 
VAR0, VAR3, VAR4 and VAR5, and - also fairly important - how to use the 
combination of VAR[0345] do open / recall the file onto the screen

  Thanks a million for helping me out here ...

    HJ


This is the sample file :


* heading L1_12
   Hello and welcome, this is a file with self-referencing shell babel source code blocks
   ...
** heading L2_37
   ...
#+NAME: block220
#+BEGIN_SRC  bash  :session sess9
   : command 0 ;  cd _how-do-I-find-the-dir-of-currently-edited-file_ ; VAR6=`git cmd1` ; VAR7=`git cmd2`
   : command 1 ;  ssh -o "SetEnv VAR1=machine VAR2=user VAR3=..."    targetUser@targetMachine
#+END_SRC


...

#+NAME: block225
#+BEGIN_SRC  bash  :session sess9
   : command 2 ; : do some computation on targetMachine
   : command 3 ; echo This code has been launched from emacs process VAR0:_EMACS_SESSION_ID_ \
     on computer $VAR1:_SRC_HOSTNAME_ \
     run by user $VAR2:_USER_ \
     from file $VAR3:_FILENAME_ \
     code block named $VAR4:block225 \
     in this file positioned under headings: $VAR5:heading L1_12/heading L2_37/ \
     which is checked out from $VAR6:_GIT_COMMIT_ID_ \
     on branch $VAR7:_GIT_BRANCH_
   : command 3 continues ; echo To display the buffer which launched this code on the screen of the running emacs session, run the following command :    emacs  _What_the_heck_do_I_put_here?_  '&'
#+END_SRC








             reply	other threads:[~2021-01-17 21:42 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-17 21:41 HJ [this message]
2021-01-18  0:12 ` self-referencing babel shell code blocks John Kitchin
2021-01-18  0:33   ` HJ
2021-01-18  1:22     ` John Kitchin
2021-01-18  9:10   ` tomas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a140aec2-a5a2-d137-ef0c-5d3eabcb0081@XXXXXXXXX.XXX \
    --to=hj-orgmode-1@hj.proberto.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).