aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md166
1 files changed, 166 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c4a83e9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,166 @@
+Installation
+------------
+
+ git clone http://.../app.sh.git
+
+ mkdir /opt/apps
+ cd /opt/apps
+ ln -s .../app.sh.git/app.sh app.sh
+
+NOTE: The bash completion is not perfect yet.
+
+ echo 'source .../app.sh.git/app_completion' >> ~/.bashrc
+
+Or was it `~/.bash_profile`? hmm
+
+TODOs
+-----
+
+* Support installation-wide settings. Useful for shared environment
+ settings etc (PATH).
+
+* Add support for hooks in .app/hooks. Example hooks:
+ * Diff config. Save a backup of the config on installtaion.
+ * Copy the configuration from the previous installation.
+
+* Support changing current version.
+
+* Document app.sh
+ * Concept: config. group, key and value.
+ * Scriptable
+
+* init.d support - register the application under /etc/init.d on
+ installation. Should probably be a plugin.
+
+* Support -h for all applicable methods to show the help/usage.
+
+* Rename "scripts/" to handlers or something similar. Perhaps just
+ remove it entirely.
+
+* Document how the operate method (custom pid-method stuff) can see
+ its own output for debugging.
+
+Commands
+--------
+
+### `instance`
+
+#### `install`
+
+#### `upgrade`
+
+Tries to upgrade all instances where the version doesn't match the resolved version.
+
+#### `list`
+
+#### `list-versions`
+
+#### `set-current`
+
+#### `remove`
+
+Not implemented
+
+### `conf`
+
+#### `get`
+
+ ./app -n $n -i $i conf get
+
+#### `set`
+
+ ./app -n $n -i $i conf set group.key value
+
+#### `delete`
+
+ ./app -n $n -i $i conf delete group.key
+
+### `operate`
+
+The operate sub-methods are provided by the application.
+
+#### Supported methods by `pid-method`
+
+#### `start`
+
+#### `stop`
+
+TODO: support -f flag that doesn't exit with 1 if the app is not running.
+
+#### `status`
+
+### `foreach`
+
+Runs the given command for each of the selected instances.
+
+Method Contract
+---------------
+
+### Environment variables you can depend on
+
+* `APPSH_NAME`
+* `APPSH_INSTANCE`
+* `APPSH_METHOD`
+
+Unclassified:
+
+* `APPSH_HOME`
+* `APPSH_APPS`
+
+Directory Hierarchy
+-------------------
+
+### Current
+
+App.sh is installed through cloning the git repository and/or
+unpacking a tarball from the git repository. The directory that
+contains the app.sh libraries is known as `$APPSH_HOME`.
+
+App.sh related:
+
+ ./ The root of an application set. Known as $APPSH_APPS
+ ./app The app script, symlinked from your git clone directory
+ ./.app/lib bash libraries used by app.sh and methods
+ ./.app/var runtime data
+
+Applications:
+
+ ./<name>/<instance>/ - Known as $APPSH_INSTANCE_HOME
+ current -> - symlink to the currently installed app
+ versions/ - collection with all installed versions
+ 1.0/ - A installed version. The zip file is unzipped here.
+ root/ - The current directory when executing methods and scripts
+ scripts/
+ 1.1/
+ 2.0/
+
+Creating Apps
+-------------
+
+"App bundles" are basically just zip file with a specific layout. It
+has to contain at least a `root/` directory which contains your
+application. It can contain anything. The `current` symlink will point
+to this directory.
+
+The bundle can also contain a special `scripts` directory which
+contains scripts that's run durtion package operations. Only
+`postinstall` is currently supported.
+
+Zip File Tree
+=============
+
+ root/
+ bin/
+ myapp
+ etc/
+ config
+ scripts/
+ postinstall
+
+Managing Apps
+-------------
+
+Setting Environment Variables
+-----------------------------
+
+ app -n .. -i .. conf