Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
qmacro
Developer Advocate
Developer Advocate

In the comments to episode 4 of our back to basics series of live stream episodes on CAP, on the Hands-on SAP Dev show, there was a question on my use of code in VS Code, which, when invoked in the terminal (e.g. code services.cds) opens the file directly in a VS Code editor window, like this:

vscode-open-file.gif

The question was about code being recognised in SAP Business Application Studio (BAS) dev spaces.

Basically, while code is not a command that's available in dev spaces, there's a BAS-specific command basctl which has a couple of options, one of which is --open. Here are some examples, taken from the usage text:

 

Examples
  $ basctl --open http://sap.com
  $ basctl --open http://localhost:8082/tmp
  $ basctl --open file:///home/user/projects/proj1/myfile.txt
  $ basctl --open /myfile.txt
  $ basctl --open ./myfolder/myfile.txt

 

So while there isn't a code command, you can use basctl --open to get something similar. I say similar, because for some reason I cannot yet fathom (my small brain, again) it opens the file in a new column. Anyway, here's what it looks like in action:

basctl-open-file.gif

(I've asked internally about this behaviour, and will update this blog post with anything I find out.)

The nice thing about what basctl offers perhaps is the ability to invoke framework commands, via an additional --command option, like this: basctl --command workbench.action.openSettings.

The question also asked about my use of tree, and noted its lack of availability in BAS dev spaces. This is simple to address, if not entirely straightforward. I got tree working in my dev space, as you can see:

tree-in-bas-dev-space.png

I did this by copying in a tree binary (and ensuring the execution bit was set). Where did I get that tree binary from? Well, first, I looked what the architecture of the dev spaces was, via uname (I've added whitespace for readability):

 

user: user $ uname -a
Linux workspaces-ws-nvzxc-deployment-9f9b9b656-sfdh5
5.15.135-gardenlinux-cloud-amd64 
SMP Debian 5.15.135-0gardenlinux1 (2023-10-12)
x86_64 GNU/Linux

 

I also checked what distribution the environment was based on:

 

user: user $ cat /etc/issue
Debian GNU/Linux 12 \n \l

 

Basically, it's Debian 12 on x86_64 architecture. Classic. So then I created a quick container from a Debian 12 based container image, via a codespace that I spun up for the purpose, and copied the tree binary out of there to my local filesystem, like this:

 

gh codespace cp 'remote:/usr/bin/tree' .

 

I then copied that binary to the dev space by dragging it into the Explorer window, and then set the execution bit with chmod +x $HOME/tree.

Job done!

(Originally published on qmacro.org)

Labels in this area