snf-image-creator
6 years agoRename README.rst to README
Nikos Skalkotos [Wed, 30 Jan 2013 14:55:46 +0000 (16:55 +0200)]
Rename README.rst to README

6 years agoBump version to 0.2.3 v0.2.3
Nikos Skalkotos [Wed, 30 Jan 2013 11:53:39 +0000 (13:53 +0200)]
Bump version to 0.2.3

6 years agoIn bundle_volume keep partition starting points
Nikos Skalkotos [Tue, 29 Jan 2013 16:33:05 +0000 (16:33 +0000)]
In bundle_volume keep partition starting points

When shrinking partitions, make sure that the shrinked partitions
always starts from the sector the initial partition started. Changing
this may destroy the boot loader.

6 years agoIn bundle_volume print msg when cloning partitions
Nikos Skalkotos [Tue, 29 Jan 2013 14:00:55 +0000 (16:00 +0200)]
In bundle_volume print msg when cloning partitions

6 years agoAdd support for gpt partitions in bundle_volume
Nikos Skalkotos [Tue, 29 Jan 2013 13:27:54 +0000 (15:27 +0200)]
Add support for gpt partitions in bundle_volume

6 years agoAdd AUTHORS and ChangeLog
Nikos Skalkotos [Mon, 28 Jan 2013 13:42:59 +0000 (15:42 +0200)]
Add AUTHORS and ChangeLog

6 years agoAdd man pages for snf-image-creator & snf-mkimage
Nikos Skalkotos [Mon, 28 Jan 2013 13:37:49 +0000 (15:37 +0200)]
Add man pages for snf-image-creator & snf-mkimage

6 years agoUpdate the documentation
Nikos Skalkotos [Mon, 28 Jan 2013 11:12:55 +0000 (13:12 +0200)]
Update the documentation

Add installation sections for Fedora and CentOS

6 years agoAdd the docs directory in MANIFEST.in
Nikos Skalkotos [Fri, 25 Jan 2013 11:06:55 +0000 (13:06 +0200)]
Add the docs directory in MANIFEST.in

When you create a source distribution with:
python ./setup.py sdist
The docs should be included in the source archive.

6 years agoDon't call parted.Device.destroy()
Nikos Skalkotos [Sun, 27 Jan 2013 18:06:17 +0000 (20:06 +0200)]
Don't call parted.Device.destroy()

It behaves different in different pyparted versions and only causes
problems. Let python do the garbage-collection...

6 years agoOmmit using os.path.relpath
Nikos Skalkotos [Sat, 26 Jan 2013 13:57:53 +0000 (15:57 +0200)]
Ommit using os.path.relpath

