README: various updates/fixes
- Reflects the latest impl - Adds various clarifications - Adds clarity to environment `gen` - Fixes/Improves installation notes/process
This commit is contained in:
243
README.md
243
README.md
@@ -20,6 +20,8 @@
|
||||
|
||||
**Modern accounting for the power-user** | *Crypto, banking, tax prep, meta analysis & more!*
|
||||
|
||||
> Looking for a Quickstart? Skip to [Installation](#installation).
|
||||
|
||||
1. **[What does it do?](#what-does-it-do)**
|
||||
- [Overview](#overview)
|
||||
- [Highlights](#highlights)
|
||||
@@ -50,9 +52,9 @@
|
||||
|
||||
### Overview
|
||||
|
||||
`docker-finance` empowers you with a privacy-focused, highly uniform system of financial management - but with a modern twist.
|
||||
`docker-finance` gives you the power of a privacy-focused, highly uniform system of financial management - but with a modern twist.
|
||||
|
||||
Cryptocurrencies and blockchain metadata are unified with your legacy finances to create a world of best-practice accounting in a highly flexible, time-tested environment.
|
||||
Cryptocurrencies & blockchain metadata are unified with legacy finance to create a world of best-practice accounting in a highly flexible, time-tested environment.
|
||||
|
||||
### Highlights
|
||||
|
||||
@@ -241,32 +243,46 @@ Supported blockchains (independent of wallet type):
|
||||
|
||||
### Installation
|
||||
|
||||
`docker-finance` is not your typical Docker image in which you simply pull and containerize but rather, its an *image-based* accounting system that functions almost entirely within your container.
|
||||
`docker-finance` is not your typical Docker image in which you simply pull and containerize, but rather it's an *image-based* accounting system that operates transparently between your client (host) and container; keeping your finances containerized, with all the benefits of containerization.
|
||||
|
||||
`docker-finance` *should* work out-of-the-box on any modern Linux system. For example, if your client (host) is Ubuntu, the default installation of `coreutils`, `shells` and `utils` that came with your system will satisfy requirements. However, you'll still need to manually install Docker (see below).
|
||||
|
||||
1. **Install dependencies** (most recent stable versions):
|
||||
- [Docker](https://docs.docker.com/engine/install/) with [post-install configuration](https://docs.docker.com/engine/install/linux-postinstall/)
|
||||
- GNU Bash 5.2+
|
||||
- If you don't have `bash` installed by default (or if `bash` is not your default shell), setup `bash` per your system's documentation
|
||||
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git/), for step 3 (**strongly advised**):
|
||||
- `git` should be available via your package manager (e.g., `apt`, `pacman`, etc.).
|
||||
1. **Install dependencies**:
|
||||
1. [Docker Engine](https://docs.docker.com/engine/install/#supported-platforms) with [post-install configuration](https://docs.docker.com/engine/install/linux-postinstall/)
|
||||
- Latest version (or at least `27.1.1`)
|
||||
2. [GNU Bash](https://www.gnu.org/software/bash/)
|
||||
- Latest version (or at least `5.0.17`)
|
||||
- Installed by *default* on most Linux distributions
|
||||
|
||||
2. **Open a `bash` shell**, if you haven't already done so.
|
||||
2. **Install recommended**:
|
||||
1. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git/)
|
||||
- Latest version (or at least `2.25.1`)
|
||||
- Only needed for step 3 but should be kept in order to:
|
||||
- Remain up-to-date with future `docker-finance` versions
|
||||
- Safely track your workflow related data (journals, metadata, etc.)
|
||||
2. Consider using a terminal multiplexer like [tmux](https://github.com/tmux/tmux/wiki) or [screen](https://www.gnu.org/software/screen/) for optimal workflow efficiency
|
||||
|
||||
3. **Copy/paste the following into your shell** (one-time repository clone and client preparation):
|
||||
3. **Copy/paste the following into your `bash` shell** (one-time repository clone and client preparation):
|
||||
```bash
|
||||
bashrc=~/.bashrc
|
||||
aliases=~/.bash_aliases
|
||||
if [[ -f "$bashrc" && ! -f "$aliases" ]]; then
|
||||
if ! grep -E "(^\. ${aliases}|^source ${aliases})" "$bashrc" 1>/dev/null; then
|
||||
aliases="$bashrc"
|
||||
fi
|
||||
fi
|
||||
if git clone https://gitea.com/EvergreenCrypto/docker-finance; then
|
||||
if ! grep -E "^alias docker-finance=" "$aliases" 1>/dev/null; then
|
||||
echo "alias docker-finance='$(pwd)/docker-finance/client/docker.bash archlinux/$(whoami):latest'" >>"$aliases"
|
||||
source "$aliases"
|
||||
if ! test -f "$bashrc" || ! hash bash &>/dev/null; then
|
||||
echo "FATAL: unsupported bash installation"
|
||||
else
|
||||
if [[ ! -z "$SHELL" && "$SHELL" =~ bash ]]; then
|
||||
if [ ! -f "$aliases" ]; then
|
||||
if ! grep -E "(\. ~/.bash_aliases|^source ~/.bash_aliases|^source ${aliases})" "$bashrc" &>/dev/null; then
|
||||
aliases="$bashrc"
|
||||
fi
|
||||
fi
|
||||
if git clone https://gitea.com/EvergreenCrypto/docker-finance; then
|
||||
if ! grep -E "^alias docker-finance=" "$aliases" &>/dev/null; then
|
||||
echo "alias docker-finance='$(pwd)/docker-finance/client/docker.bash archlinux/$(whoami):latest'" >>"$aliases"
|
||||
source "$aliases"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "FATAL: unsupported bash environment"
|
||||
fi
|
||||
fi
|
||||
```
|
||||
@@ -291,97 +307,102 @@ Supported blockchains (independent of wallet type):
|
||||
```bash
|
||||
docker-finance build type=default && docker-finance up
|
||||
```
|
||||
> Note: see `docker-finance build help` for build options.
|
||||
> See `docker-finance build help` for build options (such as smaller, faster builds)
|
||||
|
||||
7. **You're inside!** See [How do I use it?](#how-do-i-use-it) for next steps.
|
||||
|
||||
### Environment Generation
|
||||
|
||||
`docker-finance`'s environment consists of two scopes: `client` and `container`. The client (host) view is confined to the host while the container view confined to the container (though the client *can*, at times, view from *within* the container's perspective). Think of the client as a class that inherits the container as a protected class with all the relevant permissions and scope.
|
||||
`docker-finance`'s environment consists of two scopes: `client` and `container`. The client (host) view is confined to the host while the container view confined to the container (though the client *can*, at times, view from *within* the container's perspective).
|
||||
|
||||
In terms of configuration, the client (host) has two primary files, with one of them being mutually shared with the container. The 1st file is the [Client (Host) Configuration File](#client-host-configuration) and the 2nd file is a joint [Client/Container Superscript](#clientcontainer-superscript). Think of this **superscript** as the glue that binds the client/container scopes.
|
||||
In terms of configuration, the client (host) has the following files:
|
||||
1. The [Client (Host) Configuration File](#client-host-configuration) (client only)
|
||||
2. The [Client (Host) Custom Dockerfile](#client-host-custom-dockerfile) (client only)
|
||||
3. The [Client/Container Superscript](#clientcontainer-superscript) (client/container)
|
||||
|
||||
You'll create these files (and more) when running `docker-finance gen`, as seen below.
|
||||
|
||||
#### Client generation
|
||||
> Tip: client scope can be considered an OOP class which inherits the container as a protected class, with the [Client/Container Superscript](#clientcontainer-superscript) binding them.
|
||||
|
||||
> Client-side environment found, backup then generate new one?
|
||||
---
|
||||
|
||||
Generates the client (host) configuration file. See the [Client (Host) Configuration File](#configuration-files) section for details.
|
||||
#### Client Generation
|
||||
|
||||
When running `gen`, you'll see the following:
|
||||
|
||||
> *Client-side environment found, backup then generate new one?*
|
||||
|
||||
Generates the client (host) configuration file (see the [Client (Host) Configuration File](#client-host-configuration) for details).
|
||||
|
||||
- You can use the generated defaults but make sure your directory layout matches accordingly
|
||||
- To easily edit this configuration file after `gen` is complete, run `docker-finance edit type=env`
|
||||
|
||||
#### Container generation
|
||||
> *Generating new custom (optional) Dockerfile*
|
||||
|
||||
Container generation comes after (and *must* come after) client environment generation.
|
||||
Generates custom Dockerfile. Do as you wish; install your own container packages, etc. (see the [Client (Host) Custom Dockerfile](#client-host-custom-dockerfile) for details).
|
||||
|
||||
The container environment contains the bulk of configurations for everything you'll need while inside `docker-finance`.
|
||||
- To easily edit this configuration file after `gen` is complete, run `docker-finance edit type=build`
|
||||
|
||||
---
|
||||
> Generate (or update) container profile configs and/or accounts?
|
||||
|
||||
The container environment is a minimum requirement but here you'll have the option to continue generating or to backup a previous install.
|
||||
#### Container Generation
|
||||
|
||||
---
|
||||
> Will this profile be used for development and/or demonstration?
|
||||
After the previous client environment is generated, the following will prepare the container environment (everything you'll need while inside `docker-finance`).
|
||||
|
||||
> *Generate (or update) container profile configs and/or accounts?*
|
||||
|
||||
Although the container environment is a minimum requirement, here you'll have the option to continue generating or to backup a previous install.
|
||||
|
||||
> *Will this profile be used for development and/or demonstration?*
|
||||
|
||||
If you're a developer or wish to see the mockup test profile, select 'y' here.
|
||||
|
||||
> Enter profile name (e.g., family in 'family/alice')
|
||||
> Enter subprofile name (e.g., alice in 'family/alice')
|
||||
> *Enter profile name (e.g., family in 'family/alice')*
|
||||
> *Enter subprofile name (e.g., alice in 'family/alice')*
|
||||
|
||||
Container generation will always be for a specific `profile` with `subprofile`, and here is where you input that information.
|
||||
|
||||
For example, you could have a `family` profile with subprofiles of various family members or a `business` profile with subprofiles of all the various businesses you own.
|
||||
Container generation will always be for a specific `profile` with `subprofile`, and here is where you input that information. For example, you could have a `family` profile with subprofiles of various family members or a `business` profile with subprofiles of all the various businesses you own.
|
||||
|
||||
It should be noted that:
|
||||
- all subsequent questions and container generation will relate to this `profile/subprofile` pairing
|
||||
- all output will be sent to the `${DOCKER_FINANCE_CONTAINER_FLOW}/profiles/profile/subprofile` path
|
||||
|
||||
---
|
||||
> Generate (or update) joint client/container shell script (superscript)? [Y/n]
|
||||
> *Generate (or update) joint client/container shell script (superscript)? [Y/n]*
|
||||
|
||||
Select 'y' if this a first-run. If this is not a first-run but you need to regenerate the file, the select 'y'.
|
||||
Select 'y' if this a first-run. If this is not a first-run but you need to regenerate the file, then select 'y' (see [Superscript](#clientcontainer-superscript) for details).
|
||||
|
||||
See [Superscript](#clientcontainer-superscript) for details.
|
||||
|
||||
---
|
||||
> Generate (or update) container hledger-flow configs and/or accounts?
|
||||
> *Generate (or update) container hledger-flow configs and/or accounts?*
|
||||
|
||||
Not limited to `hledger-flow` data, this option leads to generating *all* `docker-finance` journal data (and configurations).
|
||||
|
||||
---
|
||||
> Generate (or update) subprofile's shell script?
|
||||
> *Generate (or update) subprofile's shell script?*
|
||||
|
||||
The container's subprofile's shell script is where all subprofile commands and aliases exist.
|
||||
|
||||
This file is generated on a per-subprofile basis and all custom code *on a per-subprofile basis* should go here.
|
||||
This file is generated on a per-subprofile basis and all custom code *on a per-subprofile basis* should go here (see [Subprofile](#subprofile) for details).
|
||||
|
||||
---
|
||||
> Generate (or update) subprofile's fetch configuration?
|
||||
> *Generate (or update) subprofile's fetch configuration?*
|
||||
|
||||
The container's fetch configuration is what all remote fetching relies on: prices, exchanges, blockchain explorers; all are configured here. See [Container Configurations](#container-configurations) for details.
|
||||
The container's fetch configuration is what all remote fetching relies on: prices, exchanges, blockchain explorers; all are configured here (see [Fetch](#fetch-1) for details).
|
||||
|
||||
---
|
||||
> Generate (or update) subprofile's financial metadata?
|
||||
> *Generate (or update) subprofile's financial metadata?*
|
||||
|
||||
The container's *per-subprofile* metadata file.
|
||||
|
||||
This file contains all your custom metadata and can edited with the `edit` and analyzed with the `meta` or `root` command. See [Container Configurations](#container-configurations) for details.
|
||||
This file contains all your custom metadata and can edited with the `edit` and analyzed with the `meta` or `root` command (see [Meta](#meta) for details).
|
||||
|
||||
---
|
||||
> Generate (or update) subprofile's hledger-flow accounts?
|
||||
> *Generate (or update) subprofile's hledger-flow accounts?*
|
||||
|
||||
The container's `hledger-flow` accounts to be installed. These are the accounts described in [What is supported?](#what-is-supported).
|
||||
|
||||
> *Generate individual subprofile accounts instead of generating them all at once?*
|
||||
|
||||
If you intend to only use a few accounts, you can do so here. Otherwise, generate all accounts (recommended).
|
||||
|
||||
**WARNING**: if you plan to use blockchain-based wallets (coinbase-wallet, pera-wallet, ledger, metamask, etc.), you **MUST** generate their respective chains, as seen during generation (`algorand`, `ethereum-based`, `tezos`, etc).
|
||||
|
||||
### Configuration Files
|
||||
|
||||
> Note: Docker volumes aren't used because of chicken-or-the-egg problem, regarding client configuration (among other reasons). `docker-finance` needs the client environment *before* building the Docker image and spawning the subsequent container (which would rely on volumes).
|
||||
|
||||
#### Client (host) configuration
|
||||
#### Client (Host) Configuration
|
||||
|
||||
The client (host) configuration file:
|
||||
- is located in the `${DOCKER_FINANCE_CLIENT_CONF}/client/env/` directory, with subdirectory format of `kernel-machine/platform/tag`
|
||||
@@ -391,22 +412,23 @@ The client (host) configuration file:
|
||||
- consists solely of variables in the format `DOCKER_FINANCE_VARIABLE=value` and is used by both Docker and `docker-finance`
|
||||
- default template variables can be found in [gen.bash](client/docker-finance.d/client/env/gen.bash), as described below
|
||||
|
||||
---
|
||||
After `gen` is complete, you can edit this file with the client (host) command: `docker-finance edit type=env` (see [Client (Host) Command Format](#client-host-command-format)).
|
||||
|
||||
|
||||
> DOCKER_FINANCE_CLIENT_CONF
|
||||
|
||||
Client (host) configuration path. Parent directory for client configuration files.
|
||||
|
||||
|
||||
- Example: `DOCKER_FINANCE_CLIENT_CONF=/home/${USER}/.config/docker-finance.d`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CLIENT_FLOW
|
||||
|
||||
Client (host) hledger-flow path. Parent directory for all profiles.
|
||||
|
||||
- Example: `DOCKER_FINANCE_CLIENT_FLOW=/net/nfs4/hledger-flow`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CLIENT_REPO
|
||||
|
||||
Client (host) path for the `docker-finance` code repository (from the host's perspective).
|
||||
@@ -415,7 +437,7 @@ This parent directory is where the `client` and `container` directories are loca
|
||||
|
||||
- Example: `DOCKER_FINANCE_CLIENT_REPO=/net/nfs4/git/docker-finance`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CLIENT_SHARED
|
||||
|
||||
Client (host) path for the client/container shared directory.
|
||||
@@ -424,7 +446,6 @@ The bind-mount is used exclusively for non-essential file sharing (custom script
|
||||
|
||||
- Example: `DOCKER_FINANCE_CLIENT_SHARED=/mnt/share.d`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_CMD
|
||||
|
||||
@@ -434,21 +455,21 @@ Default: `finance.bash` (internally aliased to `finance`)
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_CMD=finance.bash`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_CONF
|
||||
|
||||
The container's configuration path (bind-mounted to client's (host's) configuration path).
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_CONF=/home/${USER}/.config/docker-finance.d`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_EDITOR
|
||||
|
||||
The container's default text editor.
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_EDITOR=vim`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_FLOW
|
||||
|
||||
The container's hledger-flow path from the container's perspective.
|
||||
@@ -457,7 +478,7 @@ This path is bind-mounted to the client's (host's) hledger-flow path.
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_FLOW=/home/${USER}/hledger-flow`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_REPO
|
||||
|
||||
The container's `docker-finance` code repository path (as viewed from the container).
|
||||
@@ -466,62 +487,62 @@ This path is bind-mounted to the client's (host's) `docker-finance/container` pa
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_REPO=/home/${USER}/docker-finance`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CONTAINER_SHARED
|
||||
|
||||
The container's `share.d` path, bind-mounted to client's (host's) `share.d` path.
|
||||
|
||||
- Example: `DOCKER_FINANCE_CONTAINER_FLOW=/home/${USER}/share.d`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_CPUS
|
||||
|
||||
Docker daemon/container setting: number of CPUs to use.
|
||||
|
||||
- Example: `DOCKER_FINANCE_CPUS=2`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_DEBUG
|
||||
|
||||
Enable/disable debugging code paths (e.g., debug logging)
|
||||
|
||||
- Example: `DOCKER_FINANCE_DEBUG=true`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_PORT_HLEDGER
|
||||
|
||||
`hledger-web` client-side (host) port
|
||||
|
||||
- Example: `DOCKER_FINANCE_PORT_HLEDGER=5000`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_PORT_ROOT
|
||||
|
||||
`root` client-side (host) port for web interface
|
||||
|
||||
- Example: `DOCKER_FINANCE_PORT_ROOT=8080`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_MEMORY
|
||||
|
||||
`docker-finance` container memory limit (see Docker documentation).
|
||||
- Example: `5G`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_GID
|
||||
|
||||
Group ID for bind mount. **MUST** have write permissions to rw bind-mounts.
|
||||
|
||||
- Example: `DOCKER_FINANCE_GID=998`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_UID
|
||||
|
||||
User ID for bind mount. **MUST** have write permissions to rw bind-mounts.
|
||||
|
||||
- Example: `DOCKER_FINANCE_UID=1001`
|
||||
|
||||
---
|
||||
|
||||
> DOCKER_FINANCE_USER
|
||||
|
||||
`docker-finance` container user.
|
||||
@@ -534,6 +555,19 @@ User **MUST** have write permissions to rw bind-mounts.
|
||||
|
||||
---
|
||||
|
||||
#### Client (Host) Custom Dockerfile
|
||||
|
||||
The client (host) custom Dockerfile:
|
||||
- is appended to the final generated Dockerfile
|
||||
- allows you to append any Dockerfile command to a generated build
|
||||
- is located in the `${DOCKER_FINANCE_CLIENT_CONF}/client/Dockerfiles/` directory
|
||||
- format consists of `username@hostname` where `username` is your host username and `hostname` is your machine's hostname
|
||||
- default generated templates can be found [here](client/docker-finance.d/client/Dockerfiles)
|
||||
|
||||
After `gen` is complete, you can edit this file with the client (host) command: `docker-finance edit type=build` (see [Client (Host) Command Format](#client-host-command-format)).
|
||||
|
||||
---
|
||||
|
||||
#### Client/Container Superscript
|
||||
|
||||
The client/container shell script (Superscript) is a bind-mounted (by directory) script that:
|
||||
@@ -546,7 +580,9 @@ See the in-file comments for further documentation:
|
||||
|
||||
- [superscript.bash.in](client/docker-finance.d/container/shell/superscript.bash.in)
|
||||
|
||||
> Note: as described in [Client (host) command format](#client-host-command-format), to edit this file, issue the client (host) command: `docker-finance edit type=shell`
|
||||
After `gen` is complete, you can edit this file with the client (host) command: `docker-finance edit type=shell` (see [Client (Host) Command Format](#client-host-command-format)).
|
||||
|
||||
---
|
||||
|
||||
#### Container Configurations
|
||||
|
||||
@@ -562,6 +598,8 @@ See the in-file comments for further documentation:
|
||||
|
||||
- [subprofile.bash.in](client/docker-finance.d/container/shell/subprofile.bash.in)
|
||||
|
||||
After `gen` is complete, from within the container, you can edit this file with: `finance profile/subprofile edit type=shell` (see [Container Command Format](#container-command-format)).
|
||||
|
||||
##### *Fetch*
|
||||
|
||||
The source of all remote API fetching configurations (exchanges, blockchains, market prices). This file is used by both the `fetch` and `edit type=fetch` commands.
|
||||
@@ -570,6 +608,8 @@ See the in-file comments for further documentation:
|
||||
|
||||
- [fetch.yaml.in](client/docker-finance.d/container/fetch/fetch.yaml.in)
|
||||
|
||||
After `gen` is complete, from within the container, you can edit this file with: `finance profile/subprofile edit type=fetch` (see [Container Command Format](#container-command-format)).
|
||||
|
||||
##### *Meta*
|
||||
|
||||
The source of all custom metadata information (typically used to store cryptocurrency metadata information). This file is used by the `meta`, `edit type=meta` and `root` commands, as seen in [Meta (w/ ROOT C++ analysis)](#meta-w-root-c-analysis).
|
||||
@@ -578,6 +618,8 @@ See the in-file comments for further documentation:
|
||||
|
||||
- [meta.csv.in](client/docker-finance.d/container/meta/meta.csv.in)
|
||||
|
||||
After `gen` is complete, from within the container, you can edit this file with: `finance profile/subprofile edit type=meta` (see [Container Command Format](#container-command-format)).
|
||||
|
||||
## How do I use it?
|
||||
|
||||
### Mostly-Unified CLI
|
||||
@@ -650,33 +692,35 @@ Where:
|
||||
- `<command>` is the command to pass to `finance.bash`
|
||||
- `[args]` are the (optional) arguments to pass to `<command>`
|
||||
|
||||
> Note: by default, the finance command can be called by either `finance.bash` or `finance`.
|
||||
By default, `finance.bash` is aliased to `finance` (so, either can be used).
|
||||
|
||||
For a complete list of commands and usage help:
|
||||
For a complete list of commands (no `<profile/subprofile>` needed):
|
||||
|
||||
```bash
|
||||
finance help
|
||||
```
|
||||
|
||||
You can also view the help usage of, for example, the `fetch` command (notice the need for `<profile/subprofile>`):
|
||||
You can also view the help usage of, for example, the `fetch` command (notice the need for `<profile/subprofile>`).
|
||||
|
||||
Assuming `<profile/subprofile>` is `testprofile/testuser`:
|
||||
|
||||
```bash
|
||||
finance testprofile/testuser fetch help
|
||||
```
|
||||
|
||||
> Note: the `finance` alias is named to avoid confusion with the client (host) command `docker-finance` - but you can still use the alias `docker-finance` *within* the container in place of all `finance` commands.
|
||||
|
||||
Or, use a subprofile alias, as described in [Subprofile](#subprofile):
|
||||
|
||||
```bash
|
||||
testuser_fetch help
|
||||
```
|
||||
|
||||
> Note: the `finance` alias is named to avoid confusion with the client (host) command `docker-finance`, but you can still use the alias `docker-finance` *within* the container in place of all `finance` commands.
|
||||
|
||||
### Flow Layout
|
||||
|
||||
A primary read through of [hledger](https://hledger.org) and [hledger-flow](https://github.com/apauley/hledger-flow/blob/master/README.org) documentation should bring you up to speed on the essentials.
|
||||
|
||||
As for `docker-finance` specifics, create a test profile during [Environment Generation](#environment-generation) to see what your flow's layout should look like.
|
||||
As for `docker-finance` specifics, you can create a *test profile* during [Environment Generation](#environment-generation) to see what your flow's layout should look like.
|
||||
> Note: be sure to select 'y' when asked if this will be a development profile, and then go on to create account(s).
|
||||
|
||||
Once inside the container, assuming you created a profile named `testprofile` and subprofile named `testuser`, issue the following commands:
|
||||
@@ -684,7 +728,9 @@ Once inside the container, assuming you created a profile named `testprofile` an
|
||||
```bash
|
||||
finance testprofile/testuser fetch all=price year=all && finance testprofile/testuser import year=2018
|
||||
```
|
||||
> Note: you **MUST** import from `2018` as there are mockup accounts that begin from that year
|
||||
> Note: for this *test profile* with developer mockups, you **MUST** import from `2018` as there are accounts that begin from that year
|
||||
|
||||
After experimenting with a *test profile*, you can re-run `gen` again to create your own normal profile.
|
||||
|
||||
---
|
||||
|
||||
@@ -714,8 +760,8 @@ Peeking inside `${DOCKER_FINANCE_CONTAINER_FLOW}/profiles/profile/subprofile`, y
|
||||
|
||||
Regarding any profile you create:
|
||||
|
||||
- For manual CSV downloads, place you CSV file into your `${DOCKER_FINANCE_CONTAINER_FLOW}/profiles/profile/subprofile/import/subprofile/account/subaccount/1-in/year` directory - replacing `year` with the year of data that the file/data represents (see `import help` for details).
|
||||
- When you want to edit custom settings for an account or a subaccount, use the `edit` command (see `edit help` for details).
|
||||
- For manual CSV downloads, place you CSV file into your `${DOCKER_FINANCE_CONTAINER_FLOW}/profiles/profile/subprofile/import/subprofile/account/subaccount/1-in/year` directory (replacing `year` with the year of data that the file/data represents). See `import help` for details.
|
||||
- When you want to edit custom settings for an account or a subaccount, use the `edit` command. See `edit help` for details.
|
||||
- Your `hledger-flow` will contain a symlink called `src` which links to all the internal mechanics that process your data. **Do not delete this link**.
|
||||
|
||||
### Caveats & Oddities
|
||||
@@ -764,32 +810,32 @@ Your input is valuable and appreciated. Come, make this project your own!
|
||||
|
||||
> This pool is reserved for the `docker-finance` ecosystem (developers & operating costs).
|
||||
|
||||
##### Cryptocurrency
|
||||
##### *Cryptocurrency*
|
||||
|
||||
[Donate with Coinbase Commerce](https://commerce.coinbase.com/checkout/8831f2a9-1797-4aff-8cc3-bdbf97136a97)
|
||||
|
||||
[<img src=".img/donation/coinbase-commerce.png" width="25%" height="25%" />](https://commerce.coinbase.com/checkout/8831f2a9-1797-4aff-8cc3-bdbf97136a97 "Donate with Coinbase Commerce")
|
||||
|
||||
##### Legacy
|
||||
##### *Legacy*
|
||||
|
||||
[Donate with PayPal](https://www.paypal.com/donate/?hosted_button_id=2RESHZY8U37EJ)
|
||||
|
||||
[<img src=".img/donation/paypal-business.png" width="25%" height="25%" />](https://www.paypal.com/donate/?hosted_button_id=2RESHZY8U37EJ "Donate with PayPal")
|
||||
|
||||
##### Alternative
|
||||
##### *Alternative*
|
||||
|
||||
For alternative donation methods, including your crypto/token of choice, please open a request in the [issue tracker](https://gitea.com/EvergreenCrypto/docker-finance/issues) or reach out to [Evergreen Crypto LLC](#evergreen-crypto-llc).
|
||||
|
||||
---
|
||||
|
||||
##### Dependencies
|
||||
##### *Dependencies*
|
||||
|
||||
To donate to the wonderful projects that `docker-finance` gratefully depends upon, please donate to them directly:
|
||||
|
||||
- [Docker](https://www.docker.com/blog/get-involved-with-docker/)
|
||||
- [hledger](https://hledger.org/sponsor.html)
|
||||
- [hledger-flow](https://github.com/apauley/hledger-flow)
|
||||
- [ROOT.cern](https://root.cern/contribute/)
|
||||
- [Docker](https://www.docker.com/blog/get-involved-with-docker/)
|
||||
|
||||
For other dependencies, please see their individual contributing guidelines.
|
||||
|
||||
@@ -802,21 +848,22 @@ Additionally, when developing with the [`docker-finance` image](#image-docker-fi
|
||||
|
||||
#### Pull Request
|
||||
|
||||
The following assumes that the command `docker-finance_dev-tools` has been properly aliased, per `docker-finance help`.
|
||||
The following assumes that the command `dev-tools` has been properly aliased, per `docker-finance help`.
|
||||
|
||||
Before sending a pull request:
|
||||
|
||||
1. If you created a new file, please run `docker-finance_dev-tools license file=/path/to/new/file.ext` and update the copyright date and author.
|
||||
2. For any work that utilizes Bash/C++/PHP, please run the linter for your respective language (e.g., `docker-finance_dev-tools linter type=bash`).
|
||||
- See `docker-finance_dev-tools linter help` for details.
|
||||
1. If you created a new file, please run `dev-tools license file=/path/to/new/file.ext` and update the copyright date and author.
|
||||
2. For any work that utilizes Bash/C++/PHP, please run the linter for your respective language (e.g., `dev-tools linter type=bash`).
|
||||
- See `dev-tools linter help` for details.
|
||||
3. As for style guidelines, these are recommended:
|
||||
- [Bash](https://google.github.io/styleguide/shellguide.html)
|
||||
- [C++](https://google.github.io/styleguide/cppguide.html)
|
||||
- [PHP](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/ruleSets/PhpCsFixer.rst)
|
||||
4. If you can, please document the code in Doxygen style where applicable and run `docker-finance_dev-tools doxygen gen` to see your code documentation.
|
||||
4. If you can, please document the code in Doxygen style where applicable and run `dev-tools doxygen gen` to see your code documentation.
|
||||
|
||||
#### Notes
|
||||
|
||||
- Regarding client configuration, Docker volumes aren't used because of chicken-or-the-egg problem (among other reasons). `docker-finance` needs the client environment *before* building the Docker image and spawning the subsequent container (which would rely on volumes).
|
||||
- As described in [Mostly-Unified CLI](#mostly-unified-cli), to use a developer version of the `finance` image (not a `dev-tools` image), simply build and tag a new `finance` image with `dev` (or whatever you see fit), and reset the `docker-finance` alias at your discretion.
|
||||
- Run `DOCKER_FINANCE_DEBUG=true docker-finance <cmd> [args]` to debug *before* the [Client (Host) Configuration File](#client-host-configuration) file is read.
|
||||
- The `.C` files you see in the repository are ROOT.cern macro files, not C-language files.
|
||||
|
||||
Reference in New Issue
Block a user