logo logo
Development: Setup

Setting up Securepub development is easy after prerequisites are installed.

Some of the commands below have triangles to the left. Clicking on those will reveal sample output from the command taken from a system running OSX 10.15.7

Choose a place for the worktree

This is the hardest step. To avoid thinking we'll keep things under /tmp/Securepub.

  % cd /tmp
  % mkdir Securepub
  % cd Securepub

git clone

We'll clone the repository to a directory called main.

    % git clone https://gitlab.com/securepub/r2401.git main
    Cloning into 'main'...
    remote: Enumerating objects: 5402, done.        
    remote: Counting objects: 100% (91/91), done.        
    remote: Compressing objects: 100% (15/15), done.        
    remote: Total 5402 (delta 83), reused 76 (delta 76), pack-reused 5311        
    Receiving objects: 100% (5402/5402), 2.55 MiB | 6.99 MiB/s, done.
    Resolving deltas: 100% (3313/3313), done.

cd and setup .envrc

  % cd main
  % cp .envrc.default .envrc && direnv allow .

just setup copy

This will

  • run pnpm install in the work/ directory to install all necessary modules
  • compile Securepub's vendored json-to-elm ↗︎
  • setup a python virtualenv for prettier ↗︎ and .sync.py
  • run .sync.py to copy files from src/ to work/

It's useful to perform these explicitly on first setup to verify the working environment is good. They aren't necessary after the environment is verified since the .justfile runs them on each build and on each start of interactive development.

  % just setup copy
    cd work            && pnpm install
    Scope: all 22 workspace projects
    Done in 6.5s
    cd work/vendor-j2e && pnpm compile-cli
> vendor-j2e@ compile-cli /private/tmp/Securepub/main/work/vendor-j2e
> ../elm/node_modules/.bin/elm make src/CommandLine.elm --output ./cli.js

Dependencies ready!
Success! Compiled 2 modules.

    CommandLine ───> ./cli.js

[ -e work/zola/static/_v1.2401_/jsp ] || just setup-jsp
setting up venv
Requirement already satisfied: pip in ./venv/lib/python3.11/site-packages
Collecting pip
  Using cached pip-24.0-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.3.1
    Uninstalling pip-22.3.1:
      Successfully uninstalled pip-22.3.1
Successfully installed pip-24.0
Collecting mergedeep
  Using cached mergedeep-1.3.4-py3-none-any.whl.metadata (4.3 kB)
Collecting pylint
  Using cached pylint-3.1.0-py3-none-any.whl.metadata (12 kB)
Collecting python-frontmatter
  Using cached python_frontmatter-1.1.0-py3-none-any.whl.metadata
Collecting sh
  Using cached sh-2.0.6-py3-none-any.whl.metadata (3.3 kB)
Collecting platformdirs>=2.2.0 (from pylint)
  Using cached platformdirs-4.2.0-py3-none-any.whl.metadata (11 kB)
Collecting astroid<=3.2.0-dev0,>=3.1.0 (from pylint)
  Using cached astroid-3.1.0-py3-none-any.whl.metadata (4.5 kB)
Collecting isort!=5.13.0,<6,>=4.2.5 (from pylint)
  Using cached isort-5.13.2-py3-none-any.whl.metadata (12 kB)
Collecting mccabe<0.8,>=0.6 (from pylint)
  Using cached mccabe-0.7.0-py2.py3-none-any.whl.metadata (5.0 kB)
Collecting tomlkit>=0.10.1 (from pylint)
  Using cached tomlkit-0.12.4-py3-none-any.whl.metadata (2.7 kB)
Collecting dill>=0.3.6 (from pylint)
  Using cached dill-0.3.8-py3-none-any.whl.metadata (10 kB)
Collecting PyYAML (from python-frontmatter)
  Using cached PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl.metadata
Using cached mergedeep-1.3.4-py3-none-any.whl (6.4 kB)
Using cached pylint-3.1.0-py3-none-any.whl (515 kB)
Using cached python_frontmatter-1.1.0-py3-none-any.whl (9.8 kB)
Using cached sh-2.0.6-py3-none-any.whl (38 kB)
Using cached astroid-3.1.0-py3-none-any.whl (275 kB)
Using cached dill-0.3.8-py3-none-any.whl (116 kB)
Using cached isort-5.13.2-py3-none-any.whl (92 kB)
Using cached mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB)
Using cached platformdirs-4.2.0-py3-none-any.whl (17 kB)
Using cached tomlkit-0.12.4-py3-none-any.whl (37 kB)
Using cached PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl (187 kB)
Installing collected packages: tomlkit, sh, PyYAML, platformdirs,
  mergedeep, mccabe, isort, dill, astroid, python-frontmatter, pylint
Successfully installed PyYAML-6.0.1 astroid-3.1.0 dill-0.3.8
  isort-5.13.2 mccabe-0.7.0 mergedeep-1.3.4 platformdirs-4.2.0
  pylint-3.1.0 python-frontmatter-1.1.0 sh-2.0.6 tomlkit-0.12.4

work/venv/bin/python3 work/.sync.py --force
Copying files
 00.test/_sync.conf:
 01.welcome/_sync.conf:
 02.how-it-works/_sync.conf:
 03.design/_sync.conf:
 04.development/_sync.conf:
 05.deployment/_sync.conf:
 06.about/_sync.conf:
 07.license/_sync.conf:
 10.create/_sync.conf:
 11.profile/_sync.conf:
 20.bundlelist/_sync.conf:
 21.bundle/_sync.conf:
 30.topiclist/_sync.conf:
 31.topic/_sync.conf:
 32.review/_sync.conf:
 40.memberlist/_sync.conf:
 41.member/_sync.conf:
 60.join/_sync.conf:
 61.signin/_sync.conf:
 elm/_sync.conf:
 ts/_sync.conf:
 workflow/_sync.conf: