-*- mode: org -*-
#+TITLE:       configuration dub
#+DESCRIPTION: documents - structuring, various output representations & search
#+FILETAGS:    :spine:hub:
#+AUTHOR:      Ralph Amissah
#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT:   Copyright (C) 2015 - 2023 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/]]

** spine version SET VERSION :version:set:project:

#+NAME: spine_version_set
#+BEGIN_SRC sh
0.12.0
#+END_SRC

*** dub.json :dub:config:json:
**** dub.json
***** file-system download external dependencies

- d2sqlite3
- dyaml
  - tinyendian
- imageformats

#+HEADER:  :tangle "../dub.json"
#+HEADER: :noweb yes
#+BEGIN_SRC json
{
  "authors": [
                             "Ralph Amissah"
  ],
  "copyright":                 "Copyright © 2002, 2023 Ralph Amissah",
  "name":                      "spine_search",
  "version":                   "0.12.0",
  "description":               "cgi search for spine, a sisu like document parser",
  "homepage":                  "https://sisudoc.org",
  "license":                   "AGPL-3.0+",
  "targetPath":                "./cgi-bin",
  "sourcePaths":               [ "./src" ],
  "stringImportPaths":         [ "./views" ],
  "buildRequirements":         [ "allowWarnings" ],
  "targetType":                "executable",
  "buildTypes": {
    "dmd": {
      "dflags":                [ "-J=views", "-I=src" ],
      "buildOptions":          [ "inline", "verbose" ],
      "buildRequirements":     [ "allowWarnings" ]
    },
    "ldc2": {
      "dflags":                [ "-O2", "-J=views", "-I=src" ],
      "buildOptions":          [ "optimize", "inline", "verbose" ],
      "buildRequirements":     [ "allowWarnings" ]
    },
    "ldmd2": {
      "dflags":                [ "-O2", "-boundscheck=on", "-J=views", "-I=src", "-color=on" ],
      "buildOptions":          [ "optimize", "inline", "verbose" ],
      "buildRequirements":     [ "allowWarnings" ]
    },
    "gdc": {
      "dflags":                [ "-O2", "-J=views", "-I=src" ],
      "buildOptions":          [ "optimize", "inline" ],
      "buildRequirements":     [ "allowWarnings" ]
    },
    "gdmd": {
      "dflags":                [ "-O2", "-J=views", "-I=src" ],
      "buildOptions":          [ "optimize", "inline" ],
      "buildRequirements":     [ "allowWarnings" ]
    }
  },
  "dependencies": {
    "spine_search:arsd.cgi":   "*",
    "spine_search:d2sqlite3":  "*"
  },
  "subPackages": [
    {
      "name":           "d2sqlite3",
      "description":    "A thin wrapper around SQLite 3",
      "homepage":       "https://github.com/dlang-community/d2sqlite3",
      "authors":        [ "Nicolas Sicard", "Other contributors: see Github repo" ],
      "copyright":      "Copyright 2011-18 Nicolas Sicard",
      "license":        "BSL-1.0",
      "sourcePaths":    [ "./src/ext_depends/d2sqlite3/source" ],
      "importPaths":    [ "./src/ext_depends/d2sqlite3/source" ],
      "configurations": [
        {
          "name":                "d2sqlite3",
          "targetType":          "library",
          "systemDependencies":  "SQLite version >= 3.8.7",
          "libs":                [ "sqlite3" ],
          "excludedSourceFiles": [ "source/tests.d" ]
        }
      ]
    },
    {
      "name":           "arsd.cgi",
      "description":    "cgi",
      "homepage":       "https://code.dlang.org/packages/arsd-official",
      "authors":        [ "Adam Ruppee" ],
      "copyright":      "Copyright 2011-18 Adam Ruppee",
      "license":        "BSL-1.0",
      "sourcePaths":    [ "./src/ext_depends/arsd" ],
      "importPaths":    [ "./src/ext_depends/arsd" ],
      "configurations": [
        {
          "name":                "cgi",
          "targetType":          "library",
          "systemDependencies":  "Arsd version >= 0.8.7"
        }
      ]
    }
  ],
  "configurations": [
    {
      "name":                  "default",
      "targetName":            "spine_search"
    },
    {
      "name":                  "ldc2",
      "targetName":            "spine-search-ldc.cgi"
    },
    {
      "name":                  "ldmd2",
      "targetName":            "spine-search-ldc.cgi"
    },
    {
      "name":                  "dmd",
      "targetName":            "spine-search-dmd.cgi"
    },
    {
      "name":                  "gdc",
      "targetName":            "spine-search-gdc.cgi"
    }
  ]
}
#+END_SRC

***** generic :generic:
****** build (sdp) :release:

#+BEGIN_SRC sh
configuration "build" {
  name                 "build"
  targetType           "executable"
  platforms            "posix"
  targetName           "bin/spine"
  dflags               "-J=views" "-I=src/doc_reform"
  buildOptions         "verbose" "releaseMode" "optimize" "inline"
  postGenerateCommands "notify-send -t 0 'D release executable ready' 'spine'"
}
#+END_SRC

** dub :dub:

https://github.com/dlang/dub/
https://code.dlang.org/getting_started
https://code.dlang.org/docs/commandline

*** setup
**** dub json or sdlang

Every DUB package should contain a [[https://code.dlang.org/package-format?lang=json][dub.json]] or [[https://code.dlang.org/package-format?lang=sdl][dub.sdl]]
https://code.dlang.org/package-format?lang=sdl
https://code.dlang.org/packages/sdlang-d
https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md

https://code.dlang.org/docs/commandline

**** dub dependencies

dub list
dub upgrade
dub fetch taggedalgebraic
dub fetch libinputvisitor
dub fetch unit-threaded ?

sdp ~master: /home/ralph/grotto/repo/git.repo/utils/spine-x/
/home/ralph/.dub/packages/*

*** build
**** debug flags

#+BEGIN_SRC sh
biblio
biblio_sorted
bibliosorted
block
bookindex
bookindexmatch
bookindexraw
check
checkdoc
code
comment
dumpdoc                    write out document contents, with object type and ocn
endnotes
endnotes_build
footnotes
footnotesdone
group
header
header_and_content
header1
headerjson
headermakejson
headermetadatajson
heading
headings
headingsfound
insert
io
munge
node
objectrelated1
objectrelated2
objects
ocnoff
para
parabullet
parabulletindent
paraindent
paraindenthang
parent
poem
quote
raw
source
srclines
structattrib
summary
table
toc
#+END_SRC

** dub REFERENCE
*** SET version

#+NAME: dub_version_set
#+HEADER: :noweb yes
#+BEGIN_SRC nix
<<dub_version_next>>
#+END_SRC

#+NAME: nix_sha_dub
#+HEADER: :noweb yes
#+BEGIN_SRC nix
<<nix_sha_dub_next>>
#+END_SRC

*** SELECT version
**** dub 1.24.0

#+NAME: dub_version_next
#+BEGIN_SRC nix
1.24.0
#+END_SRC

#+NAME: nix_sha_dub_next
#+BEGIN_SRC nix
0wirm6msz8kw2a7v2ax9ab6i48cmfv6qjwpfrl9vrr4k4xdg3vn6
#+END_SRC

**** dub 1.23.0

#+NAME: dub_version_current
#+BEGIN_SRC nix
1.23.0
#+END_SRC

#+NAME: nix_sha_dub_current
#+BEGIN_SRC nix
06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady
#+END_SRC