IRON user documentation

About

In the beginning Eiffel users were getting the library source code with archive file, or source control management system such as subversion, git, ...but there were no standard way to install those libraries on the user machine so that any project could reuse it. Thus we built a package repository for Eiffel, named IRON, and had ecf evolved to use those package in a simple way.

IRON consists of

What is an iron package?

This is shared Eiffel code, mostly used for Eiffel libraries. A package can contains one or more libraries (and thus one or more .ecf files), even if this is recommended to have just one library per package.

Each package belongs to a specific Iron ecosystem, that's is to say a release collection. Currently it is synchronized with EiffelStudio releases (i.e 7.3, ...).
For instance, a package belongs to http://iron.eiffel.com/7.3/ collection.

How can I use a library from an iron package?

Traditionally, Eiffel user uses path to indicate the location of the library on their machine, typically $ISE_LIBRARY/library/base/base.ecf where $ISE_LIBRARY is usually pointing to 'local-path-to-eiffel-installation'.

Now how could one use the base package hosted on http://iron.eiffel.com for version 7.3 of EiffelStudio?

You can see basic information about 'base' package at http://iron.eiffel.com/access/7.3/package/?name=base and see the associated URIs that you can use to reference this package from ecf file. For instance the url will point to the base iron package http://iron.eiffel.com/7.3/es/library/base , which is similar to current $ISE_LIBRARY/library/base.

The reference location to the base.ecf configuration file is simple the full URI http://iron.eiffel.com/7.3/es/library/base/base.ecf, so the ecf file could have
Note that for convenience, you can simply define the environment variable ISE_LIBRARY to be http://iron.eiffel.com/7.3/es, then the existing location $ISE_LIBRARY/library/base/base.ecf will use transparently the iron package base.

However, it might occurs that a package is not installed on the local machine, the current iron integration in Eiffel compiler, does not download and install the package automatically.

How to use iron in command line?

Using the iron executable, you can execute various operations such as search, install, remove, and upload.

Note: the iron executable is available with EiffelStudio in $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.

To get quick help for the iron usage:

To get help on specific action:

Update the iron repository informations

Example:

Display information on specific package

If the package is installed, you will also get the local path installation

To search a package by name, id or uri

(this action will be improved in the future)

List available packages

Install a package

Or also
Note: if you use iron install -v base, it will display the location of the installation for the package base.
This is usually under the Eiffel User Files folder, example
   C:\Users\{your-login}\Documents\Eiffel User Files\7.3\iron

If the environment variables ISE_IRON_PATH or else IRON_PATH are defined, the location for the iron package installation will use their value.

List installed packages

Uninstall or remove a package

Advanced usage

You can have more than one iron repository server registered

To build and share your own package, use iron package

For that, you need an iron user account on the related iron server, please visit http://iron.eiffel.com/access/

For example to build the foobar package from your library c:\eiffel\library\foobar
This command will create a new package named foobar on iron repository http://iron.eiffel.com/7.3, and using the local folder c:\eiffel\library\foobar as the source code for the package.
Then associate this package with uri http://iron.eiffel.com/7.3/dummy/lib/foobar

Future enhancements

The version of iron published at the same time of EiffelStudio 7.3 is a first implementation, it covers the basic functionalities, but the goal of iron is also to improve quality and ensure the ecosystem as a whole is coherent.