https://github.com/yoavnir/specs2016
New version of the specs pipeline stage based on what's in current CMS pipelines
https://github.com/yoavnir/specs2016
cms-pipelines non-interactive specs-pipeline-stage text text-processing
Last synced: 23 days ago
JSON representation
New version of the specs pipeline stage based on what's in current CMS pipelines
- Host: GitHub
- URL: https://github.com/yoavnir/specs2016
- Owner: yoavnir
- License: mit
- Created: 2018-12-14T20:59:59.000Z (over 7 years ago)
- Default Branch: dev
- Last Pushed: 2026-03-25T15:23:24.000Z (2 months ago)
- Last Synced: 2026-03-25T15:58:10.968Z (2 months ago)
- Topics: cms-pipelines, non-interactive, specs-pipeline-stage, text, text-processing
- Language: C++
- Size: 1.09 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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**](https://publib.boulder.ibm.com/epubs/pdf/hcsj0c30.pdf), 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](https://github.com/yoavnir/specs2016) 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**](https://github.com/yoavnir/specs2016/releases/tag/v0.9.9)
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](https://github.com/yoavnir/specs2016/issues).
* 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
============
* Yoav Nir ([yoavnir](https://github.com/yoavnir))
* Jean-Baptiste Jouband ([Gawesomer](https://github.com/Gawesomer))
Documentation
=============
The documentation for *specs2016* exists in two places:
* In the *manpage* installed with the utility on Linux and Mac OS.
* In the [docs](specs/docs/TOC.md) directory.
License
=======
*specs2016* is licensed under the [MIT License](https://github.com/yoavnir/specs2016/blob/dev/LICENSE).