[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] run shell command after publishing project

From: Matt Price
Subject: Re: [O] run shell command after publishing project
Date: Fri, 8 Dec 2017 16:37:13 -0500

This sounds fantastic, Kaushal. I'm struggling to follow, so wl lask some questions inline. 

On Fri, Dec 8, 2017 at 2:58 PM, Kaushal Modi <address@hidden> wrote:
On Fri, Dec 8, 2017, 2:29 PM Matt Price <address@hidden> wrote:
Hi everyone,
Feeling a little rude after a long absence in which I dropped all my non-work commitments -- but still here to ask a question!


I'm setting up a new workflow using Kauhsal's ox-hugo.  I keep all my course materials in a few org files & publish to hugo-flavoured markdown.

Awesome! :D

  My source materials live in one git repo, and my website in another.  After exporting any of my my courses to the local hugo directory, I'd like to run a shell script that I'll keep in my org-files directory.  

That script
- cds to the website repo directory, commits changes to the website master branch, - runs hugo,
- switches to the "public" directory of compiled html pages, which has a worktree checked out to  the  gh-pages branch,
- commits changes there as well, and then
- pushes both branches to github. 

The script seems to work OK, and now I would like to run it every time I export from the appropriate projects. Is there a good way for me to do this? I guess a hook that only runs under certain conditions?

If I can get this to work, and then also auto export every time I commit the org-files to master (maybe with a post-commit git hook of ~emacsclient -e '(org-publish-project "course1"~ ?), then I will maybe be almost happy!

I haven't yet got to ox-publish to work with ox-hugo, because of the unique flow for subtree-based exports where we want to export only subtrees with a specific property (EXPORT_FILE_NAME). 

But I was finally able to achieve something like that using a Makefile [1] + Netlify (or GitHub Pages/Travis CI or GitLab CI).

ok, great.  

A very recent example (few days) is how I helped set up the use-package website publishing flow.

- ox-hugo + Hugo using Makefile + GitHub Pages. 

You *only* need to commit the use-package.org[2] to the GitHub repo, and https://jwiegley.github.io/use-package/ updates in a minute or so. The Travis CI simply calls "make doc". That takes care of:
- Installing dependencies if needed on the CI machine
- Exporting Org to Markdown using ox-hugo
- Running hugo
- Commiting published HTML to the gh-pages branch
- And the site gets deployed, just like that :)

- the doc/ directory contains the full Hugo source directory, with config.toml, content/, layouts, etc., as well as the theme, which looks like it's statically installed
- looks like maybe the hugo html ends up in public, but then it gets moved somehow (can't quite figure out how)
- the ox-hugo files are kept somewhere I guess
- presumably any personal config has to be replicated somewhere on the web where travis can access it
- is there any more setup that needs to be done on Travis?
- I have 4 main org files; 3 of them get copied per-header, and one as a whole file.  Is that an issue?

This all looks really ocol; too bad it's a bit out of my range, I'd like to understand it a little better!

To me the shell script idea feels easier, but I guess it's also a little brittle
PS: I publish the ox-hugo package website[3] the same way too, but using Netlify (/which is the better than GitHub Pages or Gitlab CI IMO -- free too/). See the footer of that site for the 1-file Org source. 

Sticking with Github for now since all my course stuff is there, probably easiest for my studnets ot have everything in the same place. 

thank you!


Kaushal Modi

reply via email to

[Prev in Thread] Current Thread [Next in Thread]