Metadata-Version: 2.1
Name: treefuse
Version: 1.1.2
Summary: TreeFuse creates a FUSE filesystem from a treelib.Tree
Home-page: https://github.com/OddBloke/treefuse
Author: Daniel Watkins
Author-email: daniel@daniel-watkins.co.uk
License: GNU General Public License v3
Keywords: treefuse
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.7
Requires-Dist: fuse-python
Requires-Dist: treelib

========
TreeFuse
========


.. image:: https://img.shields.io/pypi/v/treefuse.svg
        :target: https://pypi.python.org/pypi/treefuse

.. image:: https://img.shields.io/travis/com/OddBloke/TreeFuse
        :target: https://travis-ci.com/OddBloke/treefuse
        :alt: Travis (.com)

.. image:: https://readthedocs.org/projects/treefuse/badge/?version=latest
        :target: https://treefuse.readthedocs.io/en/latest/?version=latest
        :alt: Documentation Status

.. doc-index-include-start
.. ^ and the corresponding -end below are used to indicate the portion of the
   README which is included in the documentation index

TreeFuse is a library for building FUSE filesystem CLIs from treelib Tree
objects.

It wraps python-fuse to provide a CLI entrypoint (`treefuse_main`) which takes
a `tree` parameter and uses that to construct a directory tree and generate
file content within the FUSE filesystem.

* Free software: GNU General Public License v3
* Documentation: https://treefuse.readthedocs.io.

Example Program
---------------

Executing this program::

    import treelib
    from treefuse import treefuse_main

    tree = treelib.Tree()
    root = tree.create_node("root")
    dir1 = tree.create_node("dir1", parent=root)
    tree.create_node("dirchild", parent=dir1, data=b"dirchild content\n")
    tree.create_node("rootchild", parent=root, data=b"rootchild content\n")

    treefuse_main(tree)

With a target directory (e.g. ``python3 example.py mnt``) will mount a
filesystem matching the given tree::

    $ tree mnt
    mnt
    ├── dir1
    │   └── dirchild
    └── rootchild

    1 directory, 2 files

    $ cat mnt/rootchild
    rootchild content

    $ cat mnt/dir1/dirchild
    dirchild content

See `Examples <https://treefuse.readthedocs.io/en/latest/usage.html#examples>`_
for more examples.

Roadmap
-------

* Abstract the interface so that sources other than ``treelib`` can be
  implemented
* Provide a mechanism for library consumers to populate filesystem contents
  asynchronously

Credits
-------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

This library was written during a hack week at my employer, DigitalOcean.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage

.. doc-index-include-end


=======
History
=======

1.1.2 (2021-07-30)
------------------

* Fix up one missed 3.6 reference.

1.1.1 (2021-07-30)
------------------

* Make drop of support for Python 3.6 official.

1.1.0 (2021-07-30)
------------------

* Substantial refactor to introduce the internal infrastructure for non-treelib
  ``TreeFuseProvider`` classes.

1.0.0 (2021-07-28)
------------------

* Add documentation.
* Implement support for providing non-default stat values for nodes (via
  ``treefuse.TreeFuseStat``).
* Replace temporary ENOENT error returns with more appropriate codes.
* Fix default usage string.

0.1.0 (2021-07-27)
------------------

* First release on PyPI.


