1
FAI (The Friendly Arch Interface) 0.2 (aka pyaba)
3
Fai is a commandline-based Arch tool with interactive prompting. It aims to be
4
a better commandline user interface than tla. By combining functionality
5
that is handled as separate commands in tla, it aims to have smaller command
8
Quick Start (or "Where's the documentation?")
9
Most of the documentation currently available for fai is accessed through
12
To see all the available commands:
16
To get help on a specific command you, use either of these:
21
Also, see the HANDY HINTS below.
23
There's also a web site: http://sourcecontrol.net/~abentley/fai/
24
But it's focused more on programming Fai than on using it.
27
* Compatibility with aba commands
28
* Alias expansion (no prefix required for native commands)
29
* Automatic aliases; these determine the revision by performing functions
30
* tla fallthrough (to be removed when redundant)
31
* smart colorizing (which can be turned off)
32
* prompts that can be configured to take defaults
34
Commands: ('fai help -n' for a full list)
35
* get: an improved get that can use URLs and automatically create local
37
* revisions: a combination of logs, missing, revisions, cachedrevs, etc.
39
--missing-from (which of my revisions are missing from the
42
--modified (which revisions modified this file?)
43
--ancestry (iterates through the tree's patchlog ancestry)
44
* commit: prompts on empty commits, missing log messages
45
* update: updates to the requested revision, while retaining local changes.
46
prompts to change tree version.
47
* revert: undo command that can undo specific types of changes
48
* changes: can take two arguments, making delta redundant
51
More native implementations of the common commands.
52
An init command that will do my-id, make-archive, archive-setup, init-tree
53
Option defaults are high on the list, too.
55
Aren't you that guy who wrote that aba thing?
56
Yeah. aba's nice and all, but POSIX shell isn't my favourite language. It's
57
not geared at producing reliable, unambiguous programs. I won't say
58
"impossible", since the original Arch implementation was in shell. Python
59
(like many other languages) has facilities that make it *easy* to write
60
dependable programs. Things like variable scope, string manipulation and
61
exceptions are not to be sneezed at.
63
But I wrote an aba command!
64
Fai supports aba's external commands, which make up 78% of the aba tree
65
anyway. So Fai (like aba) is extensible in any language, but Python commands
66
have full access to Fai's tools.
69
Fai is just a new name for pyaba. I hate programs that are named for their
70
programming language. The language is a tool, not your program's
71
raison d'etre. (If the language *is* your program's reason for being, don't
72
write it!) On the other hand, PyArch makes sense, because it's Python-
77
Working around Fai's limitations as a shell:
79
When using Fai in shell mode, you'll find it's not as powerful as, say, Bash.
80
This is because I don't really want to rewrite Bash. It's hard to find the
81
right balance. So you'll occasionally want to force Fai to pass commands
82
through the system shell. You can do this by writing the commmands as Fai
86
> alias foo bar@baz--2004/meep--mope--0
88
But if you want to use the tree-version, you can do:
89
> fai alias foo $(tla tree-version)
91
Also, Fai commands mask real system utilities, notably diff and mv. To invoke
92
diff from Fai, just quote it:
93
> "diff" file.old file.new
95
You can also use pathnames:
96
> /usr/bin/diff file.old file.new
98
To import the latest vendor changes from a tarball:
100
1. untar the tarball and cd to the directory
101
2. $ fai init-tree VENDOR-VERSION
102
3. $ fai revert --control-files --revision acur
103
4. $ fai add-ids --untagged
104
This will update the control files. You may also want to branch at this point.
108
the tdate alias behaves strangely if no day is specified.