Skip to content

Latest commit

 

History

History
110 lines (89 loc) · 4.42 KB

File metadata and controls

110 lines (89 loc) · 4.42 KB

specs2016

A re-writing of the specs pipeline stage from CMS, only changed quite a bit

"specs" is a command line utility for parsing and re-arranging text input. It allows re-alignment of fields, some format conversion, and re-formatting multiple lines into single lines or vice versa. Input comes from standard input, and output flows to standard output.

This version is liberally based on the CMS Pipelines User's Guide and Reference, especially chapters 16, 24, and 20.

News

1-May-2026: Version 0.9.9 is here

What's new:

  • MSI package & standalone executable for Windows
  • .pkg package for Mac OS
  • RPM for Linux
  • .deb package for Ubuntu/Debian
  • Visual Studio infra for building for Windows
  • Improved guessing of Python version
  • New spec units: SPLITW and SPLITF for splitting input records by words or fields into multiple output records. These new spec units support optional custom separators, OF clauses (with the same semantics as SUBSTRING), and range output placement (e.g. splitw 1-10).
  • A more exact exact() function

Note: Installing from package does not include Python support on Windows.

Note: On Linux, the specs binary is bigger when installed from package, as it is statically linked with libstdc++.


28-Feb-2026: Version 0.9.6 is here

What's new:

  • Support for newer Linux distros (newer gcc)
  • Support for Visual Studio and latest Windows versions
  • Alignment with C++ coding standards

Sources

To download your copy of specs, you can get it from github in either of two ways:

  1. Using git: git clone https://github.com/yoavnir/specs2016.git
  2. Using http: wget https://github.com/yoavnir/specs2016/archive/dev.zip

Installation from binaries

The binaries for the latest release can be downloaded from the release page

Limitations:

  • You will not get any Python support for Python integration on Windows
  • You may get an older version of Python for Python integration on other platforms
  • No support for exotic OS-es like Windows on ARM.

Building

If you have downloaded a git repository, first make sure to check out a stable tag such as v0.9.9:

git checkout v0.9.9

A good way to get the latest stable release is to check out the stable branch and rebase to its tip:

git checkout stable
git rebase

After that, cd to the specs/src directory, and run the following three commands:

  • python setup.py - use python3 or python3.x if your default Python version is 2.7
  • make some
  • sudo make install

Note: For Microsoft Windows, you can use MSBuild as follows:

  • Start from the repository directory (do not cd to specs/src)
  • msbuild specs/specs.sln /p:Configuration=Release /p:Platform=x64
  • Now copy the resulting specs.exe to a target directory in the path.

Note: Only Python 3 is supported at this point. To enable Python support, you need to have the python3-devel package that matches your python version installed.

Note: On some Mac machines, sudo make install will cause a warning about being the wrong user.

Known Issues

  • Regular expression grammars other than the default ECMAScript don't work except on Mac OS.
  • On Windows with Python support the appropriate dll (like python38.dll) must be in the path.

Contributing

Anyone can contribute. So far, I have written most of the code, but if you want to help, I'll be very happy. Feel free to:

  • Submit bug reports or feature requests at the Issue Tracker.
  • Help solve some existing issue.
  • Submit pull requests
  • Even if you use only Windows or only Linux, make sure to update both the setup.py file and the relevant vcxproj file or files.

New Versions

When starting a new version:

  • Update the README file
  • Update the manpage
  • Update specs/Directory.Build.props

Contributors

Documentation

The documentation for specs2016 exists in two places:

  • In the manpage installed with the utility on Linux and Mac OS.
  • In the docs directory.

License

specs2016 is licensed under the MIT License.