melpa/README.md
2012-03-17 10:37:32 -05:00

102 lines
3.1 KiB
Markdown

# MELPA
Repository of code for *MELPA* or *Milkypostman's ELPA* or *Milkypostman's Experimental Lisp Package Repository* if you're not into the whole brevity thing.
## Scripts
* `buildpkg` -- Create an archive of the package(s) passed as
arguments to the script. Built packages are put in the `packages/`
folder with version corresponding to the newest HEAD revision
available; given according to the `%Y%m%d` format.
* `melpa` -- All the logic for generating everything in
the repository based on the `pkglist` file. By default this will build all packages listed in `pkglist`,
compile the `index.html` file for the [melpa] website front page, and
sync with the site.
The following arguments are accepted,
clear
: clean out the `packages/` directory
build
: build all packages in `pkglist`
index
: build the `index.html` file
validate
: naively validate that the correct number of packages were built.
[melpa]: http://melpa.milkbox.net
## Code
The `package-build.el` file contains all the heavy lifting. The
scripts above call the `package-build-archive` function from the
command-line to actually build the package(s).
Use `(package-build-all)` to build all melpa packages.
Alternatively you can
load this file from within Emacs and issues commands from there.
## Package List
`pkglist` contains a list of all the currently known packages. Entries
are lisp data of the form,
(name :url "<repo url>"
:fetcher [git|svn|darcs]
[:files ("<file1>", ...)])
The `:files` entry is optional but is required for either single-file
packages or repositories which contain more than one package and
individual packages should be extracted. For example, the
[emacs-starter-kit](https://github.com/technomancy/emacs-starter-kit)
contains the *starter-kit* package along with extra packages in the
`modules` directory; *starter-kit-bindings*, *starter-kit-lisp*, etc.
The entry for *starter-kit* is,
(starter-kit
:url "git://github.com/technomancy/emacs-starter-kit.git"
:fetcher git
:files ("starter-kit-defuns.el"
"starter-kit-misc.el"
"starter-kit.el"))
Here the required elisp files are specified. All other information is
generated by the `package-build.el` script. This include the
*description*, *version*, and *requires*. In single-file packages the
metadata is parsed from the file itself just as `package.el` does. For
packages containing multiple files, metadata will be searched for in
`name-pkg.el`, `name.el`, and `name-pkg.el.in`. If the information
cannot be found the metadata is generated with *requires* set to
`nil`.
## Adding Packages
Open an issue on Github and either paste in the relevant entry for
`pkglist` or add a bunch and send a pull request.
## Developement
Fork away! Send me some pull requests.
### Notes
Packages end up in the `packages/` directory by default.
This can be configured using the `package-build-archive-dir` variable.
Repositories are checked out to the `working/` directory by default.
This can be configured using the `package-build-working-dir` variable.