|
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<a name="justl-mainVideo-transcript"></a>
# Transcript
[[!template new="1" text="""Hi everyone, I am Sibi Prabakaran""" start="00:00:00.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and welcome to my session on Justl Emacs Mode.""" start="00:00:04.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""A bit about me, I have been working""" start="00:00:09.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""as a Haskell Engineer""" start="00:00:11.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""at FPComplete for the last 4 years.""" start="00:00:12.880" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I am based out of India.""" start="00:00:15.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I occasionally blog at my website psibi.in""" start="00:00:17.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""where you can find more information about me.""" start="00:00:20.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I have been using Emacs""" start="00:00:23.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""for more than a decade now.""" start="00:00:25.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I help in the maintenance""" start="00:00:26.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""of the Terraform client for LSP mode.""" start="00:00:28.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I have also authored dhall-mode and rego-mode""" start="00:00:31.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which are the major modes""" start="00:00:33.960" video="mainVideo-justl" id="subtitle"]]
[[!template text="""for the respective languages.""" start="00:00:35.000" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Before jumping into the demo""" start="00:00:39.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""of the Emacs package,""" start="00:00:40.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I would like to give a brief introduction""" start="00:00:42.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""about justfiles and what it is.""" start="00:00:44.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I will also try to compare it with Makefiles""" start="00:00:46.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""as it takes a lot of inspiration from it.""" start="00:00:49.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""What you see currently in the buffer""" start="00:00:53.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is a sample justfile.""" start="00:00:55.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""If you have previously used Makefiles,""" start="00:00:57.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you would be able to see""" start="00:00:59.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""that there is quite a bit of similarity""" start="00:01:00.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""between them.""" start="00:01:02.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Anything that starts with hash""" start="00:01:03.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is a documentation comment.""" start="00:01:05.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can see that I have the first recipe""" start="00:01:07.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which is named as default.""" start="00:01:09.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""So if you run the just executable""" start="00:01:10.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""without any arguments,""" start="00:01:12.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by default it is going to run""" start="00:01:14.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the first recipe.""" start="00:01:15.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""This recipe's definition""" start="00:01:17.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""calls the just command""" start="00:01:18.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in turn, with the two arguments,""" start="00:01:20.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""namely --list and --unsorted,""" start="00:01:21.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which basically asks just""" start="00:01:24.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to list down all the recipes""" start="00:01:25.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in an unsorted order.""" start="00:01:27.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Each line of each recipe is executed""" start="00:01:29.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by a fresh shell.""" start="00:01:32.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""That pretty much""" start="00:01:33.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is the high level overview""" start="00:01:35.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""of getting started to use this tool.""" start="00:01:36.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""This tool assumes the presence of a shell""" start="00:01:38.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which is bash in most GNU/Linux systems,""" start="00:01:40.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but you can configure it""" start="00:01:43.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to explicitly use any specific shell""" start="00:01:44.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you have in mind.""" start="00:01:47.160" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Let me in fact go and try executing""" start="00:01:48.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the first recipe.""" start="00:01:50.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I will first execute it""" start="00:01:52.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""without any arguments,""" start="00:01:53.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which will force it to run the first recipe.""" start="00:01:55.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see, it listed all the recipes.""" start="00:01:59.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Now I can actually execute""" start="00:02:01.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a particular recipe""" start="00:02:03.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by passing an explicit recipe name.""" start="00:02:04.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me execute the hello recipe now""" start="00:02:06.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which will basically print "hello world".""" start="00:02:08.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""It works as expected.""" start="00:02:11.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see, that's all that's required""" start="00:02:15.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to get started with this tool.""" start="00:02:17.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You create a file named justfile""" start="00:02:18.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in a directory, define some recipes""" start="00:02:20.349" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and then run them""" start="00:02:22.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""via the just executable.""" start="00:02:23.640" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Note that there are""" start="00:02:27.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""various other features in justfile.""" start="00:02:28.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can define variables,""" start="00:02:30.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""mark some variables""" start="00:02:32.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to be exported as environment variables,""" start="00:02:33.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""have optional parameters""" start="00:02:35.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""that can be passed to a recipe.""" start="00:02:37.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can also set up dependency""" start="00:02:38.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""between recipes""" start="00:02:40.960" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and also write scripts within a recipe""" start="00:02:42.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in a language of your choice.""" start="00:02:44.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I won't be going into the details,""" start="00:02:46.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but I encourage you to go through""" start="00:02:48.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the very helpful manual page""" start="00:02:50.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to learn more about it.""" start="00:02:51.640" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Also, let me compare it with Makefiles.""" start="00:02:56.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I do think it's kind of unfair""" start="00:02:59.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to compare both the tools""" start="00:03:00.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""since make is a build automation tool""" start="00:03:02.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""whereas just's goal is a task runner,""" start="00:03:04.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and since just doesn't try to be""" start="00:03:07.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a build system,""" start="00:03:09.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it can avoid the associated complexity""" start="00:03:10.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""that comes with the tool like make.""" start="00:03:12.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""There is one nice historical fact""" start="00:03:15.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""about just.""" start="00:03:17.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""The initial version of just""" start="00:03:18.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""relied on make command being available,""" start="00:03:19.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""so it was basically""" start="00:03:21.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a glorified wrapper around it.""" start="00:03:23.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""But it was removed,""" start="00:03:25.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and justfile doesn't have""" start="00:03:26.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""that dependency anymore.""" start="00:03:27.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""If you are using make as a task runner""" start="00:03:29.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""then you would have to use""" start="00:03:31.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""something called phony targets.""" start="00:03:33.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I don't want to go into the details,""" start="00:03:35.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but makefiles have good reason""" start="00:03:37.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""for why they need something like that.""" start="00:03:39.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Since justfile is not a build system,""" start="00:03:41.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it doesn't have to deal with them.""" start="00:03:44.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""The error message""" start="00:03:45.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and user experience of this tool,""" start="00:03:47.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in my opinion, is better.""" start="00:03:48.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""To show you a concrete example,""" start="00:03:50.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""justfile errors out by default""" start="00:03:52.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""if you have duplicate recipes.""" start="00:03:54.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""This is in contrast with make""" start="00:03:56.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""where I believe it prints out""" start="00:03:58.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a warning about it,""" start="00:04:00.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but still executes the target action.""" start="00:04:01.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Justfile also gives you the ability""" start="00:04:03.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to easily create scripts""" start="00:04:06.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""written in any language within a recipe.""" start="00:04:08.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""My personal opinion is that""" start="00:04:10.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""if you are using makefile""" start="00:04:12.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""as a task runner,""" start="00:04:14.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you might want to check out justfile""" start="00:04:15.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to see if it will suit your workflow.""" start="00:04:17.440" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""With that, I'll move on to justl.el,""" start="00:04:19.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which is basically an Emacs package""" start="00:04:25.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""for driving justfiles.""" start="00:04:26.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I started writing this tool""" start="00:04:28.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""around a year ago""" start="00:04:29.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""when my usage of justfile increased.""" start="00:04:31.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""The objective of the tool""" start="00:04:33.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is to reduce the usage of the CLI""" start="00:04:35.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and drive the execution of the recipes""" start="00:04:37.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""natively within the editor.""" start="00:04:40.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me take you back to the justfile""" start="00:04:41.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which we saw previously.""" start="00:04:44.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""This time we will drive it""" start="00:04:45.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""within the editor itself,""" start="00:04:47.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""instead of executing commands via vterm""" start="00:04:48.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""as done previously.""" start="00:04:51.400" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""So the idea is you either""" start="00:04:52.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""open the justfile,""" start="00:04:54.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""or any other file in the directory.""" start="00:04:56.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""That doesn't matter, actually.""" start="00:04:57.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Once you do that,""" start="00:04:59.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you call the justl command.""" start="00:05:00.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Now as you can see, it lists down""" start="00:05:02.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""all the recipes,""" start="00:05:06.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""along with the description if present.""" start="00:05:07.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can move on to different recipes""" start="00:05:09.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by your usual keybinding.""" start="00:05:11.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""And for executing a specific recipe,""" start="00:05:13.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you have to press the e keybinding,""" start="00:05:15.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and that will run the recipe""" start="00:05:18.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and show its output""" start="00:05:19.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""on a special buffer named *just*""" start="00:05:21.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which is built on top of""" start="00:05:23.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the compilation mode available in Emacs.""" start="00:05:25.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me actually try""" start="00:05:27.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""executing the hello recipe""" start="00:05:28.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which we previously executed in vterm.""" start="00:05:30.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see,""" start="00:05:32.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it executed the recipe""" start="00:05:38.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and the "hello world" output""" start="00:05:39.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is visible in the just buffer.""" start="00:05:41.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can also see that there is""" start="00:05:42.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""other metadata like""" start="00:05:44.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""when it started executing""" start="00:05:45.880" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and when did it finish executing.""" start="00:05:47.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""If a recipe execution fails,""" start="00:05:49.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it will also change the color""" start="00:05:51.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and print the corresponding exit code.""" start="00:05:53.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me actually show you""" start="00:05:55.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by modifying the hello recipe""" start="00:05:57.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and making it exit.""" start="00:05:59.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see,""" start="00:06:03.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it clearly indicates the error message now.""" start="00:06:08.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""That is a pretty much""" start="00:06:10.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a good high level overview""" start="00:06:12.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""of how to execute recipes""" start="00:06:14.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""using this Emacs extension.""" start="00:06:15.680" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""If I press the h or the ? key,""" start="00:06:17.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it will display the various ways""" start="00:06:21.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to drive it.""" start="00:06:23.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Now as you can see,""" start="00:06:24.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""you can pass various options to it.""" start="00:06:27.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I find the dry run option effective""" start="00:06:29.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""whenever I have to print the recipe contents""" start="00:06:31.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""without actually executing the recipe.""" start="00:06:34.560" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""There are also various ways to execute it.""" start="00:06:36.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can use Emacs's eshell to execute it""" start="00:06:39.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by pressing the E keybinding.""" start="00:06:42.960" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me try executing the hello recipe again,""" start="00:06:45.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but this time via Emacs's eshell.""" start="00:06:48.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see now I have an eshell instance""" start="00:06:50.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""where it executed the just hello recipe.""" start="00:06:54.840" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""You can also directly""" start="00:06:57.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""go to the recipe line""" start="00:07:02.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by pressing the return key.""" start="00:07:03.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""So let's say if I want to""" start="00:07:05.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""go to the recipe build app""" start="00:07:08.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""all I have to do is press the return key""" start="00:07:09.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and it will go to the just file""" start="00:07:12.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""with the proper line.""" start="00:07:14.400" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""You can also re-execute the same recipe""" start="00:07:15.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""from the output just buffer.""" start="00:07:19.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I find this very helpful""" start="00:07:21.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""when iterating on certain things.""" start="00:07:23.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""In my day job,""" start="00:07:25.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I often have to work with a Kubernetes cluster,""" start="00:07:26.720" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and I would have to write""" start="00:07:29.240" video="mainVideo-justl" id="subtitle"]]
[[!template text="""resource manifest files for applications.""" start="00:07:30.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Having the ability to run the recipes""" start="00:07:33.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""while iterating on the project""" start="00:07:36.377" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is very useful, in my opinion.""" start="00:07:37.943" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Let me actually show you""" start="00:07:39.560" video="mainVideo-justl" id="subtitle"]]
[[!template text="""an example of what I am talking about.""" start="00:07:42.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me run the build app recipe now,""" start="00:07:43.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which will basically build the manifest""" start="00:07:46.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and print it out.""" start="00:07:48.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Now let me open one of the application files.""" start="00:07:49.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I will open the ingress.yaml file.""" start="00:07:58.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""So I have this YAML file which I am working on,""" start="00:07:59.960" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and I also have this output buffer""" start="00:08:06.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which is basically the output""" start="00:08:08.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""of the build app recipe.""" start="00:08:10.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Now I can basically go through this buffer""" start="00:08:11.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and see if everything is alright,""" start="00:08:14.200" video="mainVideo-justl" id="subtitle"]]
[[!template text="""but I find out that I didn't want""" start="00:08:18.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the hostname to be emacs2022.""" start="00:08:21.760" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I wanted it to be just emacs.""" start="00:08:23.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I can go and fix it in my YAML file,""" start="00:08:25.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and then I can go on""" start="00:08:29.000" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to the output buffer""" start="00:08:34.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and basically just re-run the command""" start="00:08:36.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""by pressing the g key binding.""" start="00:08:38.520" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see,""" start="00:08:40.080" video="mainVideo-justl" id="subtitle"]]
[[!template text="""it executed the same recipe again,""" start="00:08:42.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and I can see that""" start="00:08:48.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the hostname is indeed emacs.""" start="00:08:49.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I find this kind of workflow very convenient""" start="00:08:51.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""while I am working on a project.""" start="00:08:55.000" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""Another way of interacting""" start="00:08:56.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""with the justl extension""" start="00:08:59.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is by using the interactive function""" start="00:09:00.440" video="mainVideo-justl" id="subtitle"]]
[[!template text="""justl-exec-recipe-in-dir.""" start="00:09:02.400" video="mainVideo-justl" id="subtitle"]]
[[!template text="""The use case of this function""" start="00:09:04.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""is executing a one-off recipe""" start="00:09:06.040" video="mainVideo-justl" id="subtitle"]]
[[!template text="""while you are working on something else.""" start="00:09:07.840" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Let me show you an example of it.""" start="00:09:09.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""As you can see, it shows me""" start="00:09:11.960" video="mainVideo-justl" id="subtitle"]]
[[!template text="""a drop down of various recipes""" start="00:09:19.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""available in the justfile.""" start="00:09:21.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""You can choose any particular one""" start="00:09:22.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and execute the corresponding recipe.""" start="00:09:24.880" video="mainVideo-justl" id="subtitle"]]
[[!template text="""In this case, I will choose""" start="00:09:26.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""the build-app recipe,""" start="00:09:28.360" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and we will get the output""" start="00:09:29.640" video="mainVideo-justl" id="subtitle"]]
[[!template text="""in the *just* buffer""" start="00:09:31.320" video="mainVideo-justl" id="subtitle"]]
[[!template text="""which should be similar""" start="00:09:32.280" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to what we saw previously.""" start="00:09:33.200" video="mainVideo-justl" id="subtitle"]]
[[!template new="1" text="""So this was a quick introduction""" start="00:09:34.680" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to what justfile is""" start="00:09:43.920" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and how to drive them within Emacs.""" start="00:09:45.120" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Hopefully it was helpful""" start="00:09:46.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""and it would encourage you""" start="00:09:48.600" video="mainVideo-justl" id="subtitle"]]
[[!template text="""to use justfiles in your workflow.""" start="00:09:50.160" video="mainVideo-justl" id="subtitle"]]
[[!template text="""Thank you for allowing me to present.""" start="00:09:51.480" video="mainVideo-justl" id="subtitle"]]
[[!template text="""I am available in IRC""" start="00:09:53.800" video="mainVideo-justl" id="subtitle"]]
[[!template text="""if you have any questions.""" start="00:09:55.480" video="mainVideo-justl" id="subtitle"]]
Captioner: sachac
Questions or comments? Please e-mail [psibi2000@gmail.com](mailto:psibi2000@gmail.com?subject=Comment%20for%20EmacsConf%202022%20justl%3A%20justl%3A%20Driving%20recipes%20within%20Emacs)
<!-- End of emacsconf-publish-after-page -->
|