Skip to content

HTTPS clone URL

Subversion checkout URL

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