<commit_before>= shhh

shhh is a tool to facilitate keeping dotfiles in git, including those with private information (such as .gitconfig).

== Getting started

  gem install shhh
  shhh import ~/.bashrc
  
At this point, a git repository will have been created at ~/.dotfiles. At some point more of the git workflow will be automated (such as creating a repository at Github), but for now most git tasks are manual:
  
  cd ~/.dotfiles
  git commit -m "Added bashrc"

== Filesystem layout

With shhh, dotfiles are stored in a centralized location (by default ~/.dotfiles), and symlinks are created for these files in the user's home directory. Here is a basic setup for a .gitconfig file:

    +-~/                      Home Directory
    | +-.shhh_secrets         Secrets file
    | +-.gitconfig            Symlink to ~/.dotfiles/gitconfig
    | +-.dotfiles/            Dotfiles directory
    | | +-gitconfig           Standard Dotfile
    | | +-gitconfig.dynamic   Classified dotfile

=== Home directory (~)

Where the action happens. Dotfiles that normally exist here are replaced by symlinks to files in the dotfiles directory

=== Dotfiles directory (~/)

Where dotfiles are stored. There are two types of dotfiles.

==== Standard dotfiles

A basic config file that would normally live in a user's home directory.

==== Classified dotfiles
A config file that contains some secret information. The file is stored, sans secret info, with a '.classified' extension in the repo. The dotfile that is symlinked to the user's home directory is then generated from this file.
  
=== Secrets file

This file, be default located at ~/.shhh_secrets, contains the information removed from dotfiles imported using the redact command.
  
== Commands

=== import PATH_TO_FILE

Imports a dotfile into thedotfiles directory, moving it to the dotfiles directory and replacing it with a symlink to its new location.


=== redact PATH_TO_FILE

Imports a dotfile that contains sensitive information. The user is presented with an editor, where the sensitive information can be removed by replacing secret information with a commented out call to a shhh function
  
  # before
  password: <PASSWORD> 
  
  # after
  password: # shhh(password)

This file is then saved with a '.classified' extension, and the original file is added to ~/.dotfiles/.gitignore so it will not be added to the repository.
  
'superSecretPassword' will be stored using the key :password in the secrets file.


=== sync
Creates a symlink in the user's home directory for each dotfile in the dotfiles directory.


=== generate
Creates local version of a classified dotfile, using information found in the secrets file to fill in any that was removed.


== Configuration
<commit_msg>Update README to reflect recent removal of colon from shhh() calls<commit_after>= shhh

shhh is a tool to facilitate keeping dotfiles in git, including those with private information (such as .gitconfig).

== Getting started

  gem install shhh
  shhh import ~/.bashrc
  
At this point, a git repository will have been created at ~/.dotfiles. At some point more of the git workflow will be automated (such as creating a repository at Github), but for now most git tasks are manual:
  
  cd ~/.dotfiles
  git commit -m "Added bashrc"

== Filesystem layout

With shhh, dotfiles are stored in a centralized location (by default ~/.dotfiles), and symlinks are created for these files in the user's home directory. Here is a basic setup for a .gitconfig file:

    +-~/                      Home Directory
    | +-.shhh_secrets         Secrets file
    | +-.gitconfig            Symlink to ~/.dotfiles/gitconfig
    | +-.dotfiles/            Dotfiles directory
    | | +-gitconfig           Standard Dotfile
    | | +-gitconfig.dynamic   Classified dotfile

=== Home directory (~)

Where the action happens. Dotfiles that normally exist here are replaced by symlinks to files in the dotfiles directory

=== Dotfiles directory (~/)

Where dotfiles are stored. There are two types of dotfiles.

==== Standard dotfiles

A basic config file that would normally live in a user's home directory.

==== Classified dotfiles
A config file that contains some secret information. The file is stored, sans secret info, with a '.classified' extension in the repo. The dotfile that is symlinked to the user's home directory is then generated from this file.
  
=== Secrets file

This file, be default located at ~/.shhh_secrets, contains the information removed from dotfiles imported using the redact command.
  
== Commands

=== import PATH_TO_FILE

Imports a dotfile into thedotfiles directory, moving it to the dotfiles directory and replacing it with a symlink to its new location.


=== redact PATH_TO_FILE

Imports a dotfile that contains sensitive information. The user is presented with an editor, where the sensitive information can be removed by replacing secret information with a commented out call to a shhh function
  
  # before
  password: <PASSWORD> 
  
  # after
  password: # <PASSWORD>)

This file is then saved with a '.classified' extension, and the original file is added to ~/.dotfiles/.gitignore so it will not be added to the repository.
  
'superSecretPassword' will be stored using the key "password" in the secrets file.


=== sync
Creates a symlink in the user's home directory for each dotfile in the dotfiles directory.


=== generate
Creates local version of a classified dotfile, using information found in the secrets file to fill in any that was removed.


== Configuration

{'fraction_non_alphanumeric': 0.05964214711729622, 'fraction_numerical': 0.0, 'mean_word_length': 3.5175510204081633, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, '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': '853662', 'n_tokens_mistral': 1438, 'n_tokens_neox': 1389, 'n_words': 766}