stcarrez / ada-util

Ada Utility Library - Composing streams, processes, logs, serialization, encoders and more
Apache License 2.0
69 stars 14 forks source link
ada beans json logging process serializer streams

Ada Utility Library

Alire Alire Alire Alire Alire Alire Build Status Test Status Coverage Documentation Status Download License GitLab Commits

This Ada library contains various utility packages for building Ada applications. This includes:

Ada Util also provides a small test utility library on top of Ahven or AUnit to help in writing unit tests. Ahven is the default testing framework as it provides better reports.

Version 2.8.0 - Under development

Version 2.7.0 - Jun 2024

List all versions

Using with Alire

If you are using Alire in your project, run the following command within your Alire project to use the library:

alr with utilada

Depending on your project, you may need one or some of the following other components:

alr with utilada_aws
alr with utilada_curl
alr with utilada_lzma
alr with utilada_unit
alr with utilada_xml

Using without Alire

If you don't have Alire or want to build and install the library on a specific place, run a setup command to configure the build as well as installation directory. For a detailed description on how you can configure, build and install the library refer to the Installation guide. Otherwise, you can easily configure and build the library with the steps described below.

The support for AWS, Curl, LZMA and XML/Ada are enabled only when a HAVE_XXX=yes configuration variable has defined. Run the setup command that records in the Makefile.conf the configuration you want to build.

The HAVE_ALIRE configuration allows you to build with Alire or not.

The UTIL_OS configuration is mandatory for the setup to indicate the build host configuration. It must one of the allowed values defined in utilada_conf.gpr GNAT project in the Os_Version_Type declaration:

   type Os_Version_Type is ("none", "unix", "windows",
                            "linux32", "linux64", "win32", "win64", "macos64",
                            "netbsd32", "netbsd64", "freebsd32", "freebsd64");

The example below enables the XML/Ada and AWS components but disables the Curl and LZMA support and disables the use of Alire to build the library.

make setup BUILD=debug PREFIX=/build/install \
  UTIL_OS=linux64 \
  HAVE_XML_ADA=yes HAVE_AWS=yes \
  HAVE_CURL=no HAVE_LZMA=no HAVE_ALIRE=no

Then build, run the unit tests and install by using:

make
make test
make install

To use the installed libraries, make sure your ADA_PROJECT_PATH contains the directory where you installed the libraries (configured by the PREFIX=<path> option in the setup phase). The installed GNAT projects are the same as those used when using Alire.

Samples

The samples are built by using:

cd samples
alr build

or by running:

make samples
Package Example
Util.Dates.Formats date.adb
Util.Beans.Objects objcalc.adb, jsonobj.adb, jsonread.adb
Util.Beans.Objects.Maps jsonobj.adb, genentities.adb
Util.Beans.Objects.Vectors datasets.adb, jsonobj.adb
Util.Beans.Objects.Datasets datasets.adb
Util.Beans.Objects.Iterators jsonread.adb
Util.Encoders encodes.adb
Util.Encoders.AES decrypt.adb, encrypt.adb
Util.Encoders.SHA256 sha256.adb
Util.Files realpath.adb, gperfhash.adb
Util.Files.Rolling rolling_file.adb
Util.Files.Walk tree.adb
Util.Http.Clients wget.adb
Util.Log.Loggers log.adb, syslog_appenders.adb, multipro_refs.adb, date.adb, xmlrd.adb, gperfhash.adb, multipro.adb, mapping.adb, csv_city.adb, bundles.adb
Util.Measures measures.adb
Util.Processes launch.adb, env.adb, popen.adb
Util.Properties properties.adb, proplist.adb, bundles.adb
Util.Refs multipro_refs.adb
Util.Streams.AES decrypt.adb, encrypt.adb
Util.Streams.Base64 lzma_encrypt_b64.adb, lzma_decrypt_b64.adb, dumpcert.adb
Util.Streams.Buffered.Parts multipart.adb, dumpcert.adb
Util.Streams.Files copy.adb, sha256.adb, compress.adb, decompress.adb, decrypt.adb, encrypt.adb, lzma_encrypt.adb, lzma_decrypt.adb
Util.Streams.Pipes launch.adb, popen.adb
Util.Serialize.IO.CSV csv_city.adb
Util.Serialize.IO.JSON serialize.adb, json.adb, jsonobj.adb, jsonread.adb, genentities.adb
Util.Serialize.IO.XML serialize_xml.adb, xmi.adb, xmlrd.adb
Util.Serialize.Mappers csv_reader.adb, csv_city.adb, xmi.adb, xmlrd.adb
Util.Serialize.Mappers.Record_Mapper xmi.adb, xmlrd.adb
Util.Serialize.Mappers.Vector_Mapper json.adb, xmlrd.adb
Util.Strings cut.adb, escape.adb
Util.Strings.Tokenizers cut.adb, escape.adb
Util.Strings.Transforms escape.adb, gperfhash.adb
Util.Strings.Vectors gperfhash.adb

Documentation

Articles