Commit Graph

63 Commits

Author SHA1 Message Date
ae2c08d5df client: src: lib_docker: filter docker related .in files
Creates a clutter-free finalized Dockerfile and docker-compose.yml by
removing all comments and blank lines.
2024-09-24 19:57:44 -07:00
e6ccd9607c client: completion: add gen arguments 2024-09-23 17:31:12 -07:00
f2102c7b90 client: src: lib_gen: reduce prompt language verbosity 2024-09-23 17:31:11 -07:00
169034cbe2 client: src: lib_gen: refactor/update editor related
- Creates a reusable editor function
- Skipping confirmations will also skip opening up the editor
  * Allows for complete generation without intentional interruption
2024-09-23 17:31:11 -07:00
0ec42d2420 client: rename $global_shell_file -> $global_superscript
Provides clarity, avoids confusion.
2024-09-23 17:31:11 -07:00
51bf587ceb client/container: rename 'subprofile' script to 'subscript'
- Provides clarity, avoids confusion (subprofile.bash -> subscript.bash)

- Changes filename in superscript source
  * End-user must update with client command `edit type=superscript`

- Changes filename in flow subprofile's docker-finance.d
  * Pre-existing subprofiles must manually rename their subscript file
2024-09-23 17:31:11 -07:00
f96dae0210 client: src: lib_gen: impl overhaul for new args
- Rewrite to support new arguments
  * Related design changes and refactoring
  * Remove prompt for testing (use `dev=on` instead)
- Factor out superscript gen from subscript append
- Related print formatting changes
- Add more internal checks
2024-09-23 17:31:11 -07:00
e8509384d2 client: src: lib_gen: add args and args parsing
- Allows for a dynamic `gen` experience
  * All configs/accounts can now be (re)generated on-the-fly
    - Individually, by section, or all at once
  * Adds prompt confirmation option
  * Adds developer profile option
2024-09-23 17:31:11 -07:00
9f6ad19112 client: src: lib_gen: move hledger conf to subprofile gen
Subprofile's hledger conf should be within subprofile generation.
2024-09-22 19:35:22 -07:00
c3cf81572b client: src: refactor system checks
- UID and dependency checks are done in internal `lib_docker`/`lib_env`
- Moves `sed` check to appropriate `lib_env`
2024-09-22 19:35:22 -07:00
d8222c60fb client: src: refactor environment/gen handler
- Moves environment handling from `lib_gen` to `lib_env`
- Related refactoring
2024-09-22 19:35:22 -07:00
dc4990ab90 client: docker: complete build overhaul, optimize
This commit brings a complete overhaul of the build system:

- Creates a separation of concerns for 'local' and 'remote' building
  * 'local' is built locally via the docker-finance `build` command
  * 'remote' is built *outside* of the docker-finance `build` command
    (pushed to a remote registry and then pulled by the 'local' build)
  * Related refactoring
    - Dockerfiles
    - `lib_gen`

- Adds remote image 'hledger-suite'
  * Provides the latest versions of all `hledger` related binaries
  * No longer relies on package maintainers / out-dated packages

- Adds remote image 'docker-finance'
  * Provides base image for 'finance' and 'dev-tools' images
    - tags 'archlinux' | 'ubuntu' | 'dev-tools'

- Removes previous `hledger` related build modules
  * Removes building any `hledger` related binaries locally

- Removes 'experimental' build
  * End-user can use local custom Dockerfile and/or custom tag instead

- Updates the 'default' | 'slim' | 'tiny' | 'micro' build types
  * Refactors build type requirements into separate build modules
    - Adds 'fetch' module
    - Adds 'track' module
    - Adds 'user' module
      * creates container user *after* base and all other modules
      * allows for quick re-building across multiple local users
    - Updates 'root' module
  * `lib_docker`
    - Updates usage help
    - Adds build modules per build type

- Huge optimizations
  * Vastly improves build times
    - ~60% faster w/ a fresh build
    - ~60%-90% faster rebuild (depending on image type)
  * Vastly improves image sizes
    - e.g., 'default' Arch Linux image size is ~50% smaller
2024-09-17 20:06:33 -07:00
d4d7027f22 client: dev-tools: lib_linter: add DOCKER_FINANCE_CLIENT_PLUGINS 2024-09-07 18:46:39 -07:00
d8cc3c097f client: docker: lib_plugins: allow path depth
- Allows plugins to function within subdirectories
- Removes redundant arg checking
2024-09-04 18:17:13 -07:00
1e818b708b client: dev-tools: lib_linter: return compose down
- Don't return value of network removal
  * compose value is more appropriate
- Silence error warning
  * will complain if network is already in use
