Package: rcmpy
rcmpy (1.5.3)A configuration-file management system.DocumentationGeneratedBysphinx-apidoc(What'ssphinx-apidoc?)Bypydoc(What'spydoc?)Python Version SupportThis package is tested with the following Python minor versions:python3.8python3.9python3.10python3.11Platform SupportThis package is tested on the following platforms:ubuntu-latestmacos-latestwindows-latestIntroductionThis project aims to simplify management of user configuration files, user (or
system-wide) package installations, system settings and more on a variety of
platforms.Reasons to use it:Simplify bootstrapping a fresh system to a "developer workstation" in as few
steps as possibleThis can be a simpler options for teams or individuals who don't have
infrastructure to manage system-install images, system-distribution build
systems, other kinds of provisioning automation, etc.Normalize software configurations for a team of developers, but still allow
personalized overrides when desired (e.g. text-editor or terminal configs)This can help make your team or organization's development environment
more approachable to new or inexperienced developers (ask yourself this:
are the code changes usually even the hard part?)Relies on a minimaldata repositorythat can be
managed with version control, shared by multiple people, open source to provide
examples to the community, etc.This enables a workflow for adding, removing, updating and re-configuring
software used by a project-ecosystem over timeGetting StartedThis package attempts to adhere to theXDG Base Directory Specification.
It keeps stateful formation that needs to persist between command invocations
in arcmpysub-directory of the user-state directory controlled
byXDG_STATE_HOME(or the default:$HOME/.local/state).One tracked piece of stateful information is the location of the currentdata repository. If this is not changed (via theusecommand), it checks arcmpy/defaultsub-directory in the
user-config directory controlled byXDG_CONFIG_HOME(or the default:$HOME/.config).System RequirementsIt is assumed that the system has aPythonexecutable andpipis available to it as
an installed package (can be checked with:python[3][.exe] -m pip --versionorpip[3][.exe] --version).A mechanism to obtain adata repositoryvia a
network connection, if one won't be created from scratch (e.g. agitclient).Installation and SetupInstall the package withpip[3][.exe] --user rcmpyorpython[3][.exe] -m pip --user rcmpy.Test thatrcmpyis now a shell command withrcmpy --version.If not, you may need to invokercmpydirectly from$HOME/.local/binor%APPDATA%\Python.
(see thepip documentationfor more info).Runrcmpy useto view the defaultdata repositorylocation (printed to the console):$ rcmpy use
rcmpy.state                          - INFO   - Using directory '/home/vkottler/.config/rcmpy/default'.Begin setting up yourdata repositoryin this
location, or:Download (orgit clone) one to that default location.Create asymbolic linkat
that location, pointing to one.Runrcmpy use <path>to pointrcmpyat
an existing one at any arbitrary location.Runrcmpy applyto perform tasks specified in thetop-level configuration file.Command-line Options$ ./venv3.11/bin/rcmpy -h

usage: rcmpy [-h] [--version] [-v] [-C DIR]
             {apply,dump,use,variant,watch,noop} ...

A configuration-file management system.

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v, --verbose         set to increase logging verbosity
  -C DIR, --dir DIR     execute from a specific directory

commands:
  {apply,dump,use,variant,watch,noop}
                        set of available commands
    apply               apply any pending changes from the active data
                        repository
    dump                dump template data to stdout as JSON
    use                 set the directory to use as the rcmpy data repository
    variant             set the variant of configuration data to use
    watch               do a task whenever a file in a specified directory
                        changes
    noop                command stub (does nothing)Sub-command Optionsapply$ ./venv3.11/bin/rcmpy apply -h

usage: rcmpy apply [-h] [-f] [-d]

options:
  -h, --help     show this help message and exit
  -f, --force    whether or not to forcibly render all outputs
  -d, --dry-run  whether or not to update output filesdump$ ./venv3.11/bin/rcmpy dump -h

usage: rcmpy dump [-h]

options:
  -h, --help  show this help message and exituse$ ./venv3.11/bin/rcmpy use -h

usage: rcmpy use [-h] [-d] [directory]

positional arguments:
  directory      the directory to use

options:
  -h, --help     show this help message and exit
  -d, --default  sets the directory back to the package defaultvariant$ ./venv3.11/bin/rcmpy variant -h

usage: rcmpy variant [-h] [-d] [variant]

positional arguments:
  variant        new variant to use

options:
  -h, --help     show this help message and exit
  -d, --default  sets the directory back to the package defaultwatch$ ./venv3.11/bin/rcmpy watch -h

usage: rcmpy watch [-h] [-p POLL_RATE] [-s] [-i] [-n] directory cmd [cmd ...]

positional arguments:
  directory             directory to watch for file changes
  cmd                   command to run

options:
  -h, --help            show this help message and exit
  -p POLL_RATE, --poll-rate POLL_RATE
                        poll period in seconds (default: 0.1s)
  -s, --shell           set to run a shell command
  -i, --single-pass     only run a single iteration
  -n, --no-change       don't act on changed files, only the overall set of
                        files changing (added or removed)Internal Dependency GraphA coarse view of the internal structure and scale ofrcmpy's source.
Generated usingpydeps(viamk python-deps).