installation instructions, tzk preflight

This commit is contained in:
Soren I. Bjornstad 2021-08-27 10:28:53 -05:00
parent 97a4611d56
commit e0ce707894
6 changed files with 117 additions and 11 deletions

15
docs/configuration.rst Normal file
View File

@ -0,0 +1,15 @@
===============
Configuring tzk
===============
Change into a directory you'd like to use as your Zettelkasten repository.
The directory should be empty, so you'll probably want to create a new one, e.g.:
```
$ mkdir my_zettelkasten
$ cd my_zettelkasten
```
Run ``tzk init``.
This will install TiddlyWiki,
set up a Git repository,

View File

@ -1,7 +1,7 @@
tzk tzk
=== ===
**tzk** (pronounced /tə.zɪːk/) **tzk** (pronounced /tə'zɪːk/)
is a custom build tool and utility CLI is a custom build tool and utility CLI
for Soren Bjornstad's Zettelkasten edition of TiddlyWiki. for Soren Bjornstad's Zettelkasten edition of TiddlyWiki.
@ -9,6 +9,7 @@ for Soren Bjornstad's Zettelkasten edition of TiddlyWiki.
:maxdepth: 3 :maxdepth: 3
:caption: Contents :caption: Contents
installation
operations operations

66
docs/installation.rst Normal file
View File

@ -0,0 +1,66 @@
==============
Installing tzk
==============
tzk itself
==========
On most systems, tzk may be installed directly from pip at a command line:
```
$ pip install tzk
```
If you don't have Python 3.6 or greater on your computer,
you'll need to install it first.
If you aren't sure how to do that,
here's an `exhaustive guide`_ to installing Python on all major operating systems.
Once you've gotten Python installed,
you'll be able to use ``pip`` to install tzk as described above.
To check your work, run ``tzk --version``;
you should see a version number rather than an error,
something like:
```
$ tzk --version
1.0.0
```
.. _exhaustive guide: https://realpython.com/installing-python/#how-to-install-python-on-macos
Dependencies
============
In order to set up your Zettelkasten,
you'll also need ``npm`` and ``git``.
You can check if they're installed like this:
```
$ npm --version
7.20.6
$ git --version
git version 2.32.0
```
Your versions will likely be a little different by the time you read this.
As long as you get a version number, you're good;
tzk does not use any features of either tool that require bleeding-edge versions.
If you don't have **npm**,
follow step 1 of the Node.js installation instructions in the `TiddlyWiki documentation`_.
You can skip all the remaining steps -- tzk takes care of that part for you.
If you don't have **git**,
follow the steps in the `Installing Git`_ section of Pro Git.
.. _TiddlyWiki documentation: https://tiddlywiki.com/#Installing%20TiddlyWiki%20on%20Node.js
.. _Installing Git: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
Checking your work
==================
Run ``tzk preflight`` to double-check that everything is correctly installed.

View File

@ -22,6 +22,8 @@ setuptools.setup(
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent", "Operating System :: OS Independent",
], ],
@ -30,5 +32,5 @@ setuptools.setup(
"tzk = tzk.__main__:launch" "tzk = tzk.__main__:launch"
], ],
}, },
python_requires='>=3.8', python_requires='>=3.6',
) )

View File

@ -1,7 +1,6 @@
from abc import ABC, abstractmethod, abstractclassmethod from abc import ABC, abstractmethod, abstractclassmethod
import argparse import argparse
import os import os
import shutil
import sys import sys
import traceback import traceback
from typing import Optional from typing import Optional
@ -9,7 +8,7 @@ from typing import Optional
from tzk.config import cm from tzk.config import cm
from tzk import git from tzk import git
from tzk import tw from tzk import tw
from tzk.util import BuildError, fail, numerize from tzk.util import BuildError, fail, numerize, require_dependencies
class CliCommand(ABC): class CliCommand(ABC):
@ -141,13 +140,7 @@ class InitCommand(CliCommand):
) )
def _precheck(self): def _precheck(self):
if shutil.which("npm") is None: require_dependencies()
fail("TZK requires NPM. Please install NPM and make it available on your PATH.\n"
"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm")
if shutil.which("git") is None:
fail("TZK requires Git. Please install Git and make it available on your PATH.\n"
"https://git-scm.com/book/en/v2/Getting-Started-Installing-Git")
if os.path.exists("package.json"): if os.path.exists("package.json"):
fail("A 'package.json' file already exists in the current directory. " fail("A 'package.json' file already exists in the current directory. "
@ -158,6 +151,20 @@ class InitCommand(CliCommand):
tw.install(args.wiki_name, args.tiddlywiki_version_spec, args.author) tw.install(args.wiki_name, args.tiddlywiki_version_spec, args.author)
class PreflightCommand(CliCommand):
cmd = "preflight"
help = "Check if tzk and all its dependencies are correctly installed."
@classmethod
def setup_arguments(cls, parser: argparse.ArgumentParser) -> None:
pass
def execute(self, args: argparse.Namespace) -> None:
require_dependencies()
print("You're all set! Change into a directory you want to "
"turn into your tzk repository and run 'tzk init'.")
class BuildCommand(CliCommand): class BuildCommand(CliCommand):
cmd = "build" cmd = "build"
help = ("Build another wiki or derivative product, " help = ("Build another wiki or derivative product, "

View File

@ -3,6 +3,7 @@ util.py - miscellaneous utility functions
""" """
from contextlib import contextmanager from contextlib import contextmanager
import os import os
import shutil
import sys import sys
from typing import NoReturn from typing import NoReturn
@ -40,3 +41,17 @@ def pushd(directory: str):
yield yield
finally: finally:
os.chdir(old_directory) os.chdir(old_directory)
def require_dependencies() -> None:
"""
Raise an exception if dependencies of tzk aren't available.
"""
if shutil.which("npm") is None:
fail("npm is not available. "
"Please install NPM and make it available on your PATH.\n"
"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm")
if shutil.which("git") is None:
fail("Git is not available. "
"Please install Git and make it available on your PATH.\n"
"https://git-scm.com/book/en/v2/Getting-Started-Installing-Git")