2024-08-21 20:24:43 -07:00
01ab9da53d client: lib_docker: remove platform from network name
There should be a single network amongst all docker-finance containers.
2024-08-19 22:43:57 -07:00
623c3f9e1a client: lib_docker: add tag to container name
Helps identify environment/build type during runtime.
2024-08-19 22:43:57 -07:00
bd3dec6a94 client: lib_docker: version: refactor to use yq
Replaces `shyaml` dependency with `yq`.
2024-08-17 23:19:57 -07:00
5e59087390 client: docker.bash: add Tor plugin to usage help 2024-08-15 21:31:54 -07:00
d7caec13e4 client/container: disable shellcheck warning for DOCKER_FINANCE_DEBUG
If it's not set or set to false, then it's expected to be not true.
2024-08-14 20:03:03 -07:00
5684d94d63 client: completion.bash: set xtrace if debug enabled 2024-08-14 19:40:55 -07:00
4302ac2bb5 client: docker.bash: set xtrace if debug enabled 2024-08-14 19:40:55 -07:00
83e5622451 client: completion: complete docker images by $USER
Simplifies completion on multi-user systems.
2024-08-12 19:58:13 -07:00
e7725b72fd client: completion: fix/optimize docker images
- Reduces overhead, catches all docker-finance images
- Previously wouldn't catch all space between image name and tag
2024-08-12 19:58:06 -07:00
eb2e17fe2d client: lib_linter: add more C++ extensions
Needed for linting `root` C++ plugins.
2024-08-12 18:59:51 -07:00
682fbe2f03 client: completion: add plugins support 2024-08-12 18:36:27 -07:00
52c958b927 client: lib_docker: refactor for library support (plugins)
- Exports globals to caller for "library" support (export to `plugins`, etc.)

- Removes enforcement of initializing "constructor" with 2nd arg (`command`)
  * Arg not needed since external/internal checks already in place
  * Context specific: if needed, caller should always check if set
  * Removal needed so library can be used within a library context

- `basename` fix to allow for bash completion
2024-08-12 18:36:26 -07:00
9c181b75a1 client: add plugins feature 2024-08-12 18:36:26 -07:00
720eec8a14 client: add lib_plugins
- Allows client-side execution of repo/custom client plugins
- A client-side equivalent of container's lib_plugins
2024-08-12 18:36:26 -07:00
01737d37bf client: lib_gen: new custom plugin layout, update example plugin
- Generates new custom plugin directory layout upon `gen`
  * Allows for drop-in client-side/container-side custom plugins

- Moved container plugin example into container's plugins
  * Plugin is no longer generated upon `gen` (it's available in-repo)

- Updates plugin example
    - Provides requisite lib_finance initialization
    - Refactored, added more checks
    - Expand example case
    - Linter fixes
2024-08-12 18:30:45 -07:00
923a9eee24 client: lib_gen: generate 'times'
- Sets a location for:
  * timew database
  * Anything time-related (among all profiles)
2024-08-09 00:01:48 -07:00
eaec539c22 client: lib_gen: generate plugins
- Sets a location for plugins
  * Allows for end-user custom plugins
- Provides default example plugin
2024-08-08 16:00:03 -07:00
be6e366d80 client: lib_gen: fix missing copy of custom Dockerfile
Existing file was backed up but repo default was not copied over.
2024-08-07 21:33:21 -07:00
b30c00f3b6 client: lib_gen: refactor flow generation
- Checks for/creates established layout
- Refactor subprofile function names
- Clarifies questions/documentation
2024-08-07 21:33:21 -07:00
546f5b528a client: docker.bash: fix usage typo 2024-08-07 19:52:26 -07:00
0db5566d9f client: add dfi alias
- `dfi` is now primary unified command (saves fingers)
  * `docker-finance` is still available, as this is only an addition
- Also fixes missing line continuation during install (#104)
2024-08-06 02:15:38 -07:00
7f86b6a250 client: add preliminary bash completion 2024-08-05 16:22:21 -07:00
6b5c8af925 client: docker.bash: fix help usage (dev-tools alias) 2024-07-27 22:10:35 -07:00
e9bd7f322f client: lib_docker: add USER/WORKDIR to finalize Dockerfile
Guarantees that any additions to custom Dockerfile (or a missing custom)
will not prevent bringing `up` a container into the correct environment.
2024-07-27 16:32:42 -07:00
c49e0ad795 client: lib_gen: fix missing directory slash 2024-07-27 16:26:17 -07:00
cbe5a107ee client: lib_gen: fix custom Dockerfile path
Fixup to #90.
2024-07-19 23:24:13 -07:00
c34fd15a51 client: lib_gen: fix environment reader/resetter
- Fixes default env generation if current env exists
    * was not unsetting all previously exported env
- Adds debug output
2024-07-19 17:52:38 -07:00
af533460ec client: lib_gen: rewrite/fix global env gen
- Fixes resetting of globals after sourcing custom env file (location)
- Reorganizes flow logic
- Related refactoring
- Clarifies comments
- Adds debug output
2024-07-19 16:48:40 -07:00
7118a39f6d client: optimize/refactor repository path
- Reduces all calls into a single line
- Redefines path as root repository path
2024-07-18 22:57:31 -07:00
cd9681566b client: docker.bash: usage update/refactor
- Uses variable delimiters
- Adds current impl arguments
- Shortens 'dev-tools' example
2024-07-18 22:57:30 -07:00
f0561d1ebe client: lib_gen: superscript: append subprofile before generating
- Append new subprofile before potentially generating new file
- Simplifies backup/writing process
- Related refactoring
2024-07-16 17:54:25 -07:00
37fcba1586 client: lib_docker: build: use 'experimental' path 2024-07-16 17:44:17 -07:00
e11a142a86 client: lib_docker: version: refactor, print image name 2024-07-13 03:08:59 -07:00
bc7ebff2a1 client: lib_docker: factor env gen into lib_gen
- Related environment refactoring
2024-07-13 03:08:59 -07:00
4d3eef6067 client: new internal client versioning system
- Version is now determined on-the-fly from manifest file
- Internal versioning no longer depends on environment file
2024-07-13 03:01:06 -07:00