installation instructions, tzk preflight
This commit is contained in:
		
							
								
								
									
										15
									
								
								docs/configuration.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								docs/configuration.rst
									
									
									
									
									
										Normal 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, | ||||
| @@ -1,7 +1,7 @@ | ||||
| tzk | ||||
| === | ||||
|  | ||||
| **tzk** (pronounced /tə.zɪːk/) | ||||
| **tzk** (pronounced /tə'zɪːk/) | ||||
| is a custom build tool and utility CLI | ||||
| for Soren Bjornstad's Zettelkasten edition of TiddlyWiki. | ||||
|  | ||||
| @@ -9,6 +9,7 @@ for Soren Bjornstad's Zettelkasten edition of TiddlyWiki. | ||||
|    :maxdepth: 3 | ||||
|    :caption: Contents | ||||
|  | ||||
|    installation | ||||
|    operations | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										66
									
								
								docs/installation.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								docs/installation.rst
									
									
									
									
									
										Normal 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. | ||||
							
								
								
									
										4
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								setup.py
									
									
									
									
									
								
							| @@ -22,6 +22,8 @@ setuptools.setup( | ||||
|         "Programming Language :: Python :: 3", | ||||
|         "Programming Language :: Python :: 3.6", | ||||
|         "Programming Language :: Python :: 3.7", | ||||
|         "Programming Language :: Python :: 3.8", | ||||
|         "Programming Language :: Python :: 3.9", | ||||
|         "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", | ||||
|         "Operating System :: OS Independent", | ||||
|     ], | ||||
| @@ -30,5 +32,5 @@ setuptools.setup( | ||||
|             "tzk = tzk.__main__:launch" | ||||
|         ], | ||||
|     }, | ||||
|     python_requires='>=3.8', | ||||
|     python_requires='>=3.6', | ||||
| ) | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| from abc import ABC, abstractmethod, abstractclassmethod | ||||
| import argparse | ||||
| import os | ||||
| import shutil | ||||
| import sys | ||||
| import traceback | ||||
| from typing import Optional | ||||
| @@ -9,7 +8,7 @@ from typing import Optional | ||||
| from tzk.config import cm | ||||
| from tzk import git | ||||
| from tzk import tw | ||||
| from tzk.util import BuildError, fail, numerize | ||||
| from tzk.util import BuildError, fail, numerize, require_dependencies | ||||
|  | ||||
|  | ||||
| class CliCommand(ABC): | ||||
| @@ -141,13 +140,7 @@ class InitCommand(CliCommand): | ||||
|         ) | ||||
|  | ||||
|     def _precheck(self): | ||||
|         if shutil.which("npm") is None: | ||||
|             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") | ||||
|         require_dependencies() | ||||
|  | ||||
|         if os.path.exists("package.json"): | ||||
|             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) | ||||
|  | ||||
|  | ||||
| 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): | ||||
|     cmd = "build" | ||||
|     help = ("Build another wiki or derivative product, " | ||||
|   | ||||
							
								
								
									
										15
									
								
								tzk/util.py
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								tzk/util.py
									
									
									
									
									
								
							| @@ -3,6 +3,7 @@ util.py - miscellaneous utility functions | ||||
| """ | ||||
| from contextlib import contextmanager | ||||
| import os | ||||
| import shutil | ||||
| import sys | ||||
| from typing import NoReturn | ||||
|  | ||||
| @@ -40,3 +41,17 @@ def pushd(directory: str): | ||||
|         yield | ||||
|     finally: | ||||
|         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") | ||||
		Reference in New Issue
	
	Block a user
	 Soren I. Bjornstad
					Soren I. Bjornstad