The method has different behaviour in python 2.6 and python 2.7.
In python 2.6, os.path.relpath('/proc', '/) will output '../proc'
where in python 2.7 it will output 'proc'.

6 years agoSupport pyparted 3.4
Nikos Skalkotos [Sat, 26 Jan 2013 13:50:19 +0000 (15:50 +0200)]
Support pyparted 3.4

Use length instead of getLength() to get the size in sectors of a
device.

6 years agoBump version to 0.2.2 v0.2.2
Nikos Skalkotos [Tue, 22 Jan 2013 15:27:02 +0000 (17:27 +0200)]
Bump version to 0.2.2

6 years agoUpdate the documentation
Nikos Skalkotos [Tue, 22 Jan 2013 15:20:37 +0000 (17:20 +0200)]
Update the documentation

 * Add contact info
 * Add info on how to install Arch Linux packages
 * Add limitations section in usage

6 years agoFix typos in install section of the documentation
Nikos Skalkotos [Mon, 21 Jan 2013 13:05:36 +0000 (15:05 +0200)]
Fix typos in install section of the documentation

Credits go to Alex Pyrgiotis <apyrgio@grnet.gr>

6 years agoCompletely exclude mpoints when running rsync
Nikos Skalkotos [Fri, 18 Jan 2013 18:45:32 +0000 (20:45 +0200)]
Completely exclude mpoints when running rsync

We used to exclude mount point from rsync with options like this:

 --exclude mount/point/*

This will copy the directory and leave out all files under it. In
some cases, this causes problems because rsync will fail if it
cannot stat the directory and some mount point will only return
stat info to their owner and not root. Even if this wasn't the
case, we cannot determine the real directory attributes. The stat
syscall will return the attributes associated with the mount
options. It's better to completely exclude those mpoints in rsync
and create them explicitly after the command runs. We make them
inherit the mode and the ownership of their parent directory.

6 years agoFix a bug in tmp dir removal
Nikos Skalkotos [Fri, 18 Jan 2013 16:48:07 +0000 (18:48 +0200)]
Fix a bug in tmp dir removal

snf-image-creator removed /var/tmp if the directory was empty

6 years agoAdd missing rsync dependency in docs
Nikos Skalkotos [Fri, 18 Jan 2013 10:21:15 +0000 (12:21 +0200)]
Add missing rsync dependency in docs

Add missing rsync dependency dependency in the install section of
the documentation

6 years agoBump version to 0.2.1 v0.2.1
Nikos Skalkotos [Wed, 16 Jan 2013 18:02:10 +0000 (20:02 +0200)]
Bump version to 0.2.1

6 years agoUpdate the documentation
Nikos Skalkotos [Wed, 16 Jan 2013 17:57:23 +0000 (19:57 +0200)]
Update the documentation

 * Add instuctions for installing the software in Ubuntu 12.10
 * Rephrase some parts in install, overview and usage sections

6 years agoSupport python-sendfile 2.x
Nikos Skalkotos [Wed, 16 Jan 2013 15:04:44 +0000 (17:04 +0200)]
Support python-sendfile 2.x

Support both versions (1.2.x and 2.x) of python-sendfile. In
v1.2.x (py-sendfile) the returning value of the sendfile function is a
tuple, where in v2.x (pysendfile) it's a simple integer.

6 years agoFix a variable name typo in output/dialog.py
Nikos Skalkotos [Wed, 16 Jan 2013 14:35:42 +0000 (16:35 +0200)]
Fix a variable name typo in output/dialog.py

6 years agoBump version to 0.2 v0.2
Nikos Skalkotos [Mon, 14 Jan 2013 17:50:54 +0000 (19:50 +0200)]
Bump version to 0.2

6 years agoUpdate the documentation to reflect v0.2
Nikos Skalkotos [Mon, 14 Jan 2013 17:49:56 +0000 (19:49 +0200)]
Update the documentation to reflect v0.2

6 years agoRephrase overview and install section in docs
Nikos Skalkotos [Fri, 11 Jan 2013 18:05:04 +0000 (20:05 +0200)]
Rephrase overview and install section in docs

Make them comply with current source tree

6 years agoAdd COPYRIGHT and README.rst in MANIFEST.in
Nikos Skalkotos [Fri, 11 Jan 2013 14:38:18 +0000 (16:38 +0200)]
Add COPYRIGHT and README.rst in MANIFEST.in

6 years agoAdd author and author_mail in setup.py
Nikos Skalkotos [Fri, 11 Jan 2013 14:20:46 +0000 (16:20 +0200)]
Add author and author_mail in setup.py

6 years agoFix bug introdueced in f2ddf4db58fc537e66d60739d2a
Nikos Skalkotos [Fri, 11 Jan 2013 12:17:22 +0000 (14:17 +0200)]
Fix bug introdueced in f2ddf4db58fc537e66d60739d2a

6 years agoFix minor issues in output messages
Nikos Skalkotos [Thu, 10 Jan 2013 17:25:27 +0000 (19:25 +0200)]
Fix minor issues in output messages

6 years agoFix the rsync child process wait code
Nikos Skalkotos [Thu, 10 Jan 2013 17:15:37 +0000 (19:15 +0200)]
Fix the rsync child process wait code

If the process takes too long to finish after the stdout fd is
closed, kill it.

6 years agoAllow users to specify tmp dir for large files
Nikos Skalkotos [Thu, 10 Jan 2013 16:57:16 +0000 (18:57 +0200)]
Allow users to specify tmp dir for large files

The cow file when creating images or the temporary image file when
bundling the host system may be large. Allow the user to overwrite
the directory under which those files get created.

6 years agoMerge branch 'stable-0.1-hd'
Nikos Skalkotos [Thu, 10 Jan 2013 14:25:30 +0000 (16:25 +0200)]
Merge branch 'stable-0.1-hd'

6 years agoAdd copyright file
Nikos Skalkotos [Thu, 10 Jan 2013 14:16:16 +0000 (16:16 +0200)]
Add copyright file

6 years agoMinor typo correction
Alex Pyrgiotis [Thu, 10 Jan 2013 14:07:40 +0000 (16:07 +0200)]
Minor typo correction

6 years agoUpdate installation method
Alex Pyrgiotis [Thu, 10 Jan 2013 07:49:46 +0000 (07:49 +0000)]
Update installation method

In the "Installation from source" scenario, add python-sendfile to the
list of dependecies that will be installed via apt-get. Else, it would
complain about missing C headers and the user would need to download
python-dev instead.

6 years agoFix minor typos
Nikos Skalkotos [Fri, 4 Jan 2013 17:26:20 +0000 (19:26 +0200)]
Fix minor typos

6 years agoTreat kamaki config files as sensitive data
Nikos Skalkotos [Fri, 4 Jan 2013 12:14:00 +0000 (14:14 +0200)]
Treat kamaki config files as sensitive data

When cleaning up sensive user data on unix systems, remove .kamakirc
and .kamaki.history too.

6 years agoTruncate the image before fs creation
Nikos Skalkotos [Fri, 4 Jan 2013 12:06:53 +0000 (14:06 +0200)]
Truncate the image before fs creation

6 years agoIn rsync make src and dest labels configurable
Nikos Skalkotos [Fri, 4 Jan 2013 11:17:24 +0000 (13:17 +0200)]
In rsync make src and dest labels configurable

6 years agoMerge branch 'stable-0.1'
Nikos Skalkotos [Thu, 3 Jan 2013 17:53:15 +0000 (19:53 +0200)]
Merge branch 'stable-0.1'

6 years agoFix a bug in image shrinking code pt2
Nikos Skalkotos [Thu, 3 Jan 2013 17:51:08 +0000 (19:51 +0200)]
Fix a bug in image shrinking code pt2

Handle correct extended partitions with id 0xf

6 years agoRemember the working dir media selection dialog
Nikos Skalkotos [Thu, 3 Jan 2013 13:30:34 +0000 (15:30 +0200)]
Remember the working dir media selection dialog

6 years agoMinor fixes in output messages
Nikos Skalkotos [Thu, 3 Jan 2013 12:29:24 +0000 (14:29 +0200)]
Minor fixes in output messages

6 years agoFix media selection in snf-mkimage
Nikos Skalkotos [Thu, 3 Jan 2013 12:19:48 +0000 (14:19 +0200)]
Fix media selection in snf-mkimage

Make sure the user cannot select a directory as input media

6 years agoCleanup Rsync class and add extra options
Nikos Skalkotos [Thu, 3 Jan 2013 11:19:00 +0000 (13:19 +0200)]
Cleanup Rsync class and add extra options

Add options for preserving extended atrributes, hard links, ACLs.

6 years agoFix pep8 errors
Nikos Skalkotos [Mon, 31 Dec 2012 12:57:06 +0000 (14:57 +0200)]
Fix pep8 errors

6 years agoFix bugs in rsync module
Nikos Skalkotos [Mon, 31 Dec 2012 01:05:32 +0000 (03:05 +0200)]
Fix bugs in rsync module

 * Fix a bug where the parent process did not wait on the child
   processes.
 * Make sure that when updating the copy progress bar, at least
   0.1 seconds have passed. This guarantees that we do not experience
   any flickering in the progress bar.

6 years agoRetry cleanup commands if they fail
Nikos Skalkotos [Sun, 30 Dec 2012 22:37:07 +0000 (00:37 +0200)]
Retry cleanup commands if they fail

Add a new try_fail_repeat function that wraps cleanup system commands
and retries them if they fail. There are cases where commands like
dmsetup, umount and losetup -d may fail with device is busy. In most
of the cases, sleeping for halve a second and retrying does the job.

6 years agoMake sure the tmp bunble_volume img gets deleted
Nikos Skalkotos [Sun, 30 Dec 2012 21:14:41 +0000 (23:14 +0200)]
Make sure the tmp bunble_volume img gets deleted

6 years agoRemove progress bar for guestfs.launch() progress
Nikos Skalkotos [Sun, 30 Dec 2012 16:39:25 +0000 (18:39 +0200)]
Remove progress bar for guestfs.launch() progress

In Guestfs you get notifications about progress on some functions like
launch() by registring callback functions. When using guestfs from python,
this is fragile. If the callback functions raises an exception, you end up
with segmentation fault. It is better to completely remove the progress
monitoring from launch().

6 years agoRephrase overview.rst
Nikos Skalkotos [Sun, 30 Dec 2012 14:18:24 +0000 (16:18 +0200)]
Rephrase overview.rst

6 years agoIn bundle_volume truncate img file after shrinking
Nikos Skalkotos [Sat, 29 Dec 2012 16:30:02 +0000 (18:30 +0200)]
In bundle_volume truncate img file after shrinking

6 years agoRemove temporary bundeled image during cleanup
Nikos Skalkotos [Fri, 28 Dec 2012 01:16:43 +0000 (03:16 +0200)]
Remove temporary bundeled image during cleanup

6 years agoIn bundle_volume replace UUIDs in new filesystems
Nikos Skalkotos [Fri, 28 Dec 2012 00:55:00 +0000 (02:55 +0200)]
In bundle_volume replace UUIDs in new filesystems

Replace the UUID entries in fstab and grub files for filesystems that
have beeen recreated.

6 years agoFix a bug in rsync
Nikos Skalkotos [Mon, 24 Dec 2012 12:23:32 +0000 (14:23 +0200)]
Fix a bug in rsync

The exclude patterns should contain relative to the source paths

6 years agoIn bundle volume copy host files with rsync
Nikos Skalkotos [Sun, 23 Dec 2012 19:12:55 +0000 (21:12 +0200)]
In bundle volume copy host files with rsync

6 years agoRemove the installation restriction about Ubuntu
Alex Pyrgiotis [Sat, 22 Dec 2012 14:20:25 +0000 (16:20 +0200)]
Remove the installation restriction about Ubuntu

6 years agoFix a bug in image shrinking code
Nikos Skalkotos [Fri, 21 Dec 2012 10:00:54 +0000 (12:00 +0200)]
Fix a bug in image shrinking code

Credits go to Giannis Spiliopoulos <gspilio@admin.grnet.gr>

6 years agoCreate fs in image partitions in bundle_volume
Nikos Skalkotos [Thu, 20 Dec 2012 18:16:40 +0000 (20:16 +0200)]
Create fs in image partitions in bundle_volume

Also do a code cleanup

6 years agoFix bugs in bundle_volume module
Nikos Skalkotos [Wed, 19 Dec 2012 17:04:38 +0000 (19:04 +0200)]
Fix bugs in bundle_volume module

The partition table of the image is created correct. The partitions
are not yet filled.

6 years agoFurther development in bundle_volume
Nikos Skalkotos [Wed, 19 Dec 2012 14:22:49 +0000 (16:22 +0200)]
Further development in bundle_volume

Nothing is working yet

6 years agoMerge branch 'stable-0.1'
Nikos Skalkotos [Mon, 17 Dec 2012 10:46:24 +0000 (12:46 +0200)]
Merge branch 'stable-0.1'

6 years agoMerge branch 'stable-0.1-hd' into stable-0.1
Nikos Skalkotos [Mon, 17 Dec 2012 10:17:07 +0000 (12:17 +0200)]
Merge branch 'stable-0.1-hd' into stable-0.1

6 years agoFix errors introduced in 9517bf29dadbb4f1257f240bc
Alex Pyrgiotis [Fri, 14 Dec 2012 17:20:24 +0000 (19:20 +0200)]
Fix errors introduced in 9517bf29dadbb4f1257f240bc

6 years agoFix the image partitions in bundle_volume
Nikos Skalkotos [Thu, 13 Dec 2012 17:01:52 +0000 (19:01 +0200)]
Fix the image partitions in bundle_volume

Check the file system usage and accordingly reduce the size of the
last partition in the image.

6 years agoRestore original image creation example
Alex Pyrgiotis [Thu, 13 Dec 2012 14:24:30 +0000 (16:24 +0200)]
Restore original image creation example

Also, add a warning about LVM, the need for openssh-server, memmory
parameter for KVM and md5sum for the dowloaded iso.

6 years agoUpdate usage section with an example
Alex Pyrgiotis [Thu, 13 Dec 2012 11:34:34 +0000 (13:34 +0200)]
Update usage section with an example

The example has been copied from okeanos-guides. However, some
of the example's steps have been ommited (e.g. the installation of
snf-image-creator). Also, the focus has been shifted from ~okeanos to a
run-of-the-mill synnefo deployment.

6 years agoFix a pep8 error
Nikos Skalkotos [Thu, 13 Dec 2012 09:33:24 +0000 (11:33 +0200)]
Fix a pep8 error

6 years agoFuther development for bundle_volume
Nikos Skalkotos [Mon, 10 Dec 2012 18:24:16 +0000 (20:24 +0200)]
Futher development for bundle_volume

Create a sparse file under /mnt in the size of the root hard disk
and copy the mbr into this file. Not yet workable.

6 years agoBump version to 0.1.1 v0.1.1
Nikos Skalkotos [Mon, 3 Dec 2012 17:32:54 +0000 (19:32 +0200)]
Bump version to 0.1.1

6 years agoCorrect some typos
Alex Pyrgiotis [Thu, 29 Nov 2012 07:45:59 +0000 (09:45 +0200)]
Correct some typos

6 years agoCorrect typos in installation doc
Alex Pyrgiotis [Wed, 28 Nov 2012 17:47:11 +0000 (19:47 +0200)]
Correct typos in installation doc

6 years agoRemove unwanted spaces
Alex Pyrgiotis [Wed, 28 Nov 2012 17:20:24 +0000 (19:20 +0200)]
Remove unwanted spaces

6 years agoRestore older way of installing snf-image-creator
Alex Pyrgiotis [Wed, 28 Nov 2012 17:12:20 +0000 (19:12 +0200)]
Restore older way of installing snf-image-creator

The older method of installing snf-image-creator from source is restored
and presented alongside the official package installation method.

6 years agoUpdate installation method of sf-image-creator
Alex Pyrgiotis [Wed, 28 Nov 2012 15:19:24 +0000 (17:19 +0200)]
Update installation method of sf-image-creator

Drop python installation method in favor of a simpler method using
packages from the apt.dev.grnet.gr repo.

6 years agoDo not apt-get python-gevent and python-dev
Alex Pyrgiotis [Mon, 26 Nov 2012 07:17:05 +0000 (09:17 +0200)]
Do not apt-get python-gevent and python-dev

As stated in commit b50531496d1d44e5562cc164364eb5373f2f9e5e, these
packages are not needed for the installation of snf-image-creator.

6 years agoCorrect dependencies list
Alex Pyrgiotis [Mon, 26 Nov 2012 01:12:37 +0000 (03:12 +0200)]
Correct dependencies list

Remove python-gevent and python-dev from the dependencies list for
snf-image-creator. These two packages were needed for kamaki < 0.1
version, but now are obsolete.

6 years agoBring installation instructions up-to-date
Alex Pyrgiotis [Thu, 22 Nov 2012 18:53:07 +0000 (20:53 +0200)]
Bring installation instructions up-to-date

6 years agoRemove overlapping content with okenos-guides
Alex Pyrgiotis [Thu, 22 Nov 2012 16:10:41 +0000 (18:10 +0200)]
Remove overlapping content with okenos-guides

This is the initial commit of the okeanos-helpdesk branch.
The main purpose of this branch is to:
* Move non-technical parts (e.g examples) to the okeanos-guides docs,
  where they can be presented in a more user-oriented way
* Correct minor omissions that okeanos-helpdesk has encountered during
  the testing of the image-creator tool

6 years agoAdd new bundle_volume module
Nikos Skalkotos [Wed, 21 Nov 2012 14:14:24 +0000 (16:14 +0200)]
Add new bundle_volume module

This is not yet workable but it will host the code for creating
images out of a running system.

6 years agoAdd "Running System" button in media selection
Nikos Skalkotos [Wed, 21 Nov 2012 08:26:31 +0000 (10:26 +0200)]
Add "Running System" button in media selection

This can be used to create an image out of a live system. This
functionality is not yet implemented.

6 years agoFix a bug in dialog wizard
Nikos Skalkotos [Tue, 20 Nov 2012 16:52:40 +0000 (18:52 +0200)]
Fix a bug in dialog wizard

The program would crash when running in wizard mode if the account
or token where missing from the .kamakirc file.

6 years agoRevert "Monkey patch the source to work with gevent" v0.1
Nikos Skalkotos [Mon, 5 Nov 2012 10:34:12 +0000 (12:34 +0200)]
Revert "Monkey patch the source to work with gevent"

This reverts commit 883e57b07a5cfcb2d0462d67399bfa57bacba846.
Drop the greenlet support.

6 years agoMonkey patch the source to work with gevent
Nikos Skalkotos [Fri, 2 Nov 2012 11:39:24 +0000 (13:39 +0200)]
Monkey patch the source to work with gevent

Needed by new kamaki, otherwise it throughs an exception at the end.

6 years agoUse py-sendfile in favor of pysendfile
Nikos Skalkotos [Fri, 2 Nov 2012 11:08:32 +0000 (13:08 +0200)]
Use py-sendfile in favor of pysendfile

The former is older but there are packages for it in distros like
Ubuntu.

6 years agoFix the import path for kamaki config module
Nikos Skalkotos [Thu, 1 Nov 2012 18:37:03 +0000 (20:37 +0200)]
Fix the import path for kamaki config module

It has changed after the last major revision and was not updated.

6 years agoMake snf-image-creator compatible with kamaki 0.6
Nikos Skalkotos [Wed, 31 Oct 2012 13:15:08 +0000 (15:15 +0200)]
Make snf-image-creator compatible with kamaki 0.6

6 years agoDo not hide the cursor when showing a progress bar
Nikos Skalkotos [Tue, 23 Oct 2012 14:06:56 +0000 (17:06 +0300)]
Do not hide the cursor when showing a progress bar

This is a workaround for a progress bar bug, where the system may
stay with the cursor hidden if finish() is not called.

6 years agoUpdate the doc to reflect the pbs to sh change
Nikos Skalkotos [Tue, 23 Oct 2012 09:17:34 +0000 (12:17 +0300)]
Update the doc to reflect the pbs to sh change

6 years agoDrop pbs dependency in favor of sh
Nikos Skalkotos [Mon, 22 Oct 2012 14:46:20 +0000 (17:46 +0300)]
Drop pbs dependency in favor of sh

PBS has now bocome sh.

6 years agoAdd the media source in the background title
Nikos Skalkotos [Fri, 19 Oct 2012 10:38:45 +0000 (13:38 +0300)]
Add the media source in the background title

6 years agoRephrase the caveats on image creation doc section
Nikos Skalkotos [Thu, 18 Oct 2012 14:42:39 +0000 (17:42 +0300)]
Rephrase the caveats on image creation doc section

Thank you cven.

6 years agoHandle keaboard interrupts and TERM signals.
Nikos Skalkotos [Thu, 18 Oct 2012 14:24:57 +0000 (17:24 +0300)]
Handle keaboard interrupts and TERM signals.

6 years agoRemove the goto(1) empty progress bar workaround
Nikos Skalkotos [Thu, 18 Oct 2012 10:40:23 +0000 (13:40 +0300)]
Remove the goto(1) empty progress bar workaround

Add progress >= 1.0.2 as install_dependency, since this is the version
that fixed the empty progress bar problem.

6 years agoSmall refinements in the documentation
Nikos Skalkotos [Thu, 18 Oct 2012 10:15:50 +0000 (13:15 +0300)]
Small refinements in the documentation

6 years agoMount the media ro if --print-sysprep is specified
Nikos Skalkotos [Thu, 18 Oct 2012 08:37:41 +0000 (11:37 +0300)]
Mount the media ro if --print-sysprep is specified

6 years agoUpdate snf-image-creator usage documentation
Nikos Skalkotos [Wed, 17 Oct 2012 14:36:48 +0000 (17:36 +0300)]
Update snf-image-creator usage documentation

Add missing sections

7 years agoUpdate snf-image-creator usage documentation
Nikos Skalkotos [Tue, 16 Oct 2012 13:54:15 +0000 (16:54 +0300)]
Update snf-image-creator usage documentation

Add a part explaining the usage and input options of the
non-interactive version of snf-image-creator.

7 years agoUpdate image properties help page
Nikos Skalkotos [Tue, 16 Oct 2012 10:46:02 +0000 (13:46 +0300)]
Update image properties help page

Add SORTORDER image property

7 years agoAdd basic usage documentation
Nikos Skalkotos [Mon, 15 Oct 2012 14:45:03 +0000 (17:45 +0300)]
Add basic usage documentation