blob: 7f1874f11cc253632ed037c4aa2ffcbf971e7e10 (
plain) (
tree)
|
|
Configuration file management
=============================
A simple tool to help share (configuration) files across multiple machines.
Actual files are stored in directories with names roughly matching the `%.+%`
pattern.
The part between the percent signs is the name of an environment variable.
Every file in such a directory gets a symlink in the directory pointed to by
the environment variable.
Directory hierarchies are preserved.
A database of symlinks is maintained in case a shared file is deleted (the
corresponding symlink is then deleted too).
The default database file name is "db.bin", maintained at the top-level
directory with shared files.
This description is obviously confusing; see the complete usage example below.
Usage
-----
Symlinks are managed by `update.sh`.
```
usage: update.sh [-h|--help] [-d|--database PATH] [-s|--shared-dir DIR] [-n|--dry-run]
```
Pass the `--help` flag to this script to examine its detailed usage
information.
A complete usage example is given below.
In this example, the symlinks to files in "../cfg" must appear in "~/env".
```
> pwd
/cygdrive/d/workspace/personal/config-links
> tree ~/env/
/home/Egor/env
0 directories, 0 files
> tree ../cfg/
../cfg/
└── %ENV%
├── a
│ └── b
│ └── c
│ └── test.txt
└── foo
└── bar
└── baz
6 directories, 2 files
> echo "$ENV"
/home/Egor/env
> ./update.sh --shared-dir ../cfg/
...
> tree ~/env/
/home/Egor/env/
├── a
│ └── b
│ └── c
│ └── test.txt -> /cygdrive/d/workspace/personal/cfg/%ENV%/a/b/c/test.txt
└── foo
└── bar
└── baz -> /cygdrive/d/workspace/personal/cfg/%ENV%/foo/bar/baz
5 directories, 2 files
```
For more realistic usage examples, see
* my [Cygwin environment],
* configuration files for various [Windows apps].
[Cygwin environment]: https://github.com/egor-tensin/cygwin-home
[Windows apps]: https://github.com/egor-tensin/windows-home
Limitations
-----------
Variable names must be alphanumeric.
More precisely, the corresponding directory names must match the
`^%[_[:alpha:]][_[:alnum:]]*%$` regular expression.
Consequently, `ProgramFiles(x86)` (and other weird variable names Windows
allows) are not supported.
License
-------
Distributed under the MIT License.
See [LICENSE.txt] for details.
[LICENSE.txt]: LICENSE.txt
|