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 <kaushal.modi@gmail.com> wrote:
On Fri, Dec 8, 2017, 2:29 PM Matt Price <moptop99@gmail.com> 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!

Hello!

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 :)

so,
- 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