-*- mode: org -*-
#+TITLE:       sisudoc spine (doc_reform) (project) environment
#+DESCRIPTION: env envrc used by make & nix
#+FILETAGS:    :spine:build:tools:
#+AUTHOR:      Ralph Amissah
#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT:   Copyright (C) 2015 - 2024 Ralph Amissah
#+LANGUAGE:    en
#+STARTUP:     content hideblocks hidestars noindent entitiespretty
#+PROPERTY:    header-args  :exports code
#+PROPERTY:    header-args+ :noweb yes
#+PROPERTY:    header-args+ :results no
#+PROPERTY:    header-args+ :cache no
#+PROPERTY:    header-args+ :padline no
#+PROPERTY:    header-args+ :mkdirp yes
#+OPTIONS:     H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t

- [[./doc-reform.org][doc-reform.org]]  [[../org/][org/]]
- [[./config_nix.org][config_nix.org]]
- [[./config_make.org][config_make.org]]

* envrc
** nixDevEnv envrc :envrc:

#+HEADER: :tangle ../nixDevEnv.sh
#+BEGIN_SRC sh
if [ -f .envrc ]; then
  source_env_if_exists .envrc || source .envrc
fi
#+END_SRC

** envrc :envrc:

#+NAME: envrc
#+HEADER: :tangle ../.envrc
#+BEGIN_SRC sh
if [ -f .envrc-git-init ]; then
  source_env_if_exists .envrc-git-init || source .envrc-git-init
fi
if [ -f .envrc-local ]; then
  source_env_if_exists .envrc-local || source .envrc-local
fi
if [ -f .envrc-nix ]; then
  source_env_if_exists .envrc-nix || source .envrc-nix
fi
#+END_SRC

** .envrc-nix

- https://github.com/nix-community/nix-direnv
  - source_url
    - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv-sha>>"
    - ${NixDirEnvVersion}

#+HEADER: :tangle ../.envrc-nix
#+BEGIN_SRC sh
NIX_ENFORCE_PURITY=1
# - https://github.com/nix-community/nix-direnv
NixDirEnvVersion="<<direnv-version>>"
NixDirEnvSHA="<<direnv-sha>>"
if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then
  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}"
fi
watch_file flake.lock
watch_file flake.nix
watch_file shell.nix
watch_file makefile
watch_file nixDevEnv.sh
watch_file .envrc-local
watch_file .envrc-nix
PATH_add result/bin
use flake .
#use flake .#default
echo '
• consider running:
  ❯❯ nix flake show
  ❯❯ nix flake update && nix flake check && nix flake show

• for a dev shell (development environment):

  ❯❯ nix develop
  ❯❯ nix develop ".#" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-epub" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-html" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-i18n" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-latex-pdf" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-overlay-ldc" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-spine" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-sqlite" --print-build-logs -c zsh

• to build project:

  ❯❯ nix build --print-build-logs
  ❯❯ nix build ".#" --print-build-logs

• to build project:
  ❯❯ nix build ".#spine-overlay-dmd" --print-build-logs
  ❯❯ nix build ".#spine-overlay-ldc" --print-build-logs

• to build using dub (on nix or otherwise):

  you need to be in sisudoc-spine to use source code tree directly.

• for develop environment & build options

  ❯❯ nix flake update && nix flake check && nix flake show
  ❯❯ nix flake show

• if on nix: build the sisudoc-spine using nix build commands above and
  run the result against the sample files here in the sisudoc-spine-samples dir
  (assuming the appropriate paths have been set in your .envrc-local)

  ❯❯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/*
  ❯❯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/*
'
echo "•
  ❯❯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/*
  ❯❯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/*
"
#+END_SRC

*** 3.0.6

#+NAME: direnv-version
#+BEGIN_SRC sh
3.0.6
#+END_SRC

#+NAME: direnv-sha
#+BEGIN_SRC sh
sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM=
#+END_SRC

*** 3.0.4

#+BEGIN_SRC sh
3.0.4
#+END_SRC

#+BEGIN_SRC sh
sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4=
#+END_SRC

*** 3.0.0

#+BEGIN_SRC sh
3.0.0
#+END_SRC

#+BEGIN_SRC sh
sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=
#+END_SRC

*** 2.4.0

#+BEGIN_SRC sh
2.4.0
#+END_SRC

#+BEGIN_SRC sh
sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=
#+END_SRC

#+BEGIN_SRC sh
2.3.0
#+END_SRC

#+BEGIN_SRC sh
sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=
#+END_SRC

#+NAME: direnv-sha_
#+BEGIN_SRC sh
sha256-0000000000000000000000000000000000000000000=
#+END_SRC

#+BEGIN_SRC sh
- https://github.com/nix-community/nix-direnv
NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000="
direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc
#+END_SRC

** .envrc-git-init

#+HEADER: :tangle ../.envrc-git-init
#+HEADER: :noweb yes
#+BEGIN_SRC sh
if [[ ! -d ./.git ]]; then
  git init
  git add .
fi
#+END_SRC

** .envrc-local CHECK MODIFY

- bespoke modify appropriately and generate if needed

#+HEADER: :tangle ../.envrc-local_
#+HEADER: :noweb yes
#+BEGIN_SRC sh
export SpineBIN=./result/bin/spine
# ❯❯ nix builds spine binary:
#export SpineBIN=./result/bin/spine
# ❯❯ if from ../sisudoc-spine on directory tree nix build
#export SpineBIN=../sisudoc-spine/result/bin/spine
# ❯❯ dub builds spine binary (name depends on build, check):
#export SpineBIN=../sisudoc-spine/bin/spine
#export SpineBIN=../sisudoc-spine/bin/spine-ldc
#export SpineBIN=../sisudoc-spine/bin/spine-dmd
# ❯❯ location of source files:
export SpineDOC=.
# ❯❯ location of source files pod:
export SpinePOD=${SpineDOC}/markup/pod
# ❯❯ sisudoc-spine output processing path:
export SpineOUT=./OUTPUT_TEST_sisudocSpine
# ❯❯ sisudoc-spine output processing path (web server e.g.):
#export SpineOUT=/srv/www/spine
# ❯❯ path configured for cgi search form:
export SpineSearchActionLocal='http://localhost/spine_search'
export SpineSearchActionRemote='https://sisudoc.org/spine_search'
# ❯❯ cgi search form name:
export SpineCGIform='spine_search'
# ❯❯ search form db name:
export SpineSQLdb='spine.search.db'
# ❯❯ configuration cgi search form path:
export SpineCGIbin=/var/www/cgi/cgi-bin
# ❯❯ configuration db path:
export SpineDBpath=/var/www/sqlite
#export SpineDBpath=/srv/www/spine/sqlite
#+END_SRC