Skip to main content

CLI tool for keeping your personal config files in a repository

Project description

config-keeper

CI Codecov PyPI - Version PyPI - Downloads

User-friendly CLI for keeping your personal files or directories in a repository.

In a few words config-keeper does following:

  • Collects information about what files on current machine it should keep
  • Makes a temporary copy of all these files and pushes it to specified repository
  • Pulls files from a repository later and puts them to the right places

Table of contents

Use cases

  1. You spend a lot of time writing launch/build tasks or making config files for a project you develop, but these stuff cannot be placed along with the project itself.
  2. You have to switch between work computers from time to time while you working on same project and you have to send yourself archives with bunch of updated files.
  3. You want to save some system-wide config (like .bashrc) to use it later or quickly restore if something goes wrong.

Finally, you want to automate these stuff.

Key features

  • Create projects as logical groups of files to sync and a repository
  • All configuration in a single YAML file - update it using CLI or by hands using validate command after
  • Terminal auto-completion
  • User-friendly error messages if something goes wrong

Install

Using pipx (recommended)

Install pipx first.

pipx install config-keeper2

Using pip

pip install --user config-keeper2

NOTE: if you are using latest versions of Ubuntu/Debian/Fedora, you may also need to use --break-system-packages flag. Refer to PEP 668 for more information.

Usage

config-keeper relies on a project as logical group of files to sync and a repository. Each project consists of

  • Paths. These are any files or directories in your filesystem which you want to keep. Some of them might not exist yet, if you are want to pull them first from existing repository. But they must exist if you are going to push.
  • Repository. Here your files and directories live. When you going to push or pull, this repository is used.
  • Branch. The branch of repository. Nothing special. If you want, you can use the same repository across multiple projects with different branches.

Quick start

To begin, create a project:

config-keeper project create myproject
# Repository: git@github.com:MyUser/personal-stuff.git
# Branch [main]: mybranch
# Project "myproject" saved.

Here assumed that repository exists and you have permissions to communicate with it. Branch may exist or not - if not, it will be created at first push.

Next, add path to the project:

config-keeper paths add \
    --project myproject \
    my_config.ini:~/configs/my_config.ini \
# Project "myproject" saved.

Here we said that ~/configs/my_config.ini file should live in our repository as my_config.ini.

Assuming that ~/configs/my_config.ini exists, let's push it:

config-keeper push myproject
# Going to push into following branches:
# - "mybranch" at git@github.com:MyUser/personal-stuff.git (from "myproject")
# Proceed? [Y/n]:

If something goes wrong at this step (or at any other step) you will probably have a nice-readable error. If this is not your case please create an issue describing how to reproduce the bug and the desired behavior.

Now, if you visit repository, you should see that mybranch has recent commit with my_config.ini file.

Finally, imagine you want to restore my_config.ini on your local machine from a repository. All you need to do is

config-keeper pull myproject
# Following paths will most likely be replaced:
# - /home/<my_user>/configs/my_config.ini (from "myproject")
# Proceed? [Y/n]:

If you confirmed replacing, the ~/configs/my_config.ini file now should be the same as in repository one.

Autocompletion

Run

config-keeper --install-completion

and reload shell.

NOTE: there is a known issue with zsh. As a workaround you can add compinit -D to the end of your .zshrc after installing completion.

CLI Reference

To learn what commands are available, please refer to REFERENCE.

NOTE: you can always check the description of any command by using --help, e.g.

config-keeper push --help

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

config_keeper2-1.1.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

config_keeper2-1.1.0-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file config_keeper2-1.1.0.tar.gz.

File metadata

  • Download URL: config_keeper2-1.1.0.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.2.0-1012-azure

File hashes

Hashes for config_keeper2-1.1.0.tar.gz
Algorithm Hash digest
SHA256 85d019e420b48d1160bd6488b2007549454347bb0f4bbda97352a4c18bf27b6a
MD5 fd2fd39b9e5c7e16560de3dee0d74f02
BLAKE2b-256 02ca3b2f216c0b0163574bbe887acbb9bebc40dff82daf22caad1664b6927f33

See more details on using hashes here.

File details

Details for the file config_keeper2-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: config_keeper2-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.2.0-1012-azure

File hashes

Hashes for config_keeper2-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14f40acb763f751c0657a7b12a78681c126d65906ed082950bfb9b892f0b63b9
MD5 9297d01b47d517f69769997ca49a586e
BLAKE2b-256 415c884a55ccba2de966407e57517a6c8eca35cc5899d19d1e6cb03c42734b21

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page