Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 431 lines (311 sloc) 17.613 kB
2f3d20a @yrashk Added README.md
yrashk authored
1 Agner
2 =====
3
be9362f @jlouis Add more description to the README file.
jlouis authored
4 Agner is a rebar-friendly Erlang package index inspired by Clojars and
5 Homebrew.
6
7 Essentially, Agner is an index of Erlang packages with some extra
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
8 capabilities such as versioning, downloads, installation and so on.
be9362f @jlouis Add more description to the README file.
jlouis authored
9
10 Agner is a shorthand for *A Giant Nebula of Erlang Repositories*. It
163e7a1 @yrashk Removed quotes around Agner Krarup's name (README.md)
yrashk authored
11 also pays homage to the Danish statistician Agner Krarup Erlang.
be9362f @jlouis Add more description to the README file.
jlouis authored
12
bc359e1 @yrashk Dropped "Configuration" part from Installation section name in README
yrashk authored
13 Installation
14 ------------
b951250 @yrashk Added installation instructions
yrashk authored
15
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
16 It is just a matter of a simple oneliner to get Agner installed:
68fc550 @yrashk Documentation on 'oneliner' installation
yrashk authored
17
18 curl https://github.com/agner/agner/raw/master/scripts/oneliner | sh
19
20 If you want to install latest release instead of HEAD, use this one:
21
22 curl https://github.com/agner/agner/raw/master/scripts/oneliner.release | sh
23
be9362f @jlouis Add more description to the README file.
jlouis authored
24 Motivation
25 ----------
26
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
27 By now, there is a large set of Erlang tools and libraries available,
28 all of them highly useful. The problem, however, is to provide an index
be9362f @jlouis Add more description to the README file.
jlouis authored
29 of these packages, so other people
30
31 * Know of their existence
32 * Can easily use a package in their own projects
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
33 * Can search for a particular package
be9362f @jlouis Add more description to the README file.
jlouis authored
34
35 Agner aims to provide such an index, by focusing on a number of
36 points:
37
38 * The index is loose in the sense that anyone can overlay the index
39 and add their own packages to the repository
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
40 * The tool is as simple as possible, utilizing git as a backend (for the time
41 being) to maintain the indices
be9362f @jlouis Add more description to the README file.
jlouis authored
42 * Recognize the ideas of simplicity Joe Armstrong had in mind on
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
43 the erlang-questions@ mailing list on the
44 [22th of July 2010](http://www.erlang.org/cgi-bin/ezmlm-cgi?4:mss:52415:201007:npnohnblfemjooohecnk)
be9362f @jlouis Add more description to the README file.
jlouis authored
45
46 Use
47 ===
48
49 This section introduces the terminology of Agner:
50
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
51 * **index/indices:** Where Agner finds its index of available of
52 available packages. Usually this is a github user with one or more
53 Agner-packages among the users git repositories. You can enable
54 multiple indices at the same time if you want.
be9362f @jlouis Add more description to the README file.
jlouis authored
55 * **package:** A separate library or program indentified by the
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
56 index. It is an `.agner` repository underneath the index github
57 user, so one example would be `agner/gproc.agner` specifying a
58 package for the `gproc` library undernath the `agner`-user. A
59 package may be overridden by an index; a very important feature that
60 allows installing packages not hosted in a central index.
61 * **project:** A software project, program or library, containing
62 the actual source code for the program or library. In the running example,
be9362f @jlouis Add more description to the README file.
jlouis authored
63 this is `esl/gproc` on github.
64 * **release:** A release of a package signifying a point in time
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
65 where the package was deemed to be in a certain (stable) state. Is usually
be9362f @jlouis Add more description to the README file.
jlouis authored
66 used when a new version of the software is released to the
67 general public so you can refer to package X version Y
68 * **flavour:** A moving target of a package with some specified
69 behaviour. It is used for tracking the development of a package
70 over time. Common flavours include the *@master* flavour, used to
71 track the development branch of a package and the *@release*
72 flavour, used to track the latest release of the package.
73
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
74 Command invocation
75 ------------------
76
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
77 agner help [COMMAND]
78
79 Print a command overview on the command line. If the optional
80 COMMAND is given, show help for the given command.
81
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
82 ### Listing, searching:
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
83
84 agner list [-d/--descriptions] [-p/--properties PROPERTY1[,PROPERTY2]...]
cb4746d @yrashk Added 'agner list --search'/'agner search' functionality
yrashk authored
85 [-s/--search SEARCH_TERM]
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
86
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
87 Will list all Agner packages. It is used for quick overviews of the
88 packages that are available in the enabled indices for installation or
89 use in a program. This command, like most commands, accepts command
90 line flags:
91
92 * `-d` or `--descriptions`: With this option enabled, Agner will also
93 print out the descriptions of the packages, for easy grepping to find
94 relevant packages. It accepts the following flags:
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
95
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
96 * `-p` or `--properties`: A comma, separated list of properties to be
97 included in the listing (when present).
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
98
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
99 * `-s` or `--search`: The packages name, description and keyword are
903a8f9 @ndim Wrap env vars with underscores in backticks
ndim authored
100 searched, matched against `SEARCH_TERM`. Only matching items are shown.
e1ec98c @yrashk Added -p option to 'list' command so that arbitrary properties can be…
yrashk authored
101
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
102 Since searching for packages is so common, a convenience command has
103 been defined:
cb4746d @yrashk Added 'agner list --search'/'agner search' functionality
yrashk authored
104
105 agner search SEARCH_TERM [-d/--description] [-p/--properties PROPERTY1,PROPERTY2]
106
107 This is an alias for `agner list -s`
108
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
109 ### Printing package specifications (spec's)
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
110
111 agner spec PACKAGE [-v/--version VERSION] [-b/--browser]
61cb23f @yrashk Added 'spec --property' option
yrashk authored
112 [-h/--homepage] [-p/--property PROPERTY]
d87929f @yrashk Added -s/--spec-file option to fetch, spec & install commands (allows…
yrashk authored
113 [-s/--spec-file SPECFILE]
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
114
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
115 Will print a specification of a given package on stdout. The specification is the information Agner uses to determine the location of the package as well as the relevant meta-data for the package. Flags:
116
117 * `-v` or `--version`: If this version constraint option is given,
118 Agner will print out the specification for that given VERSION (for
119 example `agner spec gproc -v @release`). The version can be either a *release* or a *flavour*. By default, the `@master` flavour is chosen.
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
120
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
121 * `-b` or `--browser`: Open a browser with the specification file in
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
122 its respective `.agner` repository at github.
123
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
124 * `-h` or `--homepage`: Open a browser with the package's homepage.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
125
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
126 * `-p` or `--property`: Agner will only render a particular PROPERTY value
61cb23f @yrashk Added 'spec --property' option
yrashk authored
127 instead of a full specification (example: `agner spec -p rebar_compatible yaws`).
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
128
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
129 * `-s` or `--spec-file`: A flag primarily intended for package
130 maintainers. This way they can specify their local `agner.config`
131 files to test their package.
61cb23f @yrashk Added 'spec --property' option
yrashk authored
132
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
133 ### Fetching, building and installing
d87929f @yrashk Added -s/--spec-file option to fetch, spec & install commands (allows…
yrashk authored
134
2df68bb @yrashk Minor styling update in README.md
yrashk authored
135 agner fetch PACKAGE [DESTDIR] [-v/--version VERSION] [-b/--build]
048b3e2 @yrashk Added support for install_command and 'fetch --install/-i' option, al…
yrashk authored
136 [-a/--add-path] [-i/--install]
b929dfa @yrashk Added support for AGNER_PACKAGE_REPO variable
yrashk authored
137 [-s/--spec-file SPECFILE] [--package-path PACKAGEPATH]
6bc57e4 @yrashk Use ports to build & install packages
yrashk authored
138 [-q/--quiet]
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
139
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
140 Fetch a given PACKAGE to either the current directory or,
141 optionally, to the DESTDIR directory. Flags:
142
143 * `-v` or `--version`: The version constraint is as is the case for
144 `agner spec`. You can choose to constrain a fetch to a given
145 VERSION, either a *relase* or a *flavour*.
146
147 * `-b` or `--build`: Agner will try to build fetched package. Only
148 rebar-compatible packages or packages with `build_command` can be
149 built. If you also specify `-a` (or `--add-path`) Agner will add path
150 to a newly built package to your `$HOME/.erlang`
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
151
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
152 * `-i` or `--install`: If the package has the `install_command`
153 property defined, Agner will also install this package. Please note
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
154 that in most cases you should also specify `-b` (or `--build`) in order for
048b3e2 @yrashk Added support for install_command and 'fetch --install/-i' option, al…
yrashk authored
155 installation to make sense.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
156
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
157 * `-s` or `--spec-file`: A flag primarily intended for package
158 maintainers. This way they can specify their local `agner.config`
159 files to test their package. Can be used in conjunction with
160 `--package-path` to point to a checkout copy of an `.agner` repo (will
161 be used to set `$AGNER_PACKAGE_REPO` variable for shell commands,
162 defaults to `.`)
048b3e2 @yrashk Added support for install_command and 'fetch --install/-i' option, al…
yrashk authored
163
6bc57e4 @yrashk Use ports to build & install packages
yrashk authored
164 * `-q` or `--quiet`: A flag that will suppress output of `build_command` & `install_command`
165 (if present)
166
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
167 For convenience, the following shortcuts are defined:
d87929f @yrashk Added -s/--spec-file option to fetch, spec & install commands (allows…
yrashk authored
168
bf18c79 @yrashk Add option --no-fetch to build and install commands
yrashk authored
169 agner build PACKAGE [DESTDIR] [-v/--version VERSION] [-s/--spec-file SPECFILE] [-a/--add-path] [-i/--install] [--no-fetch]
a2e653e @yrashk Added agner build command (an alias to agner fetch --build)
yrashk authored
170
171 Alias for `agner fetch --build PACKAGE`.
172
bf18c79 @yrashk Add option --no-fetch to build and install commands
yrashk authored
173 agner install PACKAGE [-v/--version VERSION] [-s/--spec-file SPECFILE] [--no-fetch]
048b3e2 @yrashk Added support for install_command and 'fetch --install/-i' option, al…
yrashk authored
174
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
175 Alias for `agner fetch --build --install PACKAGE
176 /tmp/<uniq_filename>`. A typical example would be `agner install
177 rebar` or `agner install rebar -v @agner` to get `rebar` binary in
ff955cc @yrashk Merge branch 'readme-cleanup' of https://github.com/jlouis/agner into…
yrashk authored
178 your `PATH`. It is assumed that `install_command` property will make use
179 of `AGNER_INSTALL_PREFIX` OS environment variable.
048b3e2 @yrashk Added support for install_command and 'fetch --install/-i' option, al…
yrashk authored
180
bf18c79 @yrashk Add option --no-fetch to build and install commands
yrashk authored
181 `--no-fetch` option could be useful when you don't want to update already
182 fetched repository, but just build or install it.
183
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
184 ### Uninstalling
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
185
dd5550e @yrashk Added 'uninstall' command
yrashk authored
186 agner uninstall PACKAGE [-v/--version VERSION] [-s/--spec-file SPECFILE]
187
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
188 Uninstall given package (and a particular VERSION of it, if specified
189 - see `agner spec`). Will use local SPECFILE if the `-s` (or `--spec-file`)
190 option is passed.
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
191
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
192 ### Query
dd5550e @yrashk Added 'uninstall' command
yrashk authored
193
8b10007 @yrashk Added --no-releases and --no-flavours options for 'spec versions'
yrashk authored
194 agner versions PACKAGE [--no-flavours] [--no-releases]
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
195
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
196 List the versions of the given PACKAGE. Specifying `--no-flavours`
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
197 will omit flavour versions; and specifying `--no-releases` will omit
198 release versions respectively.
199
8d04acd @yrashk Renamed 'installed' command to 'prefix'
yrashk authored
200 agner prefix PACKAGE [-v/--version VERSION]
201
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
202 Prints prefix where PACKAGE is installed. If package is not installed,
203 prints nothing.
8d04acd @yrashk Renamed 'installed' command to 'prefix'
yrashk authored
204
7677742 @yrashk Added documentation for 'config' command
yrashk authored
205 agner config [VARIABLE]
206
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
207 Shows main environmental variables. If VARIABLE is omitted, then lists
208 `key=value` for each variable. If not omitted, prints just its
209 value. Currently supported variables are: `prefix` and `bin`.
7677742 @yrashk Added documentation for 'config' command
yrashk authored
210
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
211 ### Packaging
92348e5 @jlouis Clean up and canonicalize the command invocation section.
jlouis authored
212
1563446 @yrashk Added 'agner create' command to simply process of creating new .agner…
yrashk authored
213 agner create PACKAGE [--github-account ACCOUNT]
214
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
215 Contributor's tool that clones `.agner` repo template and sets its
216 origin to ACCOUNT (by default, equals `agner`, so if you don't have a
217 permission to create repos in `agner`, set --github-account to your
218 personal or organization account.
1563446 @yrashk Added 'agner create' command to simply process of creating new .agner…
yrashk authored
219
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
220 agner verify [SPECFILE]
1bb458c @yrashk Added 'verify' command line command
yrashk authored
221
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
222 Verify SPECFILE as a specification file for correctness; intended to
223 be used to package maintainers to simplify their workflow. If SPECFILE
224 is not given, it defaults to `agner.config`. Currently checks whether
225 1) specification is a valid file that can be parsed, 2) the URL can be
226 fetched. In the future it will also offer a deeper analysis of
227 specification correctness.
1bb458c @yrashk Added 'verify' command line command
yrashk authored
228
e74c3fa @jlouis Re-order the sections in the README.md file.
jlouis authored
229 Packaging
230 =========
be9362f @jlouis Add more description to the README file.
jlouis authored
231
232 Package organization
233 --------------------
234
235 When Agner is invoked, it will scan its *indices* for package
236 lists. The default index is "agner", which is located at
237 [https://github.com/agner/](https://github.com/agner/). The index is
238 scanned by looking for *Agner repositories* which are normal (github)
239 repositories suffixed with `.agner`. An example is the repository
240 [https://github.com/agner/getopt.agner](https://github.com/agner/getopt.agner)
241 which contains the package details of the `getopt` package.
242
243 It is important to nail down that there are three balls in the air:
244
245 * The index user, who has a list of
246 * `.agner` repositories, which points to
247 * Erlang software projects
248
249 By making a split between the repository containing the project and
250 the repository containing the package, we make it easy to identify
251 `.agner` repositories, and we enable a simple way to make the project
252 live in another source control system, for instance Mercurial (hg). It
253 is also way easier to keep the (small) `.agner` repositories in an
254 index and in the long run, it provisions for local caching.
255
256 Further indices can be added to Agner through the environment (TODO:
257 flesh out how that is done). Indices are searched
258 in the order of specification, allowing for overriding of a given
259 index. This allows you to create local indices or special indices for
260 your own use, or try something out on top of other indices.
261
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
262 The multiple indices approach solves authorization questions "the git
263 way": you put trust in the indices you add to Agner, so if you don't
264 trust an index, you can simply refrain from adding it. The main
265 "agner" index is intended to be the official source, but we recognize
266 that individuals might have reasons to overlay another index on
267 top. By having a loose index-construction, we hope to alleviate some
268 of the problems with access rights.
2f3d20a @yrashk Added README.md
yrashk authored
269
93546e5 @yrashk A little bit more information in the README.md
yrashk authored
270 Package names
271 -------------
272
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
273 Packages are named in one of two ways. Either as the a direct name,
274 <code>mochiweb</code>, or as a form with a prefix of the package
275 index, <code>account/package</code>. For example
be9362f @jlouis Add more description to the README file.
jlouis authored
276 <code>yrashk/misultin</code>). We use package names to identify a
277 given package in Agner - but versions of the package is naturally not
278 part of its name. This allows for packages to exist in multiple
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
279 versions at the same time.
93546e5 @yrashk A little bit more information in the README.md
yrashk authored
280
281 Versions
282 --------
283
284 Agner has two kinds of versions:
285
be9362f @jlouis Add more description to the README file.
jlouis authored
286 * Release versions, normally something like <code>1.2.0</code>,
287 represented using tags in `.agner` repos.
288 * Flavour versions, normally something like <code>@release</code>,
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
289 represented using branches in `.agner` repos. Note the prefix of "@"
290 which is present on flavours only.
be9362f @jlouis Add more description to the README file.
jlouis authored
291
292 The intention is that a *release* version marks a given point in time
293 where a given version of the code base was released to the general
294 public. When Erlang/OTP is released as OTP-R14B01 for instance, it
295 signifies a *release* in Agner-terminology. On the other hand, a
296 *flavour* signifies a moving target. Continuing the OTP-R14B01
297 example from before, it would be natural to have a *@dev* flavour
298 which tracks the Erlang/OTP branch called `dev`. The other important
299 flavour is *@release* which will track the latest release.
300
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
301 Also, the command line utility and Agner-enabled rebar will recognize
5a47092 @yrashk Markdown syntax update in README.md
yrashk authored
302 `atleast:VERSION` format (for example, `atleast:1.5.0`) and will use
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
303 the latest version after VERSION (so, if some package already has a
5a47092 @yrashk Markdown syntax update in README.md
yrashk authored
304 version of `1.6`, `atleast:1.5.0` will select `1.6`. This is mostly
305 for scenarios when `@release` flavour is absent or broken.
44c0d1e @yrashk Added atleast:VERSION syntax to README.md
yrashk authored
306
be9362f @jlouis Add more description to the README file.
jlouis authored
307 ### How to create relases and flavours
308
309 As hinted, a release version is a *tag* in a `.agner` repository. So
310 to create a release, you alter the `.agner` repository to match your
311 liking and then you tag it (with a standard `git tag` command
312 invocation). Agner will now pick up the change.
313
314 Likewise, for a flavour version, you *branch* the `.agner` repository
315 and alter the branch so it does what your flavour intended to
316 do. Flavours can be made for anything you would like to track over
317 time. By default, the advice is to create two flavours, *@master* and
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
318 *@release*. These tracks, respectively, the current development of a
be9362f @jlouis Add more description to the README file.
jlouis authored
319 project and the latest stable release of that project.
320
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
321 Keeping everything up-to-date is outsourced to git and you can use
be9362f @jlouis Add more description to the README file.
jlouis authored
322 usual git-commands to manipulate the `.agner` repository.
323
324 ### The contents of an .agner package
325
326 The `.agner` package repository contains a file of Erlang-terms, called
327 `agner.config`. This file looks like this:
328
329 {name, "etorrent"}.
330 {authors, ["Jesper Louis Andersen <jesper.louis.andersen@gmail.com>"]}.
331 {description, "Etorrent is a bittorrent client implementation in Erlang focusing on fault-tolerance"}.
332 {homepage, "http://github.com/jlouis/etorrent"}.
333 {rebar_compatible, true}.
334 {license, "BSD2", "COPYING"}.
335 {erlang_versions, [otp_r14b, otp_r14b01, otp_r13b04]}.
336 {url, {git, "https://github.com/jlouis/etorrent.git", {branch, "master"}}}.
337
338 Or in a more generic way:
339
340 {name, ProjectName}.
341 {authors, [Author]}.
342 {description, ProjectDescription}.
343 {homepage, ProjectHomepage}.
344 {rebar_compatible, IsRebarCompatible}.
b2cf7aa @yrashk Minor update on optionality of LicenseFile in the spec (README.md)
yrashk authored
345 {license, LicenseType [, LicenseFile]}.
be9362f @jlouis Add more description to the README file.
jlouis authored
346 {erlang_versions, [OTPAtom]}.
347 {url, UrlSpec}.
348
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
349 The meaning of the individual fields are as in the following:
350
be9362f @jlouis Add more description to the README file.
jlouis authored
351 * `ProjectName :: string()` - is the project name. This is usually
352 named the same as the `.agner` package to minimize confusion.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
353
be9362f @jlouis Add more description to the README file.
jlouis authored
354 * `[Author] :: [string()]` - Can really be any string, but it is
355 usually the names of the project authors in a list including their
356 email-addresses for easy contact.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
357
be9362f @jlouis Add more description to the README file.
jlouis authored
358 * `ProjectDescription :: string()` - A description of the
359 project. Used for searching through projects.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
360
be9362f @jlouis Add more description to the README file.
jlouis authored
361 * `ProjectHomepage :: string()` - The URL of the homepage of the
362 project.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
363
be9362f @jlouis Add more description to the README file.
jlouis authored
364 * `IsRebarCompatible :: boolean()` - Set to `true` if this project
2569b0a @yrashk Minor update on rebar_compatible in README.md
yrashk authored
365 uses `rebar` or is compilable by rebar even if it wasn't originally designed for that.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
366
be9362f @jlouis Add more description to the README file.
jlouis authored
367 * `LicenseType :: string(), LicenseFile :: string()` - Two
368 strings. The first one specifies the general license type of the
369 project and the second string explains where the license is to be
370 found from the top level directory (usually file-names like
b2cf7aa @yrashk Minor update on optionality of LicenseFile in the spec (README.md)
yrashk authored
371 `COPYING` or `LICENSE` are used for this). Please note that `LicenseFile` is optional.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
372
be9362f @jlouis Add more description to the README file.
jlouis authored
373 * `[OTPAtom] :: [otp_rXXb | otp_rXXbYY]` - A list of what OTP versions
374 the project can be used with. the `XX` is a major release number in
375 Erlang/OTP (12,13,14,...) and `YY` is a minor release number (01,
376 02, ...).
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
377
be9362f @jlouis Add more description to the README file.
jlouis authored
378 * `UrlSpec :: {git, URL, GitSpec}` - Specifies where to fetch the
8c1d1cb @yrashk Minor update for 'git' URL format in README.md
yrashk authored
379 project. `GitSpec` has type `sha1() | {tag, string()} | {branch, string()}`
380 and points to either string-based sha1 representation, a git *tag* or a *git* branch
be9362f @jlouis Add more description to the README file.
jlouis authored
381 respectively. Notice that you can't specify more than one target in
382 this file. To handle multiple versions, you use *releases* and
383 *flavours* by altering the `.agner` repository wherein this
384 configuration file lies.
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
385
1341a02 @yrashk Added mentioning of {hg, URL, Rev} URL format in README.md
yrashk authored
386 * `UrlSpec :: {hg, URL, HgRev}` - Specifies where to fetch the
387 project. `HgSpec` has type `string()` and points to either string-based revision representation
93546e5 @yrashk A little bit more information in the README.md
yrashk authored
388
b4b1965 @yrashk Fixed broken link in README.md
yrashk authored
389 The very latest specification typespecs are available in [agner_spec.hrl](agner/tree/master/include/agner_spec.hrl)
1cfe46d @yrashk Reference agner_spec.hrl in README.md
yrashk authored
390
260c851 @yrashk Added another note about 'agner verify' in README.md
yrashk authored
391 It is **highly recommended** that `.agner` repo maintainers use `agner verify` command before
392 committing and pushing their updated specifications.
393
394
2f3d20a @yrashk Added README.md
yrashk authored
395 Rebar
396 -----
397
b7ac88a @yrashk Don't mention rebar included with agner as a viable option -- it can …
yrashk authored
398 Agner-compatible rebar can be installed by `agner install rebar -v @agner`. We hope to get rebar integration in the upstream with time.
2f3d20a @yrashk Added README.md
yrashk authored
399
93dcd31 @yrashk Updated README file
yrashk authored
400 Using it with rebar is fairly simple, it makes use of rebar's plugin system.
401 Just include our plugin in your rebar.config and reference default `deps` directory:
2f3d20a @yrashk Added README.md
yrashk authored
402
93dcd31 @yrashk Updated README file
yrashk authored
403 {rebar_plugins, [agner_rebar_plugin]}.
404 {lib_dirs, ["deps"]}.
2f3d20a @yrashk Added README.md
yrashk authored
405
93dcd31 @yrashk Updated README file
yrashk authored
406 then, in your .app or .app.src file, add something like this as one of your `application keys`:
407
408 ...
409 {agner, [
410 {requires, ["typespecs","getopt","gproc","plists","gen_fsm2","jsx","rebar"]}
411 ]}
412 ...
413
414 An example can be found in [agner itself](https://github.com/agner/agner/blob/master/src/agner.app.src)
415
416 Also, you can also specify your own indices in rebar.config
2f3d20a @yrashk Added README.md
yrashk authored
417
a26465d @yrashk Markup update in README.md
yrashk authored
418 {agner_indices, [{github, "yourgithubusername"},{github,"agner"}].
2f3d20a @yrashk Added README.md
yrashk authored
419
ca3ad6d @yrashk Added Contributing article link to README.md
yrashk authored
420 Contributing
421 ------------
422
9ab1a80 @jlouis Go through the README.md file and clean up.
jlouis authored
423 If you want to contrinute to Agner, please read the document at
424 [CONTRIBUTING](agner/tree/master/CONTRIBUTING.md).
425
426
427
428
429
430
Something went wrong with that request. Please try again.