mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 23:32:42 +01:00
changed priority to force this chapter to the top as I consider the repository important
Updated wikipage IRON: Eiffel package repository. (Signed-off-by:RTH10260). git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2215 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -1,460 +1,462 @@
|
|||||||
[[Property:title|IRON: Eiffel package repository]]
|
[[Property:modification_date|Sat, 05 Oct 2019 13:54:59 GMT]]
|
||||||
[[Property:link_title|IRON packages]]
|
[[Property:publication_date|Sat, 05 Oct 2019 13:54:59 GMT]]
|
||||||
[[Property:weight|0]]
|
[[Property:title|IRON: Eiffel package repository]]
|
||||||
[[Property:uuid|393EFF7D-49DF-472C-89CE-7E0970F1A96A]]
|
[[Property:link_title|IRON packages]]
|
||||||
{{ReviewRequested}}
|
[[Property:weight|-20]]
|
||||||
|
[[Property:uuid|393EFF7D-49DF-472C-89CE-7E0970F1A96A]]
|
||||||
=Purpose=
|
{{ReviewRequested}}
|
||||||
|
|
||||||
IRON provides an easy-to-use facility for using and sharing packages of quality Eiffel components, automating many of the tasks involved.
|
=Purpose=
|
||||||
Most often a package is a library or a set of libraries, but it could also other resources such as tools.
|
|
||||||
|
IRON provides an easy-to-use facility for using and sharing packages of quality Eiffel components, automating many of the tasks involved.
|
||||||
{{definition|IRON|a package management solution based on repositories.}}
|
Most often a package is a library or a set of libraries, but it could also other resources such as tools.
|
||||||
|
|
||||||
|
{{definition|IRON|a package management solution based on repositories.}}
|
||||||
=Package Repository vs Library Repository=
|
|
||||||
|
|
||||||
Certainly the IRON repository is a repository of Eiffel libraries. However, sometimes libraries are used together, or cross reference one another, and thus are appropriate to be delivered together as a unit.
|
=Package Repository vs Library Repository=
|
||||||
Such unit can also include other types of files, such as external .c files that may need to be compiled on the local platform to make .LIB or .OBJ files available to the linker (.a or .o on Unix and Linux systems), scripts or executable that need to be run as part of the installation process (e.g. to generate other files required by the library, install environment variables, generate source code from LEX files), or tool kits that are part of, or needed by, the library.
|
|
||||||
Since the IRON repository permits programmers to install software components in "units", and since sometimes those units can contain more than one library, as well as other types of files, a new term was required to convey this concept: package.
|
Certainly the IRON repository is a repository of Eiffel libraries. However, sometimes libraries are used together, or cross reference one another, and thus are appropriate to be delivered together as a unit.
|
||||||
|
Such unit can also include other types of files, such as external .c files that may need to be compiled on the local platform to make .LIB or .OBJ files available to the linker (.a or .o on Unix and Linux systems), scripts or executable that need to be run as part of the installation process (e.g. to generate other files required by the library, install environment variables, generate source code from LEX files), or tool kits that are part of, or needed by, the library.
|
||||||
{{Definition|package|a downloadable unit of software from an IRON repository that contains one or more Eiffel libraries and their related files.}}
|
Since the IRON repository permits programmers to install software components in "units", and since sometimes those units can contain more than one library, as well as other types of files, a new term was required to convey this concept: package.
|
||||||
|
|
||||||
|
{{Definition|package|a downloadable unit of software from an IRON repository that contains one or more Eiffel libraries and their related files.}}
|
||||||
=Application to .ecf files=
|
|
||||||
: Empowering Teams of Developers
|
|
||||||
|
=Application to .ecf files=
|
||||||
To configure Eiffel projects, programmers uses "ECFs" (Eiffel Configuration Files -- Microsoft Visual Studio users can think of "solution files").
|
: Empowering Teams of Developers
|
||||||
|
|
||||||
One application of ECFs is to reference libraries installed in different locations. Without IRON, the usual solution is to use relative or absolute path, and generally using environment variables such as ISE_LIBRARY or EIFFEL_LIBRARY, and a few package specific variables such as GOBO, ...
|
To configure Eiffel projects, programmers uses "ECFs" (Eiffel Configuration Files -- Microsoft Visual Studio users can think of "solution files").
|
||||||
|
|
||||||
Typical library references without IRON in ECF:
|
One application of ECFs is to reference libraries installed in different locations. Without IRON, the usual solution is to use relative or absolute path, and generally using environment variables such as ISE_LIBRARY or EIFFEL_LIBRARY, and a few package specific variables such as GOBO, ...
|
||||||
<code>
|
|
||||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
Typical library references without IRON in ECF:
|
||||||
<library name="xml_parser" location="$EIFFEL_LIBRARY\library\text\parser\xml\parser\xml_parser.ecf"/>
|
<code>
|
||||||
<library name="dummy_foobar" location="$LIB_DUMMY\src\foo\bar.ecf"/>
|
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||||
</code>
|
<library name="xml_parser" location="$EIFFEL_LIBRARY\library\text\parser\xml\parser\xml_parser.ecf"/>
|
||||||
|
<library name="dummy_foobar" location="$LIB_DUMMY\src\foo\bar.ecf"/>
|
||||||
|
</code>
|
||||||
As projects grow and multiply, the number of these variables adds up quickly. A dozen or more such environment variables per system is (prior to IRON) not uncommon. Coordinating their use and evolution among a team of programmers can become a challenge.
|
|
||||||
|
|
||||||
IRON has made it possible to simplify this scenario dramatically. For any commonly used library, it suffices to:
|
As projects grow and multiply, the number of these variables adds up quickly. A dozen or more such environment variables per system is (prior to IRON) not uncommon. Coordinating their use and evolution among a team of programmers can become a challenge.
|
||||||
* Install the related package from an IRON repository.
|
|
||||||
* And for any project that uses the library, include an IRON uri in the related ECF.
|
IRON has made it possible to simplify this scenario dramatically. For any commonly used library, it suffices to:
|
||||||
** an IRON uri has the form: <code>iron:package-name:relative-path-to-file.ecf</code>
|
* Install the related package from an IRON repository.
|
||||||
** as you can see, no more environment variable, and only a relative path from the root of the package. This simplifies a lot the referencing, and package/library management. No need to know where are located the installed files on the local machine.
|
* And for any project that uses the library, include an IRON uri in the related ECF.
|
||||||
|
** an IRON uri has the form: <code>iron:package-name:relative-path-to-file.ecf</code>
|
||||||
That's all! In the above example, the location of the libraries, in the project, then become something like:
|
** as you can see, no more environment variable, and only a relative path from the root of the package. This simplifies a lot the referencing, and package/library management. No need to know where are located the installed files on the local machine.
|
||||||
<nowiki><library name="base" location="iron:base:base.ecf" /></nowiki>
|
|
||||||
|
That's all! In the above example, the location of the libraries, in the project, then become something like:
|
||||||
<nowiki><library name="xml_parser" location="iron:xml:parser/xml_parser.ecf" /></nowiki>
|
<nowiki><library name="base" location="iron:base:base.ecf" /></nowiki>
|
||||||
|
|
||||||
<nowiki><library name="foobar" location="iron:dummy:src/foo/bar.ecf" /></nowiki>
|
<nowiki><library name="xml_parser" location="iron:xml:parser/xml_parser.ecf" /></nowiki>
|
||||||
|
|
||||||
There is no more need for a set of environment variables.
|
<nowiki><library name="foobar" location="iron:dummy:src/foo/bar.ecf" /></nowiki>
|
||||||
|
|
||||||
IRON and EiffelStudio take care of the remaining details. And all developers on a project simply share the same ECF file with no further worry about where the libraries are.
|
There is no more need for a set of environment variables.
|
||||||
|
|
||||||
However, to get information about IRON location, use the command: <code> iron path ...</code>
|
IRON and EiffelStudio take care of the remaining details. And all developers on a project simply share the same ECF file with no further worry about where the libraries are.
|
||||||
:{| class="wikitable"
|
|
||||||
|-
|
However, to get information about IRON location, use the command: <code> iron path ...</code>
|
||||||
! Command
|
:{| class="wikitable"
|
||||||
! Result
|
|-
|
||||||
! Example
|
! Command
|
||||||
|-
|
! Result
|
||||||
| <code>iron path</code>
|
! Example
|
||||||
| Base directory of IRON (~ IRON_PATH variable)
|
|-
|
||||||
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron
|
| <code>iron path</code>
|
||||||
|-
|
| Base directory of IRON (~ IRON_PATH variable)
|
||||||
| <code>iron path base</code>
|
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron
|
||||||
| location of installed package <code>base</code>
|
|-
|
||||||
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\packages\base
|
| <code>iron path base</code>
|
||||||
|-
|
| location of installed package <code>base</code>
|
||||||
| <code>iron path xml</code>
|
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\packages\base
|
||||||
| location of installed package <code>xml</code>
|
|-
|
||||||
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\packages\xml
|
| <code>iron path xml</code>
|
||||||
|}
|
| location of installed package <code>xml</code>
|
||||||
|
| C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\packages\xml
|
||||||
Notes:
|
|}
|
||||||
* It is possible to override the default location of IRON installation directory, by setting the environment variable <code>IRON_PATH</code> or <code>ISE_IRON_PATH</code>.
|
|
||||||
* In the scope of the .ecf file, the IRON_PATH variable is always set: to default path or to the value of environment variable IRON_PATH.
|
Notes:
|
||||||
* In addition to the IRON way to reference library, it is also possible to use the absolute URL in the repository, see advanced usage for more details.
|
* It is possible to override the default location of IRON installation directory, by setting the environment variable <code>IRON_PATH</code> or <code>ISE_IRON_PATH</code>.
|
||||||
<code>
|
* In the scope of the .ecf file, the IRON_PATH variable is always set: to default path or to the value of environment variable IRON_PATH.
|
||||||
https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf
|
* In addition to the IRON way to reference library, it is also possible to use the absolute URL in the repository, see advanced usage for more details.
|
||||||
https://iron.eiffel.com/14.05/com.eiffel/library/text/parser/xml/parser/xml_parser.ecf
|
<code>
|
||||||
https://iron.eiffel.com/14.05/others/dummy/src/foo/bar.ecf
|
https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf
|
||||||
</code>
|
https://iron.eiffel.com/14.05/com.eiffel/library/text/parser/xml/parser/xml_parser.ecf
|
||||||
|
https://iron.eiffel.com/14.05/others/dummy/src/foo/bar.ecf
|
||||||
But this implies putting the version in the url (i.e 14.05), or you could set ISE_LIBRARY to <code>https://iron.eiffel.com/14.05/com.eiffel</code>
|
</code>
|
||||||
|
|
||||||
= IRON client tool =
|
But this implies putting the version in the url (i.e 14.05), or you could set ISE_LIBRARY to <code>https://iron.eiffel.com/14.05/com.eiffel</code>
|
||||||
The '''iron''' client executable is a facility that permits Eiffel programmers to easily install, remove, update, list, examine, search and share Eiffel packages.
|
|
||||||
Additionally, it permits easy maintenance of a local list of IRON repositories.
|
= IRON client tool =
|
||||||
|
The '''iron''' client executable is a facility that permits Eiffel programmers to easily install, remove, update, list, examine, search and share Eiffel packages.
|
||||||
A default IRON server is provided and a default repository is added automatically by the iron executable, based on the version of EiffelStudio that installed the iron executable (<nowiki>example: https://iron.eiffel.com/14.05</nowiki> ).
|
Additionally, it permits easy maintenance of a local list of IRON repositories.
|
||||||
|
|
||||||
The IRON facility consists of three parts:
|
A default IRON server is provided and a default repository is added automatically by the iron executable, based on the version of EiffelStudio that installed the iron executable (<nowiki>example: https://iron.eiffel.com/14.05</nowiki> ).
|
||||||
|
|
||||||
* A default repository at <nowiki>https://iron.eiffel.com/14.05</nowiki> (provides the web API and web interface for the repositories that are stored there; you can add other IRON servers as they become available).
|
The IRON facility consists of three parts:
|
||||||
|
|
||||||
* The '''iron''' executable utility on the local machine (installed with EiffelStudio, the program that interacts with the repositories).
|
* A default repository at <nowiki>https://iron.eiffel.com/14.05</nowiki> (provides the web API and web interface for the repositories that are stored there; you can add other IRON servers as they become available).
|
||||||
|
|
||||||
* Within EiffelStudio and the Eiffel compiler, is the ability to read and use IRON references from the Eiffel Configuration File (.ecf). The '''Project settings''' tool, and '''Add Library' dialog also provides support for IRON packages.
|
* The '''iron''' executable utility on the local machine (installed with EiffelStudio, the program that interacts with the repositories).
|
||||||
|
|
||||||
=How to Use IRON=
|
* Within EiffelStudio and the Eiffel compiler, is the ability to read and use IRON references from the Eiffel Configuration File (.ecf). The '''Project settings''' tool, and '''Add Library' dialog also provides support for IRON packages.
|
||||||
== Install wanted Eiffel packages ==
|
|
||||||
Using the EiffelStudio command prompt (installed with EiffelStudio), execute the IRON command to install the packages you want to use:
|
=How to Use IRON=
|
||||||
|
== Install wanted Eiffel packages ==
|
||||||
iron install <package_name>
|
Using the EiffelStudio command prompt (installed with EiffelStudio), execute the IRON command to install the packages you want to use:
|
||||||
|
|
||||||
Note that the compilation of an Eiffel project that depends on uninstalled Eiffel package(s) will suggest and propose to the user to install the missing packages (this is currently supported with '''ec''' in command line mode, and graphical mode.
|
iron install <package_name>
|
||||||
|
|
||||||
== Add reference to install package libraries ==
|
Note that the compilation of an Eiffel project that depends on uninstalled Eiffel package(s) will suggest and propose to the user to install the missing packages (this is currently supported with '''ec''' in command line mode, and graphical mode.
|
||||||
Simply add the library with IRON uri <code>iron:package-name:relative-path-to-file.ecf</code>, as you would have previously for local libraries. This can be done directly by editing the .ecf file, or using the EiffelStudio '''Project Settings''' tool from Eiffel Studio:
|
|
||||||
|
== Add reference to install package libraries ==
|
||||||
Project Settings -> <target_name> -> Groups -> Libraries
|
Simply add the library with IRON uri <code>iron:package-name:relative-path-to-file.ecf</code>, as you would have previously for local libraries. This can be done directly by editing the .ecf file, or using the EiffelStudio '''Project Settings''' tool from Eiffel Studio:
|
||||||
|
|
||||||
right-click Libraries and add a library. This will popup the '''Add Library''' dialog, that expects a name and a location, simply select the available library from the grid.
|
Project Settings -> <target_name> -> Groups -> Libraries
|
||||||
Note that you have an easy way to install, remove IRON packages from the '''Iron''' tab of the "Add Library" dialog.
|
|
||||||
|
right-click Libraries and add a library. This will popup the '''Add Library''' dialog, that expects a name and a location, simply select the available library from the grid.
|
||||||
* The default and recommended location for a IRON package library is the IRON uri:
|
Note that you have an easy way to install, remove IRON packages from the '''Iron''' tab of the "Add Library" dialog.
|
||||||
iron:package-name:relative-path-to-file.ecf
|
|
||||||
|
* The default and recommended location for a IRON package library is the IRON uri:
|
||||||
* It is also possible to use the absolute URL in the IRON repository such as:
|
iron:package-name:relative-path-to-file.ecf
|
||||||
<nowiki>https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf</nowiki>
|
|
||||||
|
* It is also possible to use the absolute URL in the IRON repository such as:
|
||||||
* And an other solution, would be to use the <code>IRON_PATH</code> environment variable to locate the install libraries, such as:
|
<nowiki>https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf</nowiki>
|
||||||
$IRON_PATH\packages\base\base.ecf
|
|
||||||
|
* And an other solution, would be to use the <code>IRON_PATH</code> environment variable to locate the install libraries, such as:
|
||||||
This latter method, while it works, is not recommended simply because it defeats some of the advantages of using the IRON repository in the first place.
|
$IRON_PATH\packages\base\base.ecf
|
||||||
|
|
||||||
== External dependencies ==
|
This latter method, while it works, is not recommended simply because it defeats some of the advantages of using the IRON repository in the first place.
|
||||||
If the package has some other way of linking it with your Eiffel projects, e.g. to an external '''.dll''' or '''.so''' , then instructions for this should be provided within the package.
|
|
||||||
|
== External dependencies ==
|
||||||
== Optional ==
|
If the package has some other way of linking it with your Eiffel projects, e.g. to an external '''.dll''' or '''.so''' , then instructions for this should be provided within the package.
|
||||||
If you do not define one of these environment variables, the location used is:
|
|
||||||
By default the base directory for IRON is under <code><Eiffel User Files>/<EiffelStudio_Version>/iron</code> , but it is possible to overwrite this value by setting the environment variable <code>IRON_PATH</code> (or <code>ISE_IRON_PATH</code>). Note that if the physical location does not exists, the local '''iron''' executable will create it.
|
== Optional ==
|
||||||
|
If you do not define one of these environment variables, the location used is:
|
||||||
Setting IRON_PATH, can be a way to setup different development environments (with different registered repositories, ...)
|
By default the base directory for IRON is under <code><Eiffel User Files>/<EiffelStudio_Version>/iron</code> , but it is possible to overwrite this value by setting the environment variable <code>IRON_PATH</code> (or <code>ISE_IRON_PATH</code>). Note that if the physical location does not exists, the local '''iron''' executable will create it.
|
||||||
|
|
||||||
=How to Get Information About IRON Packages=
|
Setting IRON_PATH, can be a way to setup different development environments (with different registered repositories, ...)
|
||||||
At the website provided by a particular IRON server, you can get information about available packages in a number of ways. You can start by simply visiting the server's base address: https://iron.eiffel.com/ .
|
|
||||||
|
=How to Get Information About IRON Packages=
|
||||||
* This page lists the repository versions available.
|
At the website provided by a particular IRON server, you can get information about available packages in a number of ways. You can start by simply visiting the server's base address: https://iron.eiffel.com/ .
|
||||||
* Select the version that matches the version of EiffelStudio you have installed.
|
|
||||||
Example: clicking on version 14.05 takes you to https://iron.eiffel.com/repository/14.05/ where you can list existing packages, or add a new package if you have an account on the server.
|
* This page lists the repository versions available.
|
||||||
|
* Select the version that matches the version of EiffelStudio you have installed.
|
||||||
If you click the "Package list" or "All packages" link, it takes you to a list of packages available under that version.
|
Example: clicking on version 14.05 takes you to https://iron.eiffel.com/repository/14.05/ where you can list existing packages, or add a new package if you have an account on the server.
|
||||||
|
|
||||||
== Search/filter==
|
If you click the "Package list" or "All packages" link, it takes you to a list of packages available under that version.
|
||||||
To filter this list, you can use the search window. You can specify search criteria in this format <code>:criterion:search_string</code>
|
|
||||||
|
== Search/filter==
|
||||||
Criteria available:
|
To filter this list, you can use the search window. You can specify search criteria in this format <code>:criterion:search_string</code>
|
||||||
|
|
||||||
:{| class="wikitable"
|
Criteria available:
|
||||||
|-
|
|
||||||
! Criterion
|
:{| class="wikitable"
|
||||||
! Meaning
|
|-
|
||||||
|-
|
! Criterion
|
||||||
| name
|
! Meaning
|
||||||
| string is contained in package name (wildcards are supported)
|
|-
|
||||||
|-
|
| name
|
||||||
| title
|
| string is contained in package name (wildcards are supported)
|
||||||
| string is contained in title
|
|-
|
||||||
|-
|
| title
|
||||||
| tag
|
| string is contained in title
|
||||||
| package contains search_string in its tags (i.e. keywords)
|
|-
|
||||||
|-
|
| tag
|
||||||
| downloads
|
| package contains search_string in its tags (i.e. keywords)
|
||||||
| has at least N downloads, e.g. downloads:25
|
|-
|
||||||
|}
|
| downloads
|
||||||
If a criterion is omitted, '''name''' is used by default.
|
| has at least N downloads, e.g. downloads:25
|
||||||
'''Operators available''': or, and, not (example: name:er and not name:parser)
|
|}
|
||||||
|
If a criterion is omitted, '''name''' is used by default.
|
||||||
Finally, when you have found the package you want, click on its title, and the page displayed will contain detailed information about the package.
|
'''Operators available''': or, and, not (example: name:er and not name:parser)
|
||||||
|
|
||||||
== Associated paths ==
|
Finally, when you have found the package you want, click on its title, and the page displayed will contain detailed information about the package.
|
||||||
Part of the information is a portion of the URI which you can use to define the path to the package.
|
|
||||||
For the '''base''' library (title: EiffelBase), these URIs look like this:
|
== Associated paths ==
|
||||||
<code>
|
Part of the information is a portion of the URI which you can use to define the path to the package.
|
||||||
/14.05/com.eiffel/library/base
|
For the '''base''' library (title: EiffelBase), these URIs look like this:
|
||||||
/14.05/com.eiffel/library/data_structure/adt/base
|
<code>
|
||||||
</code>
|
/14.05/com.eiffel/library/base
|
||||||
|
/14.05/com.eiffel/library/data_structure/adt/base
|
||||||
Given that the server's HTTP address is (in this example) https://iron.eiffel.com/, you can compose full paths from this, and use them in your Eiffel project. In this case, you can include the EiffelBase library in your project by specifying either:
|
</code>
|
||||||
<code>
|
|
||||||
https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf
|
Given that the server's HTTP address is (in this example) https://iron.eiffel.com/, you can compose full paths from this, and use them in your Eiffel project. In this case, you can include the EiffelBase library in your project by specifying either:
|
||||||
or https://iron.eiffel.com/14.05/com.eiffel/library/data_structure/adt/base/base.ecf
|
<code>
|
||||||
</code>
|
https://iron.eiffel.com/14.05/com.eiffel/library/base/base.ecf
|
||||||
|
or https://iron.eiffel.com/14.05/com.eiffel/library/data_structure/adt/base/base.ecf
|
||||||
Both will cause your project to compile with the same EiffelBase library provided by this IRON repository, provided you previously issued the following command on your system:
|
</code>
|
||||||
<code>
|
|
||||||
> iron install base
|
Both will cause your project to compile with the same EiffelBase library provided by this IRON repository, provided you previously issued the following command on your system:
|
||||||
or
|
<code>
|
||||||
> iron install https://iron.eiffel.com/14.05/com.eiffel/library/base
|
> iron install base
|
||||||
</code>
|
or
|
||||||
|
> iron install https://iron.eiffel.com/14.05/com.eiffel/library/base
|
||||||
'''IMPORTANT''': those associated URIs may be deprecated soon with the use of IRON uri <code>iron:base:base.ecf</code>.
|
</code>
|
||||||
|
|
||||||
=Using IRON from the Command Line=
|
'''IMPORTANT''': those associated URIs may be deprecated soon with the use of IRON uri <code>iron:base:base.ecf</code>.
|
||||||
The "iron" executable is used to perform various operations such as search, install, remove, update and share. This executable is installed with EiffelStudio in $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin/.
|
|
||||||
|
=Using IRON from the Command Line=
|
||||||
==Quick Help from the Command Line==
|
The "iron" executable is used to perform various operations such as search, install, remove, update and share. This executable is installed with EiffelStudio in $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin/.
|
||||||
*<code>iron help</code>
|
|
||||||
:lists the actions that are available.
|
==Quick Help from the Command Line==
|
||||||
|
*<code>iron help</code>
|
||||||
*<code>iron <action> --help</code>
|
:lists the actions that are available.
|
||||||
:displays detailed usage syntax for the action specified. Note that most of the actions have a -v (verbose) option that will display additional helpful information about the action performed, including (when relevant) the local path to the package.
|
|
||||||
|
*<code>iron <action> --help</code>
|
||||||
==Action Summary==
|
:displays detailed usage syntax for the action specified. Note that most of the actions have a -v (verbose) option that will display additional helpful information about the action performed, including (when relevant) the local path to the package.
|
||||||
|
|
||||||
:{| class="wikitable"
|
==Action Summary==
|
||||||
|-
|
|
||||||
! Action
|
:{| class="wikitable"
|
||||||
! Meaning
|
|-
|
||||||
|-
|
! Action
|
||||||
| update
|
! Meaning
|
||||||
| updates cached package information
|
|-
|
||||||
|-
|
| update
|
||||||
| list
|
| updates cached package information
|
||||||
| displays a list of available packages, and whether they are installed
|
|-
|
||||||
|-
|
| list
|
||||||
| search
|
| displays a list of available packages, and whether they are installed
|
||||||
| searches for a specified packages
|
|-
|
||||||
|-
|
| search
|
||||||
| info
|
| searches for a specified packages
|
||||||
| displays information about a specified packages
|
|-
|
||||||
|-
|
| info
|
||||||
| install
|
| displays information about a specified packages
|
||||||
| installs specified packages
|
|-
|
||||||
|-
|
| install
|
||||||
| remove
|
| installs specified packages
|
||||||
| removes specified packages
|
|-
|
||||||
|-
|
| remove
|
||||||
| repository
|
| removes specified packages
|
||||||
| manages repository list
|
|-
|
||||||
|-
|
| repository
|
||||||
| share
|
| manages repository list
|
||||||
| share and manage your packages (an account on the IRON server is required)
|
|-
|
||||||
|}
|
| share
|
||||||
|
| share and manage your packages (an account on the IRON server is required)
|
||||||
|
|}
|
||||||
==Examples==
|
|
||||||
|
|
||||||
===Update cached iron repository information===
|
==Examples==
|
||||||
<code> iron update
|
|
||||||
</code>
|
===Update cached iron repository information===
|
||||||
|
<code> iron update
|
||||||
===Display information about package===
|
</code>
|
||||||
:For instance for the '''api_wrapper''' package:
|
|
||||||
<code> iron info api_wrapper
|
===Display information about package===
|
||||||
</code>
|
:For instance for the '''api_wrapper''' package:
|
||||||
:If the package is installed, the installation path will also be displayed.
|
<code> iron info api_wrapper
|
||||||
|
</code>
|
||||||
===Search for a package by name, ID or URI===
|
:If the package is installed, the installation path will also be displayed.
|
||||||
:(package IDs and URIs are displayed by the "info" action) (future releases will enable searching by other criteria as well, such as by tags [i.e. keywords]):
|
|
||||||
<code> iron search base
|
===Search for a package by name, ID or URI===
|
||||||
</code>
|
:(package IDs and URIs are displayed by the "info" action) (future releases will enable searching by other criteria as well, such as by tags [i.e. keywords]):
|
||||||
|
<code> iron search base
|
||||||
===List available packages===
|
</code>
|
||||||
<code> iron list
|
|
||||||
</code>
|
===List available packages===
|
||||||
|
<code> iron list
|
||||||
===List installed packages===
|
</code>
|
||||||
<code> iron list --installed
|
|
||||||
</code>
|
===List installed packages===
|
||||||
|
<code> iron list --installed
|
||||||
===Install a package===
|
</code>
|
||||||
<code> iron install base
|
|
||||||
</code>
|
===Install a package===
|
||||||
(or <nowiki>iron install https://iron.eiffel.com/14.05/com.eiffel/library/base</nowiki>)
|
<code> iron install base
|
||||||
|
</code>
|
||||||
:(This latter form is useful in resolving name conflicts when, for instance, you have multiple IRON repositories registered on your system, and two or more contain a packaged called "base".)
|
(or <nowiki>iron install https://iron.eiffel.com/14.05/com.eiffel/library/base</nowiki>)
|
||||||
|
|
||||||
===Uninstall a package===
|
:(This latter form is useful in resolving name conflicts when, for instance, you have multiple IRON repositories registered on your system, and two or more contain a packaged called "base".)
|
||||||
<code> iron remove base
|
|
||||||
</code>
|
===Uninstall a package===
|
||||||
|
<code> iron remove base
|
||||||
===Install all available packages===
|
</code>
|
||||||
<code> iron install --all
|
|
||||||
</code>
|
===Install all available packages===
|
||||||
|
<code> iron install --all
|
||||||
===Uninstall all installed packages===
|
</code>
|
||||||
<code> iron remove --all
|
|
||||||
</code>
|
===Uninstall all installed packages===
|
||||||
|
<code> iron remove --all
|
||||||
=Advanced Usage=
|
</code>
|
||||||
==Managing Multiple Repositories==
|
|
||||||
|
=Advanced Usage=
|
||||||
It is possible to have more than one IRON repository server registered.
|
==Managing Multiple Repositories==
|
||||||
Examples:
|
|
||||||
<code>
|
It is possible to have more than one IRON repository server registered.
|
||||||
iron repository --list
|
Examples:
|
||||||
iron repository --add https://iron.eiffel.com/14.05
|
<code>
|
||||||
iron repository --add https://custom.example.com/14.05
|
iron repository --list
|
||||||
iron repository --add C:\eiffel\my_repository
|
iron repository --add https://iron.eiffel.com/14.05
|
||||||
iron repository --remove https://custom.example.com/14.05
|
iron repository --add https://custom.example.com/14.05
|
||||||
</code>
|
iron repository --add C:\eiffel\my_repository
|
||||||
|
iron repository --remove https://custom.example.com/14.05
|
||||||
===Multiple-Repository Name Conflict Resolution===
|
</code>
|
||||||
|
|
||||||
If you have more than one IRON repository registered on your system, it is possible that the same package name may exist on more than one repository. If this is the case, and you attempt to perform operations using that name only, the repository that will be used will be the first repository in the list that contains a package with that name. If you need the package with that name from a different repository, then use the "id" "uri" form of the identifying the package you want.
|
===Multiple-Repository Name Conflict Resolution===
|
||||||
|
|
||||||
If the sequence of repositories is not to your liking, you can change it in three ways:
|
If you have more than one IRON repository registered on your system, it is possible that the same package name may exist on more than one repository. If this is the case, and you attempt to perform operations using that name only, the repository that will be used will be the first repository in the list that contains a package with that name. If you need the package with that name from a different repository, then use the "id" "uri" form of the identifying the package you want.
|
||||||
|
|
||||||
:* use the iron executable to remove and add repositories to re-sequence them, or
|
If the sequence of repositories is not to your liking, you can change it in three ways:
|
||||||
:* delete the repositories.conf file and use the iron executable to add them again in the sequence you want them.
|
|
||||||
:* edit the file repositories.conf with a plain text editor in the directory indicated by your IRON_PATH (or ISE_IRON_PATH) environment variable (or <code><Eiffel User Files>/<EiffelStudio_Version>/iron/</code> if one of these environment variables are not defined on your system). (Note that this latter method, while possible, is not recommended, since the syntax of that file can change with new releases.)
|
:* use the iron executable to remove and add repositories to re-sequence them, or
|
||||||
|
:* delete the repositories.conf file and use the iron executable to add them again in the sequence you want them.
|
||||||
==Building a package==
|
:* edit the file repositories.conf with a plain text editor in the directory indicated by your IRON_PATH (or ISE_IRON_PATH) environment variable (or <code><Eiffel User Files>/<EiffelStudio_Version>/iron/</code> if one of these environment variables are not defined on your system). (Note that this latter method, while possible, is not recommended, since the syntax of that file can change with new releases.)
|
||||||
An IRON package has to provide, at its root, a file <code>package.iron</code>. This file describes the package with name, description, and various other information.
|
|
||||||
See for instance, the package.iron for Eiffel Base package:
|
==Building a package==
|
||||||
<code>
|
An IRON package has to provide, at its root, a file <code>package.iron</code>. This file describes the package with name, description, and various other information.
|
||||||
package base
|
See for instance, the package.iron for Eiffel Base package:
|
||||||
|
<code>
|
||||||
project
|
package base
|
||||||
base_safe = "base-safe.ecf"
|
|
||||||
base = "base.ecf"
|
project
|
||||||
base_testing = "testing/testing-safe.ecf"
|
base_safe = "base-safe.ecf"
|
||||||
base_testing = "testing/testing.ecf"
|
base = "base.ecf"
|
||||||
|
base_testing = "testing/testing-safe.ecf"
|
||||||
note
|
base_testing = "testing/testing.ecf"
|
||||||
title: Eiffel Base
|
|
||||||
description: "Eiffel Base: kernel library classes, data structure, Input and Output"
|
note
|
||||||
|
title: Eiffel Base
|
||||||
tags: base,kernel,structure,io
|
description: "Eiffel Base: kernel library classes, data structure, Input and Output"
|
||||||
license: Eiffel Forum License v2
|
|
||||||
copyright: 1984-2013 Eiffel Software and others
|
tags: base,kernel,structure,io
|
||||||
link[doc]: "Documentation" http://eiffelroom.com/
|
license: Eiffel Forum License v2
|
||||||
link[source]: "Subversion" https://svn.eiffel.com/eiffelstudio/trunk/Src/library/base
|
copyright: 1984-2013 Eiffel Software and others
|
||||||
link[license]: http://www.eiffel.com/licensing/forum.txt
|
link[doc]: "Documentation" http://eiffelroom.com/
|
||||||
maps: /com.eiffel/library/data_structure/adt/base
|
link[source]: "Subversion" https://svn.eiffel.com/eiffelstudio/trunk/Src/library/base
|
||||||
|
link[license]: http://www.eiffel.com/licensing/forum.txt
|
||||||
end
|
maps: /com.eiffel/library/data_structure/adt/base
|
||||||
</code>
|
|
||||||
|
end
|
||||||
Note: The package iron file for the Eiffel Base package is available online at <code>https://svn.eiffel.com/eiffelstudio/trunk/Src/library/base/package.iron</code> .
|
</code>
|
||||||
|
|
||||||
Current status:
|
Note: The package iron file for the Eiffel Base package is available online at <code>https://svn.eiffel.com/eiffelstudio/trunk/Src/library/base/package.iron</code> .
|
||||||
* only the '''name of the package is required'''
|
|
||||||
* the section "project" list the various available .ecf projects
|
Current status:
|
||||||
* the section "note" contains title, description, tags, ... informations. The formation is similar to Eiffel indexing note, and in addition it supports bracket in the name of note, such as in ''<nowiki>link[doc]</nowiki>''.
|
* only the '''name of the package is required'''
|
||||||
** The "link" declaration: <code>link[category]: "Optional Title" associated-url</code>
|
* the section "project" list the various available .ecf projects
|
||||||
* The following notes have semantic that are processed by Iron: '''title, description, tags, link<nowiki>[..]</nowiki>, and maps''', for now mostly on the Iron server.
|
* the section "note" contains title, description, tags, ... informations. The formation is similar to Eiffel indexing note, and in addition it supports bracket in the name of note, such as in ''<nowiki>link[doc]</nowiki>''.
|
||||||
* It is possible to use any note name. Currently they are simply stored and never displayed. In the future, Iron may support additional semantic for those notes.
|
** The "link" declaration: <code>link[category]: "Optional Title" associated-url</code>
|
||||||
|
* The following notes have semantic that are processed by Iron: '''title, description, tags, link<nowiki>[..]</nowiki>, and maps''', for now mostly on the Iron server.
|
||||||
A few packages may require '''post installation operations''', such as compiling C code, or others.
|
* It is possible to use any note name. Currently they are simply stored and never displayed. In the future, Iron may support additional semantic for those notes.
|
||||||
For that, use the section '''setup''', and in particular the '''compile_library''' information.
|
|
||||||
During installation, '''iron''' will launch the <code>compile_library</code> tool delivered with EiffelStudio on the provided directory.
|
A few packages may require '''post installation operations''', such as compiling C code, or others.
|
||||||
|
For that, use the section '''setup''', and in particular the '''compile_library''' information.
|
||||||
Example at https://svn.eiffel.com/eiffelstudio/trunk/Src/library/cURL/package.iron :
|
During installation, '''iron''' will launch the <code>compile_library</code> tool delivered with EiffelStudio on the provided directory.
|
||||||
<code>
|
|
||||||
package cURL
|
Example at https://svn.eiffel.com/eiffelstudio/trunk/Src/library/cURL/package.iron :
|
||||||
|
<code>
|
||||||
setup
|
package cURL
|
||||||
compile_library = Clib
|
|
||||||
...
|
setup
|
||||||
</code>
|
compile_library = Clib
|
||||||
|
...
|
||||||
This <code>compile_library</code> tool relies on <code>finish_freezing -library</code> and thus process the <code>Makefile-win.SH or Makefile.SH</code>.
|
</code>
|
||||||
|
|
||||||
==Using your own IRON packages locally==
|
This <code>compile_library</code> tool relies on <code>finish_freezing -library</code> and thus process the <code>Makefile-win.SH or Makefile.SH</code>.
|
||||||
There are various ways to use your own Eiffel package libraries:
|
|
||||||
* Using local location as it was currently done before 14.05 (i.e relative or absolute path, and eventually using an environment variable...).
|
==Using your own IRON packages locally==
|
||||||
* Sharing the package on an IRON server, and then install it from that server:
|
There are various ways to use your own Eiffel package libraries:
|
||||||
** The default https://iron.eiffel.com/ is the recommended server
|
* Using local location as it was currently done before 14.05 (i.e relative or absolute path, and eventually using an environment variable...).
|
||||||
** But it is possible to host your own server easily. (server how-to documentation will be provided soon).
|
* Sharing the package on an IRON server, and then install it from that server:
|
||||||
* And there is another solution: local repository.
|
** The default https://iron.eiffel.com/ is the recommended server
|
||||||
|
** But it is possible to host your own server easily. (server how-to documentation will be provided soon).
|
||||||
Local repositories rely heavily on the <code>package.iron</code> files. So if a folder is registered as iron repository, internally iron will search this folder recursively for package.iron files.
|
* And there is another solution: local repository.
|
||||||
|
|
||||||
Example on Windows:
|
Local repositories rely heavily on the <code>package.iron</code> files. So if a folder is registered as iron repository, internally iron will search this folder recursively for package.iron files.
|
||||||
<code>iron repository --add %ISE_LIBRARY%\library</code>
|
|
||||||
|
Example on Windows:
|
||||||
It should find and list all the official ISE IRON packages.
|
<code>iron repository --add %ISE_LIBRARY%\library</code>
|
||||||
Now if you want to install the '''time''' package from it, just do
|
|
||||||
<code lang="text">
|
It should find and list all the official ISE IRON packages.
|
||||||
> iron install time
|
Now if you want to install the '''time''' package from it, just do
|
||||||
Searching [time]
|
<code lang="text">
|
||||||
-> several packages for name [time]!
|
> iron install time
|
||||||
1) time (https://iron.eiffel.com/14.05) "EiffelTime"
|
Searching [time]
|
||||||
2) time (file:///C:/EiffelDev/Src/library)
|
-> several packages for name [time]!
|
||||||
> Select a package [1] (q=cancel): 2
|
1) time (https://iron.eiffel.com/14.05) "EiffelTime"
|
||||||
-> Install time (file:///C:/EiffelDev/Src/library)
|
2) time (file:///C:/EiffelDev/Src/library)
|
||||||
Installing [time (file:///C:/EiffelDev/Src/library)] -> successfully installed.
|
> Select a package [1] (q=cancel): 2
|
||||||
</code>
|
-> Install time (file:///C:/EiffelDev/Src/library)
|
||||||
|
Installing [time (file:///C:/EiffelDev/Src/library)] -> successfully installed.
|
||||||
To make development easier, you may want to edit/update the repositories.conf file, in order to put that file://... local repository on the top.
|
</code>
|
||||||
<code>
|
|
||||||
> iron path
|
To make development easier, you may want to edit/update the repositories.conf file, in order to put that file://... local repository on the top.
|
||||||
C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron
|
<code>
|
||||||
and then edit "C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\repositories.conf"
|
> iron path
|
||||||
</code>
|
C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron
|
||||||
|
and then edit "C:\Users\jfiat\Documents\Eiffel User Files\14.05\iron\repositories.conf"
|
||||||
*However, unless you are using the iron tool in batch mode ( <code>--batch</code> flag ), you will be asked to choose which package you want to install.
|
</code>
|
||||||
*You can also use the EiffelStudio "Add Library" dialog via the "Iron" tab, to install, uninstall the various packages.
|
|
||||||
*And last solution, you can use the full url as:
|
*However, unless you are using the iron tool in batch mode ( <code>--batch</code> flag ), you will be asked to choose which package you want to install.
|
||||||
> iron install file:///C:/EiffelDev/Src/library/time
|
*You can also use the EiffelStudio "Add Library" dialog via the "Iron" tab, to install, uninstall the various packages.
|
||||||
|
*And last solution, you can use the full url as:
|
||||||
Of course, do not forget that local repository should be used only for code in progress, otherwise you should share that library and use it as a simple user. One of the goal of IRON is to encourage people sharing their libraries with other Eiffel users.
|
> iron install file:///C:/EiffelDev/Src/library/time
|
||||||
|
|
||||||
==Sharing Your Packages==
|
Of course, do not forget that local repository should be used only for code in progress, otherwise you should share that library and use it as a simple user. One of the goal of IRON is to encourage people sharing their libraries with other Eiffel users.
|
||||||
To build and share your own packages on an IRON server, you will need a user account on that IRON server which will host your packages.
|
|
||||||
Please visit https://iron.eiffel.com/repository/account/?register to create a new account.
|
==Sharing Your Packages==
|
||||||
|
To build and share your own packages on an IRON server, you will need a user account on that IRON server which will host your packages.
|
||||||
As usual, to see the available options, use:
|
Please visit https://iron.eiffel.com/repository/account/?register to create a new account.
|
||||||
<code> iron share --help</code>
|
|
||||||
|
As usual, to see the available options, use:
|
||||||
Example:
|
<code> iron share --help</code>
|
||||||
|
|
||||||
To build the '''gps_nmea''' package from your library <code>c:\eiffel\library\gps_nmea\</code> :
|
Example:
|
||||||
|
|
||||||
<code>
|
To build the '''gps_nmea''' package from your library <code>c:\eiffel\library\gps_nmea\</code> :
|
||||||
iron share create --username <your_id> --password <your_password>
|
|
||||||
--repository https://iron.eiffel.com/14.05
|
<code>
|
||||||
--package "c:\eiffel\library\gps_nmea\package.iron" --package-name "gps_nmea"
|
iron share create --username <your_id> --password <your_password>
|
||||||
</code>
|
--repository https://iron.eiffel.com/14.05
|
||||||
|
--package "c:\eiffel\library\gps_nmea\package.iron" --package-name "gps_nmea"
|
||||||
This command will:
|
</code>
|
||||||
* create a new package named '''gps_nmea''' on iron repository '''https://iron.eiffel.com/14.05''',
|
|
||||||
* using the local package '''c:\eiffel\library\gps_nmea''' (i.e: you need to provide the package.iron file)
|
This command will:
|
||||||
|
* create a new package named '''gps_nmea''' on iron repository '''https://iron.eiffel.com/14.05''',
|
||||||
Note:
|
* using the local package '''c:\eiffel\library\gps_nmea''' (i.e: you need to provide the package.iron file)
|
||||||
* the --package-name is for now required, even if the package.iron already provides such information.
|
|
||||||
* see the <code>iron share --help</code> for advanced usage (such as --index, --package-archive-source, ...).
|
Note:
|
||||||
|
* the --package-name is for now required, even if the package.iron already provides such information.
|
||||||
After adding such a package to the library, it is recommended that you go to the website, double check that the package was created they way you wanted it to be, and you can edit its information.
|
* see the <code>iron share --help</code> for advanced usage (such as --index, --package-archive-source, ...).
|
||||||
Then, using the iron executable, install the package on your system, and go through the steps of using it in an Eiffel project, and correct any problems discovered, to verify that end users will be able to productively use your package.
|
|
||||||
|
After adding such a package to the library, it is recommended that you go to the website, double check that the package was created they way you wanted it to be, and you can edit its information.
|
||||||
It is also '''''strongly''''' encouraged to include (or provide a link to) documentation that orients the user to its use, and answers basic questions such as: What is the package? What motivated you to create it? What problem(s) does it address? Under what circumstances can the package be productively used? Under what circumstances should it ''not'' be used (if applicable)? And some basic examples of its use. If the package is complex, it can be very helpful to include a well-commented application that demonstrates intended reuse of the package in software.
|
Then, using the iron executable, install the package on your system, and go through the steps of using it in an Eiffel project, and correct any problems discovered, to verify that end users will be able to productively use your package.
|
||||||
|
|
||||||
Important note: having clear documentation that enables end users to easily learn how to use your package is a VITAL link in the ability to reuse software components as is so aptly described in ''[[uuid:496983ef-b86e-772e-16b9-39b37ef80e37|Object‑Oriented Software Construction, 2nd Edition]]'', in the Modular Understand-ability criterion:
|
It is also '''''strongly''''' encouraged to include (or provide a link to) documentation that orients the user to its use, and answers basic questions such as: What is the package? What motivated you to create it? What problem(s) does it address? Under what circumstances can the package be productively used? Under what circumstances should it ''not'' be used (if applicable)? And some basic examples of its use. If the package is complex, it can be very helpful to include a well-commented application that demonstrates intended reuse of the package in software.
|
||||||
|
|
||||||
:''''' "A method favors Modular Understand-ability if it helps produce software in which a human reader can understand each module without having to know the others, or, at worst, by having to examine only a few of the others." '''''
|
Important note: having clear documentation that enables end users to easily learn how to use your package is a VITAL link in the ability to reuse software components as is so aptly described in ''[[uuid:496983ef-b86e-772e-16b9-39b37ef80e37|Object‑Oriented Software Construction, 2nd Edition]]'', in the Modular Understand-ability criterion:
|
||||||
|
|
||||||
and the Self-Documentation Principle:
|
:''''' "A method favors Modular Understand-ability if it helps produce software in which a human reader can understand each module without having to know the others, or, at worst, by having to examine only a few of the others." '''''
|
||||||
|
|
||||||
:''''' "The designer of a module should strive to make all information about the module part of the module itself." '''''
|
and the Self-Documentation Principle:
|
||||||
|
|
||||||
The point: reuse is only possible when end users can easily and quickly learn how to reuse software components available to them.
|
:''''' "The designer of a module should strive to make all information about the module part of the module itself." '''''
|
||||||
|
|
||||||
=Origin of the Name IRON=
|
The point: reuse is only possible when end users can easily and quickly learn how to reuse software components available to them.
|
||||||
|
|
||||||
As many readers will know, the name "Eiffel" was chosen to reflect the elegance and soundness of constructing large, complex software systems, with '''simple, individual components, each of which is a unit by itself and has its own existence, and can be tested for integrity as a separate unit, but its role in the larger scheme of things is to be used as a "building block"''' for constructing high-integrity software systems. The picture on the front of the book ''[[uuid:496983ef-b86e-772e-16b9-39b37ef80e37|Object‑Oriented Software Construction, 2nd Edition]]'' illustrates this.
|
=Origin of the Name IRON=
|
||||||
|
|
||||||
This of course is intentionally meant as a direct parallel to the famous structure built by the architect and civil engineer Alexandre Gustave Eiffel. This structure was constructed with '''simple, individual components, each of which is a unit by itself and has its own existence, and can be tested for integrity as a separate unit, but its role in the larger scheme of things is to be used as a "building block"''' for constructing a high-integrity structure: the Eiffel Tower.
|
As many readers will know, the name "Eiffel" was chosen to reflect the elegance and soundness of constructing large, complex software systems, with '''simple, individual components, each of which is a unit by itself and has its own existence, and can be tested for integrity as a separate unit, but its role in the larger scheme of things is to be used as a "building block"''' for constructing high-integrity software systems. The picture on the front of the book ''[[uuid:496983ef-b86e-772e-16b9-39b37ef80e37|Object‑Oriented Software Construction, 2nd Edition]]'' illustrates this.
|
||||||
|
|
||||||
As a parallel to this, "IRON", as a name, was chosen to reflect the fact that the individual building blocks were themselves made from iron. In the Eiffel world, constructing a large complex software system is done with libraries of high-quality reusable components. Thus, the "building blocks" are made from iron, and software systems are made from those building blocks. Hence, IRON provides the "raw material" from which complex Eiffel systems are developed.
|
This of course is intentionally meant as a direct parallel to the famous structure built by the architect and civil engineer Alexandre Gustave Eiffel. This structure was constructed with '''simple, individual components, each of which is a unit by itself and has its own existence, and can be tested for integrity as a separate unit, but its role in the larger scheme of things is to be used as a "building block"''' for constructing a high-integrity structure: the Eiffel Tower.
|
||||||
|
|
||||||
=Planned Enhancements=
|
As a parallel to this, "IRON", as a name, was chosen to reflect the fact that the individual building blocks were themselves made from iron. In the Eiffel world, constructing a large complex software system is done with libraries of high-quality reusable components. Thus, the "building blocks" are made from iron, and software systems are made from those building blocks. Hence, IRON provides the "raw material" from which complex Eiffel systems are developed.
|
||||||
This documentation describes the version of iron released with EiffelStudio 14.05.
|
|
||||||
More features are planned or are already under development:
|
=Planned Enhancements=
|
||||||
:* the ability to analyze the contents of the package, to extract information related to its .ECF file(s)
|
This documentation describes the version of iron released with EiffelStudio 14.05.
|
||||||
:* a way of ensuring that the package compiles under the specified version of EiffelStudio
|
More features are planned or are already under development:
|
||||||
:* support for test suite
|
:* the ability to analyze the contents of the package, to extract information related to its .ECF file(s)
|
||||||
:* detection and actions related to package dependencies
|
:* a way of ensuring that the package compiles under the specified version of EiffelStudio
|
||||||
:* package version
|
:* support for test suite
|
||||||
:* ability to upgrade of packages already installed
|
:* detection and actions related to package dependencies
|
||||||
:* extended post-installation operations
|
:* package version
|
||||||
:* more features that users may request or suggest.
|
:* ability to upgrade of packages already installed
|
||||||
|
:* extended post-installation operations
|
||||||
|
:* more features that users may request or suggest.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user