<commit_before>homectl - Simple Package Management for ~
=========================================
:toc:

Introduction
------------

homectl is an easy way to keep your various dot-files, configuration files,
custom shell scripts or add-on packages in your home directory
version-controlled and organized across multiple machines and in different
environments.

.Features

  * It automatically conforms to your environment:
    ** Different shells (bash, zsh).
    ** Different platforms (Linux, Darwin, probably others).
    ** Different values of +$HOME+ (no absolute paths, one hard-coded path:
       +$HOME/.homectl+).

  * Split your configuration into "packages":
    ** Post the common stuff to the Internet, but...
    ** Keep a private package for your work-related config and scripts.
    ** Make another package for your open-source development or hobbies.
    ** Only enable what you need, where you need it.

  * Keep it all version-controlled inside git.
    ** A single +git clone+ copies your whole environment anywhere you like.
    ** Use git submodules for 3rd-party packages like +oh-my-zsh+ or obscure
       Emacs modes.
    ** Private packages can stay safely outside your homectl git repository.

Prerequisites
-------------

* You must be using the +bash+ or +zsh+ shell.

* You need recent versions of Python and Git.

* You should already be familiar with Git, since you will be using it to track
  your own homectl setup.

Quick-Start
-----------

Installation
~~~~~~~~~~~~

NOTE: Before you deploy, you should move your existing shell rc files out of the
way.  (+.bashrc+, +.zshrc+, etc.)  Otherwise homectl won't be able to install
its own "loader" files.  [This will eventually be covered by a migration
script.]

-----------------------------------
# Get a copy of the latest stable homectl.
$ git clone git://github.com/josh-berry/homectl.git

# Create your own homectl setup.
$ ./homectl/setup.sh ~/homectl-setup

# Link your setup into your home directory.
$ ~/homectl-setup/deploy.sh
-----------------------------------

.Next Steps:

  * Restart your shell, and use the +homectl+ command to enable and disable
    packages.

  * Read [XXX] to learn how to create your own homectl packages.

  * Create packages to hold your personal configuration.

Uninstallation
~~~~~~~~~~~~~~

This will disable homectl entirely, removing any dot-files in your home
directory that point to homectl packages.

------------------------------------
$ homectl uninstall
------------------------------------

Customization
~~~~~~~~~~~~~

...

Further Reading
---------------

Not yet written::
    How homectl itself is laid out (e.g. what the files, directories and
    included packages are).

Not yet written::
    The anatomy of a homectl package, and how to create your own.

doc/hacking.asciidoc::
    A quick guide to hacking on homectl itself.  Covers high-level design
    principles and submitting your own improvements.
<commit_msg>README: Whups, forgot to make hacking.asciidoc a link<commit_after>homectl - Simple Package Management for ~
=========================================
:toc:

Introduction
------------

homectl is an easy way to keep your various dot-files, configuration files,
custom shell scripts or add-on packages in your home directory
version-controlled and organized across multiple machines and in different
environments.

.Features

  * It automatically conforms to your environment:
    ** Different shells (bash, zsh).
    ** Different platforms (Linux, Darwin, probably others).
    ** Different values of +$HOME+ (no absolute paths, one hard-coded path:
       +$HOME/.homectl+).

  * Split your configuration into "packages":
    ** Post the common stuff to the Internet, but...
    ** Keep a private package for your work-related config and scripts.
    ** Make another package for your open-source development or hobbies.
    ** Only enable what you need, where you need it.

  * Keep it all version-controlled inside git.
    ** A single +git clone+ copies your whole environment anywhere you like.
    ** Use git submodules for 3rd-party packages like +oh-my-zsh+ or obscure
       Emacs modes.
    ** Private packages can stay safely outside your homectl git repository.

Prerequisites
-------------

* You must be using the +bash+ or +zsh+ shell.

* You need recent versions of Python and Git.

* You should already be familiar with Git, since you will be using it to track
  your own homectl setup.

Quick-Start
-----------

Installation
~~~~~~~~~~~~

NOTE: Before you deploy, you should move your existing shell rc files out of the
way.  (+.bashrc+, +.zshrc+, etc.)  Otherwise homectl won't be able to install
its own "loader" files.  [This will eventually be covered by a migration
script.]

-----------------------------------
# Get a copy of the latest stable homectl.
$ git clone git://github.com/josh-berry/homectl.git

# Create your own homectl setup.
$ ./homectl/setup.sh ~/homectl-setup

# Link your setup into your home directory.
$ ~/homectl-setup/deploy.sh
-----------------------------------

.Next Steps:

  * Restart your shell, and use the +homectl+ command to enable and disable
    packages.

  * Read [XXX] to learn how to create your own homectl packages.

  * Create packages to hold your personal configuration.

Uninstallation
~~~~~~~~~~~~~~

This will disable homectl entirely, removing any dot-files in your home
directory that point to homectl packages.

------------------------------------
$ homectl uninstall
------------------------------------

Customization
~~~~~~~~~~~~~

...

Further Reading
---------------

Not yet written::
    How homectl itself is laid out (e.g. what the files, directories and
    included packages are).

Not yet written::
    The anatomy of a homectl package, and how to create your own.

link:doc/hacking.asciidoc[]::
    A quick guide to hacking on homectl itself.  Covers high-level design
    principles and submitting your own improvements.

{'fraction_non_alphanumeric': 0.15508290068665215, 'fraction_numerical': 0.0003349522693016245, 'mean_word_length': 2.744200626959248, 'pattern_counts': {'":': 2, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3461769', 'n_tokens_mistral': 1562, 'n_tokens_neox': 1493, 'n_words': 723}