From 91d5a3d0396e9829f7e89c0272c65e1b19eb8c6a Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 01/35] .gitattributes --- .gitattributes | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8322ec2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ + +*.rb linguist-language=Ruby + +*.html linguist-detectable=false +*.sh linguist-detectable=false +*.vimrc linguist-detectable=false From 5faf5166863b406502627483c8ad1c2b1773b65d Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 02/35] .gitignore --- .gitignore | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad84696 --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ + +# directories (by name) + +/.bzr/ +/.bundle/ +/.config/ +/.git/ +/.svn/ + +/InstalledFiles/ +/build/ +/coverage/ +/doc/ +/lib/bundler/man/ +/pkg/ +/rdoc/ +/spec/reports/ +/test/tmp/ +/test/version_tmp/ +/tmp/ +/vendor/bundle/ + +# directories (by pattern) + +# files (by name) + +.DS_Store +.bundle +.config +.repl_history +.ruby-version +.rvmrc +.yardoc +_yardoc + +InstalledFiles +coverage +pkg +rdoc + +# files (by pattern) + +*~ +*.*~ +.dat* +*.gem +*.rbc +*.scc +*.suo +*.swp +*.zip From 59048609f6b71aae7b49b8733fff09bf1b684e96 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 03/35] .ruby-version-exclusions --- .ruby-version-exclusions | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .ruby-version-exclusions diff --git a/.ruby-version-exclusions b/.ruby-version-exclusions new file mode 100644 index 0000000..a8df221 --- /dev/null +++ b/.ruby-version-exclusions @@ -0,0 +1,2 @@ +1.8.7-p375 +1.9.3-p551 From 63f3e51099ac8c4c10f55e2391fa57bdc010fdce Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 04/35] .vimrc --- .vimrc | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .vimrc diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..475d0e2 --- /dev/null +++ b/.vimrc @@ -0,0 +1,41 @@ +" Synesis Ruby project .vimrc — aligned with .vscode/settings.json (2-space Ruby) + +set nocompatible +filetype indent plugin on +syntax enable +set autoindent +set backspace=indent,eol,start +set hlsearch +set incsearch +set number + +" files.insertFinalNewline +set eol +set fixeol + +" editor.renderWhitespace: all +set list +set listchars=tab:->,trail:-,extends:>,precedes:<,nbsp:+ + +" editor.detectIndentation: false — Ruby defaults (editor.tabSize: 2, insertSpaces: true) +set colorcolumn=76 +set expandtab +set shiftwidth=2 +set softtabstop=2 +set tabstop=2 + +" colorcolumn draws a full-column tint in Vim (not a VS Code-style 1px line). +" Keep it subtle via the ColorColumn highlight group; reapply after colorscheme changes. +if has('termguicolors') + " set termguicolors +endif + +function! s:ConfigureColorColumn() abort + highlight ColorColumn ctermbg=236 guibg=#2a2a2a cterm=NONE gui=NONE +endfunction + +call s:ConfigureColorColumn() +autocmd ColorScheme * call s:ConfigureColorColumn() + +" files.trimTrailingWhitespace +autocmd BufWritePre * %s/\s\+$//e From 6e36843ebd859ef0ce8286e53ef21fbdeea74570 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 05/35] LICENSE --- LICENSE | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3704773 --- /dev/null +++ b/LICENSE @@ -0,0 +1,31 @@ +recls-helpers.Ruby - BSD 3-Clause License + +Copyright (c) 2026, Matthew Wilson and Synesis Information Systems +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + From ba4a59ab22cae24462e6f44a4d1a587a2270826c Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 09:32:48 +1000 Subject: [PATCH 06/35] .vscode/settings.json --- .vscode/settings.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..412858c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "[json]": { + "editor.tabSize": 2, + }, + "[ruby]": { + "editor.insertSpaces": true, + "editor.rulers": [ 60, 76 ], + "editor.tabSize": 2, + }, + "cmake.configureOnOpen": false, + "editor.detectIndentation": false, + "editor.insertSpaces": true, + "editor.renderWhitespace": "all", + "editor.rulers": [ 76 ], + "editor.tabSize": 2, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "git.mergeEditor": false, +} From a0a153c2ab40b561d7406b6b025513a149468167 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 11:32:08 +1000 Subject: [PATCH 07/35] initial version --- .github/workflows/ruby.yml | 86 +++++++++++ CHANGES.md | 10 ++ EXAMPLES.md | 7 + Gemfile | 7 + NEWS.md | 8 + README.md | 101 +++++++++++- Rakefile | 18 +++ TODO.md | 25 +++ build_gem.sh | 15 ++ generate_rdoc.sh | 28 ++++ lib/recls/helpers.rb | 59 +++++++ lib/recls/helpers/version.rb | 71 +++++++++ recls-helpers-ruby.gemspec | 43 ++++++ run_all_unit_tests.sh | 291 +++++++++++++++++++++++++++++++++++ test/unit/tc_version.rb | 37 +++++ test/unit/ts_all.rb | 11 ++ 16 files changed, 815 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ruby.yml create mode 100644 CHANGES.md create mode 100644 EXAMPLES.md create mode 100644 Gemfile create mode 100644 NEWS.md create mode 100644 Rakefile create mode 100644 TODO.md create mode 100755 build_gem.sh create mode 100755 generate_rdoc.sh create mode 100644 lib/recls/helpers.rb create mode 100644 lib/recls/helpers/version.rb create mode 100644 recls-helpers-ruby.gemspec create mode 100755 run_all_unit_tests.sh create mode 100644 test/unit/tc_version.rb create mode 100644 test/unit/ts_all.rb diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml new file mode 100644 index 0000000..96f9a8c --- /dev/null +++ b/.github/workflows/ruby.yml @@ -0,0 +1,86 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake +# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby + +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# + +name: Ruby + +on: + push: + branches: + - boilerplate + - dev + - idiomatic + - master + - rc1 + - rc2 + - rc3 + pull_request: + +permissions: + contents: read + +jobs: + test: + + strategy: + fail-fast: false + + matrix: + os: + - macos-latest + - ubuntu-latest + - windows-latest + + ruby-version: + # - head + - '3.4' + - '3.3' + - '3.2' + - '3.1' + - '3.0' + - '2.7' + - '2.6' + + include: + - os: ubuntu-latest + ruby-version: '2.5' + - os: ubuntu-latest + ruby-version: '2.4' + - os: ubuntu-latest + ruby-version: '2.0' + - os: windows-latest + ruby-version: mingw + + runs-on: ${{ matrix.os }} + + steps: + - name: Checking out code + uses: actions/checkout@v4 + + - name: Set up Ruby v${{ matrix.ruby-version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + + - name: Installing dependencies + run: bundle install + + - name: Installing dependencies explicitly + run: | + gem install recls-ruby + gem install xqsr3 + + - name: List gems + run: gem list + + - name: Run tests + run: rake test diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..53faaf4 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,10 @@ +# recls-helpers.Ruby - CHANGES + + +## 0.0.0 - 16th August 2026 + +* initial skeleton; + + + + diff --git a/EXAMPLES.md b/EXAMPLES.md new file mode 100644 index 0000000..f100923 --- /dev/null +++ b/EXAMPLES.md @@ -0,0 +1,7 @@ +# recls-helpers.Ruby - Examples + +| Name | Source & Description | Summary | +| ---- | -------------------- | ------- | + + + diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..eb10cee --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem 'recls-ruby', '~> 2.13' + +gem 'xqsr3', '~> 0.39' diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..cf5fe12 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,8 @@ +# recls-helpers.Ruby - News + +| Date | News Item | +| ---------------- | ------------------------------------------------------------------------- | +| 16th August 2026 | [recls-helpers.Ruby 0.0.0 released](https://github.com/synesissoftware/recls-helpers.Ruby/releases/tag/0.0.0) | + + + diff --git a/README.md b/README.md index f83a398..17aa22e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,99 @@ -# recls-helpers.Ruby -Helper types and functions for working with recls.Ruby +# recls-helpers.Ruby + +Helper types and functions for working with **recls.Ruby** + +![Language](https://img.shields.io/badge/Ruby-CC342D?style=flat&logo=ruby&logoColor=white) +[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) +[![Gem Version](https://badge.fury.io/rb/recls-helpers-ruby.svg)](https://badge.fury.io/rb/recls-helpers-ruby) +[![GitHub release](https://img.shields.io/github/v/release/synesissoftware/recls-helpers.Ruby.svg)](https://github.com/synesissoftware/recls-helpers.Ruby/releases/latest) +[![Last Commit](https://img.shields.io/github/last-commit/synesissoftware/recls-helpers.Ruby)](https://github.com/synesissoftware/recls-helpers.Ruby/commits/master) +[![Ruby](https://github.com/synesissoftware/recls-helpers.Ruby/actions/workflows/ruby.yml/badge.svg)](https://github.com/synesissoftware/recls-helpers.Ruby/actions/workflows/ruby.yml) + + +## Table of Contents + +- [Introduction](#introduction) +- [Installation](#installation) +- [Components](#components) +- [Examples](#examples) +- [Project Information](#project-information) + - [Where to get help](#where-to-get-help) + - [Contribution guidelines](#contribution-guidelines) + - [Dependencies](#dependencies) + - [Related projects](#related-projects) + - [License](#license) + + +## Introduction + +**recls-helpers.Ruby** provides helper types and functions layered on [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby) — common patterns for filtering search results, walking directory trees, presenting paths, and related filesystem utilities used across Synesis tooling. + + +## Installation + +Install via **gem** as in: + +``` +gem install recls-helpers-ruby +``` + +or add it to your `Gemfile`. + +Use via **require**, as in: + +```Ruby +require 'recls/helpers' +``` + + +## Components + +T.B.C. + + +## Examples + +Examples are provided in the `examples` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md). + + +## Project Information + + +### Where to get help + +[GitHub Page](https://github.com/synesissoftware/recls-helpers.Ruby "GitHub Page") + + +### Contribution guidelines + +Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/recls-helpers.Ruby. + + +### Dependencies + +This library has **efferent** (fan-out) dependencies on: + +* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby) (`recls-ruby`); + +and, for development/tests: + +* [**xqsr3**](https://github.com/synesissoftware/xqsr3/). + +It has no known **afferent** (fan-in) dependencies yet. + + +### Related projects + +* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby); +* [**recls**](https://github.com/synesissoftware/recls) (**C** / **C++**); +* [**recls.Go**](https://github.com/synesissoftware/recls.Go); +* [**recls.NET**](https://github.com/synesissoftware/recls.NET); +* [**recls.Rust**](https://github.com/synesissoftware/recls.Rust); + + +### License + +**recls-helpers.Ruby** is released under the 3-clause BSD license. See [LICENSE](./LICENSE) for details. + + + diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..d83a40b --- /dev/null +++ b/Rakefile @@ -0,0 +1,18 @@ +# Rakefile for recls-helpers.Ruby + +require 'rake/testtask' + + +Rake::TestTask.new do |tt| + + tt.libs << "lib" + tt.name = "test" + tt.test_files = FileList['test/**/tc_*.rb'] + tt.verbose = true +end + + +task :default => :test + + +# ############################## end of file ############################# # diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..60d9010 --- /dev/null +++ b/TODO.md @@ -0,0 +1,25 @@ +# recls-helpers.Ruby - TODO + + +## Table of Contents + +- [Functional improvements](#functional-improvements) +- [Packaging improvements](#packaging-improvements) + + +## Functional improvements + +* [ ] Ignore / exclude filtering (`strip_excludes` / `reject_ignored`, String + Regexp); +* [ ] `each_file_r` (+ flag builder) for recursive file walks with default `.` and ignores; +* [ ] Path-or-directory search dispatcher; +* [ ] `empty_directory?`, `directory_byte_size`, `display_path`, group-by helpers; +* [ ] Stock Synesis ignore / pattern presets (optional); + + +## Packaging improvements + +* [ ] Examples for first shipped helpers; +* [ ] Publish gem and GitHub release for **0.0.0**; + + + diff --git a/build_gem.sh b/build_gem.sh new file mode 100755 index 0000000..31b7d62 --- /dev/null +++ b/build_gem.sh @@ -0,0 +1,15 @@ +#! /bin/bash + +############################################################################# +# File: build_gem.sh +# +# Purpose: Builds the gem +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# +# Author: Matthew Wilson +# +############################################################################# + +gem build recls-helpers-ruby.gemspec $* diff --git a/generate_rdoc.sh b/generate_rdoc.sh new file mode 100755 index 0000000..c924b60 --- /dev/null +++ b/generate_rdoc.sh @@ -0,0 +1,28 @@ +#! /bin/bash + +############################################################################# +# File: generate_rdoc.sh +# +# Purpose: Generates documentation +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# +############################################################################# + +rm -rfd doc +rdoc \ + -x build_gem.sh \ + -x generate_rdoc.sh \ + -x run_all_unit_tests.sh \ + -x recls-helpers-ruby.gemspec \ + \ + -x doc/ \ + -x gems/ \ + -x old-gems/ \ + -x test/scratch/ \ + \ + -x ts_all.rb \ + -x tc_.*\.rb \ + \ + $* diff --git a/lib/recls/helpers.rb b/lib/recls/helpers.rb new file mode 100644 index 0000000..f0e1fa1 --- /dev/null +++ b/lib/recls/helpers.rb @@ -0,0 +1,59 @@ + +# ######################################################################## # +# File: recls/helpers.rb +# +# Purpose: Top-level include for recls-helpers.Ruby library +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# +# Home: http://github.com/synesissoftware/recls-helpers.Ruby +# +# Author: Matthew Wilson +# +# Copyright (c) 2026, Matthew Wilson and Synesis Information Systems +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ######################################################################## # + + +require 'recls' + +require 'recls/helpers/version' + + +module Recls +module Helpers + +end # module Helpers +end # module Recls + + +# ############################## end of file ############################# # diff --git a/lib/recls/helpers/version.rb b/lib/recls/helpers/version.rb new file mode 100644 index 0000000..4d2d17a --- /dev/null +++ b/lib/recls/helpers/version.rb @@ -0,0 +1,71 @@ + +# ######################################################################## # +# File: recls/helpers/version.rb +# +# Purpose: Version for recls-helpers.Ruby library +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# +# Home: http://github.com/synesissoftware/recls-helpers.Ruby +# +# Author: Matthew Wilson +# +# Copyright (c) 2026, Matthew Wilson and Synesis Information Systems +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ######################################################################## # + + +=begin +=end + +module Recls +module Helpers + + # Current version of the recls-helpers.Ruby library + VERSION = '0.0.0' + + private + # @!visibility private + VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc: + public + # Major version of the recls-helpers.Ruby library + VERSION_MAJOR = VERSION_PARTS_[0] # :nodoc: + # Minor version of the recls-helpers.Ruby library + VERSION_MINOR = VERSION_PARTS_[1] # :nodoc: + # Revision version of the recls-helpers.Ruby library + VERSION_REVISION = VERSION_PARTS_[2] # :nodoc: + +end # module Helpers +end # module Recls + + +# ############################## end of file ############################# # diff --git a/recls-helpers-ruby.gemspec b/recls-helpers-ruby.gemspec new file mode 100644 index 0000000..94ef094 --- /dev/null +++ b/recls-helpers-ruby.gemspec @@ -0,0 +1,43 @@ +# ######################################################################### # +# File: recls-helpers-ruby.gemspec +# +# Purpose: Gemspec for recls-helpers.Ruby library +# +# Created: 14th August 2026 +# Updated: 14th August 2026 +# +# ######################################################################### # + + +$:.unshift File.join(File.dirname(__FILE__), 'lib') + +require 'recls/helpers/version' + +require 'date' + +Gem::Specification.new do |spec| + + spec.name = 'recls-helpers-ruby' + spec.version = Recls::Helpers::VERSION + spec.date = Date.today.to_s + spec.summary = 'recls-helpers.Ruby' + spec.description = <= 2.0', '< 4' ] + + spec.add_runtime_dependency 'recls-ruby', [ '~> 2.13' ] + + spec.add_development_dependency 'xqsr3', [ '~> 0.39' ] + + spec.files = Dir[ 'Rakefile', '{bin,examples,lib,man,spec,test}/**/*', 'README*', 'LICENSE*' ] & `git ls-files -z`.split("\0") +end + + +# ############################## end of file ############################# # diff --git a/run_all_unit_tests.sh b/run_all_unit_tests.sh new file mode 100755 index 0000000..6aea55b --- /dev/null +++ b/run_all_unit_tests.sh @@ -0,0 +1,291 @@ +#! /bin/bash + +# ######################################################################## # +# File: run_all_unit_tests.sh +# +# Purpose: Executes the unit-tests of a Ruby project regardless of +# calling directory, allowing use of debug mode, warnings, and +# executing each rbenv version +# +# Created: 9th June 2011 +# Updated: 12th August 2026 +# +# Copyright (c) Matthew Wilson, 2011-2026 +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ######################################################################## # + + +# constants + +Source="${BASH_SOURCE[0]}" +while [ -h "$Source" ]; do + + ScriptDir="$(cd -P "$(dirname "$Source")" && pwd)" + Source="$(readlink "$Source")" + [[ $Source != /* ]] && Source="$ScriptDir/$Source" +done +ScriptDir="$(cd -P "$( dirname "$Source" )" && pwd)" +Basename="$(basename "$Source")" + + +# colours + +if command -v tput > /dev/null; then + + SisClr_Blue=${FG_BLUE:-$(tput setaf 4)} + SisClr_Red=${FG_RED:-$(tput setaf 1)} + SisClr_Bold=${FD_BOLD:-$(tput bold)} + SisClr_None=${FD_NONE:-$(tput sgr0)} +else + + SisClr_Blue= + SisClr_Red= + SisClr_Bold= + SisClr_None= +fi + + +# special command-line handling ('--pwd', '--rbenv-versions') + +ProjectDir="$ScriptDir" +ForwardArgs=() +FoundHelp= +RunRbEnvAllVersions= + +for arg in "$@" +do + + case "$arg" in + + --help) + + FoundHelp=1 + ForwardArgs+=("$arg") + ;; + --pwd) + + ProjectDir=$(pwd) + ForwardArgs+=("$arg") + ;; + --rbenv-versions) + + RunRbEnvAllVersions=1 + ;; + *) + + ForwardArgs+=("$arg") + ;; + esac +done + +if [ ! -z "$FoundHelp" ]; then + + RunRbEnvAllVersions= +fi + +if [ ! -z "$RunRbEnvAllVersions" ]; then + + if ! command -v rbenv > /dev/null; then + + >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}rbenv${SisClr_None} not detected" + + exit 1 + fi + + exclusions=() + if [ -e "$ProjectDir/.ruby-version-exclusions" ]; then + + exclusion_lines=`cat "$ProjectDir/.ruby-version-exclusions"` + for line in $exclusion_lines; do + + exclusions+=("$line") + done + fi + + echo "executing command line '${SisClr_Blue}${SisClr_Bold}$0 ${ForwardArgs[*]}${SisClr_None}' with all Ruby versions ..." + + current= + if [ -f "$ProjectDir/.ruby-version" ]; then + + current=$(tr -d '[:space:]' < "$ProjectDir/.ruby-version") + fi + + versions=() + while IFS= read -r line; do + + versions+=("$line") + done < <(rbenv versions --bare) + + echo "versions: ${SisClr_Blue}${SisClr_Bold}${versions[*]}${SisClr_None}; skipped versions: ${SisClr_Blue}${SisClr_Bold}${exclusions[*]}${SisClr_None}; current version: ${SisClr_Blue}${SisClr_Bold}${current:-(none)}${SisClr_None}" + + result=0 + + for version in "${versions[@]}" + do + + echo + + skip= + + for exclusion in "${exclusions[@]}"; do + + if [[ "$exclusion" == "$version" ]]; then + + skip=1 + fi + done + + if [ "$skip" != "" ]; then + + echo "skipping Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" + else + + echo "processing Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" + + echo -e "\texecuting command line 'RBENV_VERSION=$version $0 ${ForwardArgs[*]}' with Ruby version $version ..." + + if ! RBENV_VERSION="$version" "$0" "${ForwardArgs[@]}"; then + + result=1 + fi + fi + done + + exit $result +fi + + +# regular command-line handling + +Separate= +DebugFlag= +PrependLib= +WarningsFlag=-W0 + +for v in "$@" +do + + case "$v" in + + --debug) + + DebugFlag=--debug + ;; + --help) + + cat << EOF +USAGE: $Basename { | --help | [ --debug ] [ --lib ] [ --pwd ] [ --rbenv-versions ] [ --separate ] [ --warnings ]} + +flags: + + --help + shows this help and terminates + + --debug + executes Ruby interpreter in debug mode + + --lib + prepends the lib directory under the script's directory into RUBYLIB before executing + + --pwd + executes from present working directory, rather than relative to the script directory + + --rbenv-versions + executes this script (with all other specified arguments) for each rbenv version (except those listed in the file .ruby-version-exclusions, if present) + + --separate + executes each unit-test in a separate program + + --warnings + executes Ruby interpreter in warnings mode +EOF + + exit 0 + ;; + --lib) + + PrependLib=1 + ;; + --pwd) + + # already-processed as special case above + ;; + --rbenv-versions) + + # already-processed as special case above + ;; + --separate) + + Separate=true + ;; + --warnings|--warn) + + WarningsFlag=-W2 #-W:performance + ;; + *) + + >&2 echo "unrecognised argument '$v'; use --help for usage" + + exit 1 + ;; + esac +done + + +# executing tests + +if [ ! -z "$PrependLib" ]; then + + export RUBYLIB=$ProjectDir/lib:$RUBYLIB +fi + + +if [ -z "$Separate" ]; then + + ruby $DebugFlag $WarningsFlag "$ProjectDir/test/unit/ts_all.rb" +else + + result=0 + + while IFS= read -r -d '' testfile; do + + if ! ruby $DebugFlag $WarningsFlag "$testfile"; then + + result=1 + fi + done < <(find "$ProjectDir" -name 'tc_*.rb' -print0) + + exit $result +fi + + +# ############################## end of file ############################# # + diff --git a/test/unit/tc_version.rb b/test/unit/tc_version.rb new file mode 100644 index 0000000..4e74890 --- /dev/null +++ b/test/unit/tc_version.rb @@ -0,0 +1,37 @@ +#! /usr/bin/env ruby + +$:.unshift File.join(File.dirname(__FILE__), '../../lib') + + +require 'recls/helpers/version' + +require 'test/unit' + + +class Test_version < Test::Unit::TestCase + + def test_has_VERSION + + assert defined? Recls::Helpers::VERSION + end + + def test_has_VERSION_MAJOR + + assert defined? Recls::Helpers::VERSION_MAJOR + end + + def test_has_VERSION_MINOR + + assert defined? Recls::Helpers::VERSION_MINOR + end + + def test_has_VERSION_REVISION + + assert defined? Recls::Helpers::VERSION_REVISION + end + + def test_VERSION_has_consistent_format + + assert_equal Recls::Helpers::VERSION.split('.')[0..2].join('.'), "#{Recls::Helpers::VERSION_MAJOR}.#{Recls::Helpers::VERSION_MINOR}.#{Recls::Helpers::VERSION_REVISION}" + end +end diff --git a/test/unit/ts_all.rb b/test/unit/ts_all.rb new file mode 100644 index 0000000..70e0ef8 --- /dev/null +++ b/test/unit/ts_all.rb @@ -0,0 +1,11 @@ +#! /usr/bin/env ruby +# +# executes all other tests + +this_dir = File.expand_path(File.dirname(__FILE__)) + +# all tc_*rb in current directory +Dir[File.join(this_dir, 'tc_*rb')].each { |file| require file } + +# all ts_*rb in immediate sub-directories +Dir[File.join(this_dir, '*', 'ts_*rb')].each { |file| require file } From c5c692a9a483e4987f18232c450495d910eb0197 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 11:47:50 +1000 Subject: [PATCH 08/35] boilerplate: markdown files --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 53faaf4..88c4168 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,4 @@ -# recls-helpers.Ruby - CHANGES +# recls-helpers.Ruby - Changes ## 0.0.0 - 16th August 2026 From 859d1ffafc472aec9b8af929f7a19b2ca6af2103 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 11:54:42 +1000 Subject: [PATCH 09/35] boilerplate: .gitattributes --- .gitattributes | 77 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index 8322ec2..702382f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,75 @@ +# .gitattributes — Ruby (GitHub-hosted) +# +# Sources: GitHub Docs (line endings), git-scm gitattributes (diff=ruby), +# gitattributes/gitattributes Common.gitattributes + Web (*.rb), +# github-linguist overrides. -*.rb linguist-language=Ruby +# Default: detect text, normalize to LF in the repository +* text=auto -*.html linguist-detectable=false -*.sh linguist-detectable=false -*.vimrc linguist-detectable=false +# --- Source --- +*.gemspec text eol=lf diff=ruby +*.rake text eol=lf diff=ruby +*.rb text eol=lf diff=ruby +*.ru text eol=lf diff=ruby +Gemfile text eol=lf diff=ruby +Rakefile text eol=lf diff=ruby +Capfile text eol=lf diff=ruby +Guardfile text eol=lf diff=ruby +*.erb text +*.haml text +*.slim text + +# --- Lock / config --- +Gemfile.lock text -diff +*.gemspec.lock text -diff +*.yml text +*.yaml text +*.toml text +*.json text + +# --- Scripts --- +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf +*.sh text eol=lf +*.zsh text eol=lf + +# --- Docs / meta --- +*.adoc text +*.markdown text diff=markdown +*.md text diff=markdown +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +LICENSE text +NEWS text +README text +TODO text +.gitattributes text +.gitignore text + +# --- Binary --- +*.gem binary +*.so binary + +# --- Archives / images (common) --- +*.gif binary +*.gz binary +*.ico binary +*.jpeg binary +*.jpg binary +*.png binary +*.tar binary +*.zip binary + +# --- GitHub Linguist --- +**/vendor/bundle/** linguist-vendored +**/vendor/cache/** linguist-vendored +**/coverage/** linguist-generated +**/doc/** linguist-documentation +**/pkg/** linguist-generated From d4e81da7a262f803ecbe4ad8b1f1dd724ac7f859 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 12:08:51 +1000 Subject: [PATCH 10/35] boilerplate: .vscode/settings.json --- .vscode/settings.json | 58 ++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 412858c..19efccd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,19 +1,43 @@ { - "[json]": { - "editor.tabSize": 2, - }, - "[ruby]": { - "editor.insertSpaces": true, - "editor.rulers": [ 60, 76 ], - "editor.tabSize": 2, - }, - "cmake.configureOnOpen": false, - "editor.detectIndentation": false, - "editor.insertSpaces": true, - "editor.renderWhitespace": "all", - "editor.rulers": [ 76 ], - "editor.tabSize": 2, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "git.mergeEditor": false, + "[json]": { + "editor.insertSpaces": true, + "editor.tabSize": 2, + }, + "[markdown]": { + "editor.insertSpaces": true, + "editor.tabSize": 2, + }, + "[python]": { + "editor.insertSpaces": true, + "editor.rulers": [ 60, 76 ], + "editor.tabSize": 4, + }, + "[ruby]": { + "editor.defaultFormatter": "Shopify.ruby-lsp", + "editor.formatOnSave": true, + "editor.formatOnType": true, + "editor.insertSpaces": true, + "editor.rulers": [ 60, 76 ], + "editor.semanticHighlighting.enabled": true, + "editor.tabSize": 2, + }, + "[shellscript]": { + "editor.insertSpaces": true, + "editor.rulers": [ 60, 76 ], + "editor.tabSize": 2, + }, + "[toml]": { + "editor.insertSpaces": false, + "editor.tabSize": 2, + }, + "cmake.configureOnOpen": false, + "editor.detectIndentation": false, + "editor.insertSpaces": false, + "editor.renderWhitespace": "all", + "editor.rulers": [ 76 ], + "editor.tabSize": 2, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "git.mergeEditor": false, + "rubyLsp.formatter": "auto", } From 1701d488b5cf65114fed532f31ea420ee7596c3b Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 12:14:51 +1000 Subject: [PATCH 11/35] boilerplate: .vimrc --- .vimrc | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/.vimrc b/.vimrc index 475d0e2..b8184be 100644 --- a/.vimrc +++ b/.vimrc @@ -17,7 +17,7 @@ set fixeol set list set listchars=tab:->,trail:-,extends:>,precedes:<,nbsp:+ -" editor.detectIndentation: false — Ruby defaults (editor.tabSize: 2, insertSpaces: true) +" editor.detectIndentation: false — global defaults (editor.tabSize: 2, insertSpaces: true) set colorcolumn=76 set expandtab set shiftwidth=2 @@ -39,3 +39,32 @@ autocmd ColorScheme * call s:ConfigureColorColumn() " files.trimTrailingWhitespace autocmd BufWritePre * %s/\s\+$//e + +augroup sis_c_cxx + autocmd! + + " [c] / [cpp] + autocmd FileType c,cpp setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 colorcolumn=60,64,68,72,76 + + " [rust] + autocmd FileType rs setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 colorcolumn=76 + + " [cmake] + autocmd FileType cmake setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 + + " [shellscript] + autocmd FileType sh,bash,zsh setlocal expandtab tabstop=2 shiftwidth=2 softtabstop=2 colorcolumn=60,76 + + " [bat] + autocmd FileType bat,dosbatch setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 colorcolumn=60,76 + + " [json] / [markdown] / [yaml] / [ruby] + autocmd FileType json,markdown,yaml,ruby setlocal expandtab tabstop=2 shiftwidth=2 softtabstop=2 + + " [python] + autocmd FileType python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 colorcolumn=60,76 + + " [toml] + autocmd FileType toml setlocal noexpandtab tabstop=2 shiftwidth=2 softtabstop=2 +augroup END + From 158689bd5fca667f775d9a65ba065acf8cdab909 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 13:23:49 +1000 Subject: [PATCH 12/35] boilerplate: build_gem.cmd, build_gem.sh, generate_rdoc.cmd, generate_rdoc.sh --- .sis/project_name.txt | 1 + build_gem.cmd | 13 +++++++++++++ build_gem.sh | 12 +++++------- generate_rdoc.cmd | 28 ++++++++++++++++++++++++++++ generate_rdoc.sh | 33 ++++++++++++++++++--------------- 5 files changed, 65 insertions(+), 22 deletions(-) create mode 100644 .sis/project_name.txt create mode 100644 build_gem.cmd create mode 100644 generate_rdoc.cmd diff --git a/.sis/project_name.txt b/.sis/project_name.txt new file mode 100644 index 0000000..1c6c67f --- /dev/null +++ b/.sis/project_name.txt @@ -0,0 +1 @@ +recls-helpers.Ruby diff --git a/build_gem.cmd b/build_gem.cmd new file mode 100644 index 0000000..c894c21 --- /dev/null +++ b/build_gem.cmd @@ -0,0 +1,13 @@ +@ECHO OFF + +REM ######################################################################## +REM File: build_gem.cmd +REM +REM Purpose: Builds the gem +REM +REM Created: 11th July 2016 +REM Updated: 14th August 2026 +REM +REM ######################################################################## + +FOR %%f IN (*.gemspec) DO gem build "%%f" %* diff --git a/build_gem.sh b/build_gem.sh index 31b7d62..864823e 100755 --- a/build_gem.sh +++ b/build_gem.sh @@ -1,15 +1,13 @@ #! /bin/bash ############################################################################# -# File: build_gem.sh +# File: build_gem.sh # -# Purpose: Builds the gem +# Purpose: Builds the gem # -# Created: 14th August 2026 -# Updated: 14th August 2026 -# -# Author: Matthew Wilson +# Created: 9th June 2016 +# Updated: 14th August 2026 # ############################################################################# -gem build recls-helpers-ruby.gemspec $* +gem build *.gemspec $* diff --git a/generate_rdoc.cmd b/generate_rdoc.cmd new file mode 100644 index 0000000..4f6f7ad --- /dev/null +++ b/generate_rdoc.cmd @@ -0,0 +1,28 @@ +@ECHO OFF + +REM ######################################################################## +REM File: generate_rdoc.cmd +REM +REM Purpose: Generates documentation +REM +REM Created: 14th August 2026 +REM Updated: 14th August 2026 +REM +REM ######################################################################## + +IF EXIST doc RMDIR /S /Q doc +rdoc ^ + -x build_gem.cmd ^ + -x build_gem.sh ^ + -x generate_rdoc.cmd ^ + -x generate_rdoc.sh ^ + -x run_all_unit_tests.sh ^ + -x *.gemspec ^ + -x doc/ ^ + -x gems/ ^ + -x old-gems/ ^ + -x test/performance/ ^ + -x test/scratch/ ^ + -x tc_.*\.rb ^ + -x ts_all.rb ^ + %* diff --git a/generate_rdoc.sh b/generate_rdoc.sh index c924b60..e7dc865 100755 --- a/generate_rdoc.sh +++ b/generate_rdoc.sh @@ -5,24 +5,27 @@ # # Purpose: Generates documentation # -# Created: 14th August 2026 +# Created: 11th June 2016 # Updated: 14th August 2026 # ############################################################################# rm -rfd doc rdoc \ - -x build_gem.sh \ - -x generate_rdoc.sh \ - -x run_all_unit_tests.sh \ - -x recls-helpers-ruby.gemspec \ - \ - -x doc/ \ - -x gems/ \ - -x old-gems/ \ - -x test/scratch/ \ - \ - -x ts_all.rb \ - -x tc_.*\.rb \ - \ - $* + -x build_gem.cmd \ + -x build_gem.sh \ + -x generate_rdoc.cmd \ + -x generate_rdoc.sh \ + -x run_all_unit_tests.sh \ + -x *.gemspec \ + \ + -x doc/ \ + -x gems/ \ + -x old-gems/ \ + -x test/performance/ \ + -x test/scratch/ \ + \ + -x tc_.*\.rb \ + -x ts_all.rb \ + \ + $* From 214d7fe4e9c48a25cc9b4565ee38adafdf2a7c82 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 13:41:34 +1000 Subject: [PATCH 13/35] bolierplate: updating Gemfile --- Gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index eb10cee..6db48b3 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,6 @@ source "https://rubygems.org" -gem 'recls-ruby', '~> 2.13' +gem "recls-ruby", '~> 2.13' -gem 'xqsr3', '~> 0.39' +gem "xqsr3", [ '~> 0.39', '>= 0.39.4' ] From 22314a27767c8524b27ab90a4eb60a2bb331794b Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 13:52:06 +1000 Subject: [PATCH 14/35] boilerplate: placeholder markdown files --- AUTHORS.md | 0 FAQ.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 AUTHORS.md create mode 100644 FAQ.md diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..e69de29 diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 0000000..e69de29 From aa11aaf1c78b1edfdad6446ed42ff4c6722681b7 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 14:05:54 +1000 Subject: [PATCH 15/35] boilerplate: .gitignore --- .gitignore | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index ad84696..0d510c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,22 @@ - # directories (by name) /.bzr/ /.bundle/ /.config/ -/.git/ /.svn/ +/.yardoc/ + +/_yardoc/ /InstalledFiles/ /build/ /coverage/ /doc/ /lib/bundler/man/ +/old-gems/ /pkg/ /rdoc/ +/scratch/ /spec/reports/ /test/tmp/ /test/version_tmp/ @@ -25,27 +28,23 @@ # files (by name) .DS_Store -.bundle -.config .repl_history .ruby-version .rvmrc -.yardoc -_yardoc -InstalledFiles -coverage -pkg -rdoc +/spec/examples.txt # files (by pattern) *~ *.*~ .dat* +*.b64 +*.bridgesupport *.gem *.rbc *.scc *.suo *.swp +*.tmp *.zip From 32457177b2e6e18b3e73aea64a992b5e2c573f4c Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 14:17:19 +1000 Subject: [PATCH 16/35] version dependencies --- Gemfile.lock | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..c8c25c2 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,16 @@ +GEM + remote: https://rubygems.org/ + specs: + recls-ruby (2.13.2) + xqsr3 (0.39.4.1) + +PLATFORMS + arm64-darwin-25 + ruby + +DEPENDENCIES + recls-ruby (~> 2.13) + xqsr3 (~> 0.39, >= 0.39.4) + +BUNDLED WITH + 2.6.9 From cb465233c561311efb8ba4e4772c423a95efb6de Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 16:08:06 +1000 Subject: [PATCH 17/35] Add canonical AUTHORS and FAQ markdown skeletons --- AUTHORS.md | 17 +++++++++++++++++ FAQ.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index e69de29..1aa0838 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -0,0 +1,17 @@ +# recls-helpers.Ruby - Authors + + +## Major Contributors: + +* Matt Wilson ([mwsis](https://github.com/mwsis)) + + +## Defect reports, fixes and suggestions (for which we are very grateful): + +* \ + +Contributions are welcomed. + + + + diff --git a/FAQ.md b/FAQ.md index e69de29..89a6079 100644 --- a/FAQ.md +++ b/FAQ.md @@ -0,0 +1,28 @@ +# recls-helpers.Ruby - FAQ + +The FAQ list is under (constant) development. If you post a question on the +[Issues](https://github.com/synesissoftware/recls-helpers.Ruby/issues) forum +it will be used to create one. + + +## Table of Contents + +- [Q1: "How do I install this library?"](#q1-how-do-i-install-this-library) + + +# FAQs: + + +## Q1: "How do I install this library?" + +Install via **gem**: + +``` +gem install recls-helpers-ruby +``` + +See [README.md](./README.md) for usage. + + + + From f54a10b1ecb664b5fec1b9bdfa35f90b5bd474c4 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Fri, 14 Aug 2026 16:28:27 +1000 Subject: [PATCH 18/35] Add ruby.yml CI badge and switch Gemfile to gemspec --- Gemfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6db48b3..be173b2 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,4 @@ source "https://rubygems.org" -gem "recls-ruby", '~> 2.13' - -gem "xqsr3", [ '~> 0.39', '>= 0.39.4' ] +gemspec From 67420295412a4e3f52a62d234702849c93496420 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 05:36:38 +1000 Subject: [PATCH 19/35] chore: dependencies --- .gitattributes | 2 +- Gemfile.lock | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index 702382f..2c70232 100644 --- a/.gitattributes +++ b/.gitattributes @@ -21,7 +21,7 @@ Guardfile text eol=lf diff=ruby *.slim text # --- Lock / config --- -Gemfile.lock text -diff +Gemfile.lock text *.gemspec.lock text -diff *.yml text *.yaml text diff --git a/Gemfile.lock b/Gemfile.lock index c8c25c2..8baee4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,22 @@ +PATH + remote: . + specs: + recls-helpers-ruby (0.0.0) + recls-ruby (~> 2.13) + GEM remote: https://rubygems.org/ specs: recls-ruby (2.13.2) - xqsr3 (0.39.4.1) + xqsr3 (0.39.5) PLATFORMS arm64-darwin-25 ruby DEPENDENCIES - recls-ruby (~> 2.13) - xqsr3 (~> 0.39, >= 0.39.4) + recls-helpers-ruby! + xqsr3 (~> 0.39) BUNDLED WITH 2.6.9 From 18e20bcf392f6d9d6ac0094c05e69fc355ef157e Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 06:44:52 +1000 Subject: [PATCH 20/35] gemspec updates --- recls-helpers-ruby.gemspec | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/recls-helpers-ruby.gemspec b/recls-helpers-ruby.gemspec index 94ef094..b460bf2 100644 --- a/recls-helpers-ruby.gemspec +++ b/recls-helpers-ruby.gemspec @@ -4,7 +4,7 @@ # Purpose: Gemspec for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 14th August 2026 +# Updated: 15th August 2026 # # ######################################################################### # @@ -13,28 +13,31 @@ $:.unshift File.join(File.dirname(__FILE__), 'lib') require 'recls/helpers/version' -require 'date' Gem::Specification.new do |spec| spec.name = 'recls-helpers-ruby' spec.version = Recls::Helpers::VERSION - spec.date = Date.today.to_s spec.summary = 'recls-helpers.Ruby' spec.description = <= 2.0', '< 4' ] - spec.add_runtime_dependency 'recls-ruby', [ '~> 2.13' ] + spec.add_runtime_dependency "recls-ruby", [ '~> 2.13' ] - spec.add_development_dependency 'xqsr3', [ '~> 0.39' ] + spec.add_development_dependency "xqsr3", [ '>= 0.39.5', '< 1.0' ] spec.files = Dir[ 'Rakefile', '{bin,examples,lib,man,spec,test}/**/*', 'README*', 'LICENSE*' ] & `git ls-files -z`.split("\0") end From d53719e2b46420fd251e0ce326411f9dc517afc6 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 06:46:42 +1000 Subject: [PATCH 21/35] chore: AUTHORS.md --- AUTHORS.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 1aa0838..eabc7e0 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,17 +1,21 @@ # recls-helpers.Ruby - Authors -## Major Contributors: +## Major Contributors -* Matt Wilson ([mwsis](https://github.com/mwsis)) +| Name | GitHub | +| ----------- | --------------------------------- | +| Matt Wilson | [mwsis](https://github.com/mwsis) | -## Defect reports, fixes and suggestions (for which we are very grateful): +## Defect reports, fixes and suggestions (for which we are very grateful) -* \ +| Name | GitHub | +| ----------- | --------------------------------- | +| \ | | -Contributions are welcomed. +Contributions are welcomed. From f19e45444f489d60a97b19544c070b7c04fc13e8 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 06:50:09 +1000 Subject: [PATCH 22/35] fix: gemspec metadata --- recls-helpers-ruby.gemspec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recls-helpers-ruby.gemspec b/recls-helpers-ruby.gemspec index b460bf2..26728e3 100644 --- a/recls-helpers-ruby.gemspec +++ b/recls-helpers-ruby.gemspec @@ -35,6 +35,13 @@ END_DESC spec.required_ruby_version = [ '>= 2.0', '< 4' ] + spec.metadata = { + 'bug_tracker_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby/issues', + 'changelog_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby/blob/master/CHANGES.md', + 'homepage_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby', + 'source_code_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby', + } + spec.add_runtime_dependency "recls-ruby", [ '~> 2.13' ] spec.add_development_dependency "xqsr3", [ '>= 0.39.5', '< 1.0' ] From e76e7b97b44d4c669e80e067f87119fbf329009a Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 07:07:48 +1000 Subject: [PATCH 23/35] feature: improved CI --- .github/workflows/ruby.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 96f9a8c..e1157a3 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -7,7 +7,7 @@ # # Created: 14th August 2026 -# Updated: 14th August 2026 +# Updated: 15th August 2026 # name: Ruby @@ -15,10 +15,10 @@ name: Ruby on: push: branches: - - boilerplate + - master - dev + - boilerplate - idiomatic - - master - rc1 - rc2 - rc3 @@ -27,6 +27,10 @@ on: permissions: contents: read +defaults: + run: + shell: bash + jobs: test: From 40bb4e41838e5aaa118f12e8f45314aa17d4674b Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 07:38:24 +1000 Subject: [PATCH 24/35] fix: CI --- .github/workflows/ruby.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index e1157a3..3efd255 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -69,6 +69,9 @@ jobs: - name: Checking out code uses: actions/checkout@v4 + - name: Remove Gemfile.lock + run: rm -f Gemfile.lock + - name: Set up Ruby v${{ matrix.ruby-version }} uses: ruby/setup-ruby@v1 with: From 4f6109345be5875da26ec324ab86b469713dee31 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 07:56:05 +1000 Subject: [PATCH 25/35] added/updated Rakefile --- Rakefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index d83a40b..ad63284 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # Rakefile for recls-helpers.Ruby require 'rake/testtask' @@ -5,8 +7,9 @@ require 'rake/testtask' Rake::TestTask.new do |tt| - tt.libs << "lib" - tt.name = "test" + tt.libs << 'lib' + tt.libs << 'test' + tt.name = 'test' tt.test_files = FileList['test/**/tc_*.rb'] tt.verbose = true end From 77d5e66c69d8de06b0a33f5b63a6538e496b47e3 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 08:11:09 +1000 Subject: [PATCH 26/35] chore: CONTRIBUTING.md, INSTALL.md, SECURITY.md --- CONTRIBUTING.md | 36 ++++++++++++++++++++++++++++++++++++ INSTALL.md | 41 +++++++++++++++++++++++++++++++++++++++++ SECURITY.md | 22 ++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 INSTALL.md create mode 100644 SECURITY.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..53b3400 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# recls-helpers.Ruby - Contributing + + +## Table of Contents + +- [Defects and features](#defects-and-features) +- [Pull requests](#pull-requests) +- [Tests](#tests) +- [License](#license) + + +## Defects and features + +Open an issue on https://github.com/synesissoftware/recls-helpers.Ruby/issues. + + +## Pull requests + +Pull requests are welcome on https://github.com/synesissoftware/recls-helpers.Ruby. Keep diffs local to the change; match existing indentation (2 spaces in Ruby) and the Synesis markdown set (**README.md**, **CHANGES.md**, **NEWS.md**, **TODO.md**, **INSTALL.md**, **CONTRIBUTING.md**, **SECURITY.md**). + + +## Tests + +``` +bundle exec rake test +``` + +or `./run_all_unit_tests.sh`. + + +## License + +Contributions are accepted under the 3-clause BSD license. See [LICENSE](./LICENSE). + + + diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..6da184c --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,41 @@ +# recls-helpers.Ruby - Installation and Use + + +## Table of Contents + +- [Install the gem](#install-the-gem) +- [From a source checkout](#from-a-source-checkout) +- [Using the library](#using-the-library) + + +## Install the gem + +``` +gem install recls-helpers-ruby +``` + +or add to a **Gemfile**: + +```Ruby +gem 'recls-helpers-ruby' +``` + +then `bundle install`. + + +## From a source checkout + +``` +bundle install +bundle exec rake test +``` + + +## Using the library + +```Ruby +require 'recls/helpers' +``` + + + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..cfd9933 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,22 @@ +# recls-helpers.Ruby - Security + + +## Table of Contents + +- [Reporting a vulnerability](#reporting-a-vulnerability) +- [Supported versions](#supported-versions) + + +## Reporting a vulnerability + +Please report security issues privately via GitHub Security Advisories on https://github.com/synesissoftware/recls-helpers.Ruby/security, or by opening an issue if an advisory cannot be filed. Do not attach exploit proofs of concept against third-party systems. + + +## Supported versions + +| Version | Supported | +| ------- | --------- | +| 0.0.x | ✅ | + + + From bf6d2ae767ae1dcc95101b3da221675cf445ac88 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 08:15:02 +1000 Subject: [PATCH 27/35] chore: rake in Gemfile --- Gemfile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Gemfile b/Gemfile index be173b2..29f6d2e 100644 --- a/Gemfile +++ b/Gemfile @@ -3,3 +3,14 @@ source "https://rubygems.org" gemspec + +# rake 13 requires Ruby >= 2.3 +if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.3") + + gem "rake", '~> 13.0' +else + + gem "rake", '~> 12.3' +end + +gem "test-unit", '~> 3.0' From 17695ead1eabba7c26e442a79ea343b878bc068a Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 08:41:42 +1000 Subject: [PATCH 28/35] fix: Add frozen lib/ strings and standardise Ruby gem boilerplate --- CHANGES.md | 1 + lib/recls/helpers.rb | 4 ++-- lib/recls/helpers/version.rb | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 88c4168..7213788 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ ## 0.0.0 - 16th August 2026 +* added `# frozen_string_literal: true` to all **lib/** sources; * initial skeleton; diff --git a/lib/recls/helpers.rb b/lib/recls/helpers.rb index f0e1fa1..b4b9abf 100644 --- a/lib/recls/helpers.rb +++ b/lib/recls/helpers.rb @@ -1,11 +1,11 @@ - +# frozen_string_literal: true # ######################################################################## # # File: recls/helpers.rb # # Purpose: Top-level include for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 14th August 2026 +# Updated: 15th August 2026 # # Home: http://github.com/synesissoftware/recls-helpers.Ruby # diff --git a/lib/recls/helpers/version.rb b/lib/recls/helpers/version.rb index 4d2d17a..5d71235 100644 --- a/lib/recls/helpers/version.rb +++ b/lib/recls/helpers/version.rb @@ -1,11 +1,11 @@ - +# frozen_string_literal: true # ######################################################################## # # File: recls/helpers/version.rb # # Purpose: Version for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 14th August 2026 +# Updated: 15th August 2026 # # Home: http://github.com/synesissoftware/recls-helpers.Ruby # From 415d44bac56e5204d702dad64bb1efec58d2b7ed Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 08:48:40 +1000 Subject: [PATCH 29/35] standard CI for all projects --- .github/workflows/ruby.yml | 42 ++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 3efd255..0de7605 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -78,16 +78,40 @@ jobs: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - name: Installing dependencies - run: bundle install + - name: Show Ruby version + run: ruby -v - - name: Installing dependencies explicitly + - name: Run tests + run: bundle exec rake test + + - name: Gem build and install smoke + shell: bash run: | - gem install recls-ruby - gem install xqsr3 + gem build recls-helpers-ruby.gemspec + gem install --local recls-helpers-ruby-*.gem + ruby -e "require 'recls/helpers/version'; abort('VERSION missing') unless defined?(Recls::Helpers::VERSION); puts Recls::Helpers::VERSION" - - name: List gems - run: gem list + warnings: - - name: Run tests - run: rake test + name: Warnings + + runs-on: ubuntu-latest + + steps: + - name: Checking out code + uses: actions/checkout@v4 + + - name: Remove Gemfile.lock + run: rm -f Gemfile.lock + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + bundler-cache: true + + - name: Show Ruby version + run: ruby -v + + - name: Run unit tests with warnings + run: ./run_all_unit_tests.sh --lib --warnings From dec9382012dd0c782d82f7473729903ae4e50870 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 08:56:55 +1000 Subject: [PATCH 30/35] standard .editorconfig and dependabot for all projects --- .editorconfig | 64 ++++++++++++++++++++++++++++++++++++++++++ .github/dependabot.yml | 10 +++++++ 2 files changed, 74 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/dependabot.yml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8d78c5d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,64 @@ +root = true + +# Language indent/EOL/charset overlap with .vscode/settings.json. +# Rulers, renderWhitespace, detectIndentation, mergeEditor, and +# cmake.configureOnOpen cannot be expressed here — they stay in settings.json. + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true + +# [bat] +[*.{bat,cmd}] +end_of_line = crlf +indent_size = 4 +indent_style = space + +# [c] +[*.{c,h}] +indent_size = 4 +indent_style = space + +# [cmake] +[{CMakeLists.txt,*.cmake}] +indent_size = 4 +indent_style = tab + +# [cpp] +[*.{cpp,cxx,hpp,hxx}] +indent_size = 4 +indent_style = space + +# [json] +[*.json] +indent_size = 2 +indent_style = space + +# [markdown] +[*.md] +indent_size = 2 +indent_style = space +trim_trailing_whitespace = false + +# [ruby] +[*.{gemspec,rb}] +indent_size = 2 +indent_style = space + +[{Gemfile,Rakefile}] +indent_size = 2 +indent_style = space + +# [shellscript] +[*.{bash,sh,zsh}] +indent_size = 2 +indent_style = space + +# [yaml] +[*.{yaml,yml}] +indent_size = 2 +indent_style = space diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..3189593 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - directory: / + package-ecosystem: bundler + schedule: + interval: weekly + - directory: / + package-ecosystem: github-actions + schedule: + interval: weekly From 21ad62c4442327274a58307027be945ee42cb694 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 09:16:28 +1000 Subject: [PATCH 31/35] CHANGES.md --- CHANGES.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 7213788..ddd2a1a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,5 +7,4 @@ * initial skeleton; - From 5a0f12a935e220896f67a7b9661fa6958ed6f11a Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 09:24:19 +1000 Subject: [PATCH 32/35] NEWS.md --- NEWS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index cf5fe12..ff6ca18 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ # recls-helpers.Ruby - News -| Date | News Item | -| ---------------- | ------------------------------------------------------------------------- | +| Date | News Item | +| ---------------- | ------------------------------------------------------------------------------------------------- | | 16th August 2026 | [recls-helpers.Ruby 0.0.0 released](https://github.com/synesissoftware/recls-helpers.Ruby/releases/tag/0.0.0) | From e27fe2d085cbfb4f0bec76c1a9cbd68b5156504b Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Sat, 15 Aug 2026 09:28:54 +1000 Subject: [PATCH 33/35] README.md --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 17aa22e..f428b82 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,13 @@ require 'recls/helpers' ## Components -T.B.C. +**recls-helpers.Ruby** currently ships the **`Recls::Helpers`** namespace and version metadata (`require 'recls/helpers'`), layered on [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby). Concrete helper APIs are still landing; the intended first set (see **TODO.md**) includes: + +* ignore / exclude filtering (`strip_excludes` / `reject_ignored`, `String` + `Regexp`); +* `each_file_r` (and related flag builders) for recursive file walks with default directory and ignores; +* path-or-directory search dispatch; +* `empty_directory?`, `directory_byte_size`, `display_path`, and group-by helpers; +* optional stock Synesis ignore / pattern presets; ## Examples From 4eb96d5f24b949ac6e50a0c9244405c1cde372e3 Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Wed, 19 Aug 2026 12:23:36 +1000 Subject: [PATCH 34/35] 0.0.1 --- .github/workflows/ruby.yml | 19 ++++++-- .gitignore | 9 +++- CHANGES.md | 10 ++++ EXAMPLES.md | 4 +- Gemfile | 7 +++ Gemfile.lock | 22 --------- NEWS.md | 7 +-- README.md | 52 +++++++++++++++----- TODO.md | 18 ++++--- lib/recls/helpers.rb | 4 +- lib/recls/helpers/version.rb | 6 +-- recls-helpers-ruby.gemspec | 38 +++++++++++---- run_all_unit_tests.sh | 94 ++++++++++++++++++++++-------------- 13 files changed, 188 insertions(+), 102 deletions(-) delete mode 100644 Gemfile.lock diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 0de7605..633c3b3 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -7,7 +7,7 @@ # # Created: 14th August 2026 -# Updated: 15th August 2026 +# Updated: 19th August 2026 # name: Ruby @@ -70,13 +70,20 @@ jobs: uses: actions/checkout@v4 - name: Remove Gemfile.lock + shell: bash run: rm -f Gemfile.lock - name: Set up Ruby v${{ matrix.ruby-version }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} - bundler-cache: true # runs 'bundle install' and caches installed gems automatically + # Bundler 4 honours Gemfile `lockfile false`, so no Gemfile.lock + # is written. bundler-cache cats that file after `bundle lock` + # and fails on Windows 3.2+ (setup-ruby installs Bundler ~> 4). + bundler-cache: false + + - name: Install gems + run: bundle install - name: Show Ruby version run: ruby -v @@ -102,13 +109,17 @@ jobs: uses: actions/checkout@v4 - name: Remove Gemfile.lock + shell: bash run: rm -f Gemfile.lock - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.3' - bundler-cache: true + ruby-version: '3.4' + bundler-cache: false + + - name: Install gems + run: bundle install - name: Show Ruby version run: ruby -v diff --git a/.gitignore b/.gitignore index 0d510c3..ce639ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,13 @@ # directories (by name) -/.bzr/ /.bundle/ +/.bzr/ /.config/ /.svn/ +/.vscode/ /.yardoc/ +/_build/ /_yardoc/ /InstalledFiles/ @@ -23,8 +25,10 @@ /tmp/ /vendor/bundle/ + # directories (by pattern) + # files (by name) .DS_Store @@ -32,8 +36,11 @@ .ruby-version .rvmrc +Gemfile.lock + /spec/examples.txt + # files (by pattern) *~ diff --git a/CHANGES.md b/CHANGES.md index ddd2a1a..b4ea3d0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,16 @@ # recls-helpers.Ruby - Changes +## 0.0.1 - 19th August 2026 + +* **recls-helpers-ruby.gemspec**: `required_ruby_version` is the range `>= 2.0`; **Gemfile.lock** and **.ruby-version** excluded from `spec.files`; `spec.summary` matches the README tagline; packaged **AUTHORS**, **CHANGES**, **CONTRIBUTING**, **EXAMPLES**, **FAQ**, **INSTALL**, **NEWS**, **SECURITY**, **TODO**; +* **Gemfile** sets `lockfile false` when Bundler supports it; stop tracking **Gemfile.lock**; +* CI uses `bundler-cache: false` and explicit `bundle install`; **Warnings** job on Ruby **3.4**; +* updated **run_all_unit_tests.sh** (from https://github.com/synesissoftware/misc-dev-scripts) to skip **tput** when **$TERM** is unset or stdout is not a TTY; +* **README.md**: drop extra GitHub-release badge; nested **Dependencies** (Efferent / Afferent); +* library source **Home:** URLs now use `https`; + + ## 0.0.0 - 16th August 2026 * added `# frozen_string_literal: true` to all **lib/** sources; diff --git a/EXAMPLES.md b/EXAMPLES.md index f100923..4961e5a 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -1,7 +1,7 @@ # recls-helpers.Ruby - Examples -| Name | Source & Description | Summary | -| ---- | -------------------- | ------- | +|Name|Source & Description|Summary| +|---|---|---| diff --git a/Gemfile b/Gemfile index 29f6d2e..79965e8 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,13 @@ source "https://rubygems.org" +# Suppress lockfile on Bundler 4+ (gem: do not pin the graph). No-op on +# Bundler that lacks the DSL (Ruby 2.x CI). Do not combine with +# ruby/setup-ruby `bundler-cache: true` — that action cats Gemfile.lock +# after `bundle lock` and fails when no file is written (Windows 3.2+, +# where setup-ruby installs Bundler ~> 4). +lockfile false if respond_to?(:lockfile) + gemspec # rake 13 requires Ruby >= 2.3 diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 8baee4d..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,22 +0,0 @@ -PATH - remote: . - specs: - recls-helpers-ruby (0.0.0) - recls-ruby (~> 2.13) - -GEM - remote: https://rubygems.org/ - specs: - recls-ruby (2.13.2) - xqsr3 (0.39.5) - -PLATFORMS - arm64-darwin-25 - ruby - -DEPENDENCIES - recls-helpers-ruby! - xqsr3 (~> 0.39) - -BUNDLED WITH - 2.6.9 diff --git a/NEWS.md b/NEWS.md index ff6ca18..9426404 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,9 @@ # recls-helpers.Ruby - News -| Date | News Item | -| ---------------- | ------------------------------------------------------------------------------------------------- | -| 16th August 2026 | [recls-helpers.Ruby 0.0.0 released](https://github.com/synesissoftware/recls-helpers.Ruby/releases/tag/0.0.0) | +| Date | News Item | +| ---------------- | -------------------------------------------------------------------------------------------------------- | +| 19th August 2026 | [**recls-helpers.Ruby** 0.0.1](https://github.com/synesissoftware/recls-helpers.Ruby/releases/tag/0.0.1) | +| 16th August 2026 | [**recls-helpers.Ruby** 0.0.0](https://github.com/synesissoftware/recls-helpers.Ruby/releases/tag/0.0.0) | diff --git a/README.md b/README.md index f428b82..18ed44f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ Helper types and functions for working with **recls.Ruby** ![Language](https://img.shields.io/badge/Ruby-CC342D?style=flat&logo=ruby&logoColor=white) [![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Gem Version](https://badge.fury.io/rb/recls-helpers-ruby.svg)](https://badge.fury.io/rb/recls-helpers-ruby) -[![GitHub release](https://img.shields.io/github/v/release/synesissoftware/recls-helpers.Ruby.svg)](https://github.com/synesissoftware/recls-helpers.Ruby/releases/latest) [![Last Commit](https://img.shields.io/github/last-commit/synesissoftware/recls-helpers.Ruby)](https://github.com/synesissoftware/recls-helpers.Ruby/commits/master) [![Ruby](https://github.com/synesissoftware/recls-helpers.Ruby/actions/workflows/ruby.yml/badge.svg)](https://github.com/synesissoftware/recls-helpers.Ruby/actions/workflows/ruby.yml) @@ -20,6 +19,12 @@ Helper types and functions for working with **recls.Ruby** - [Where to get help](#where-to-get-help) - [Contribution guidelines](#contribution-guidelines) - [Dependencies](#dependencies) + - [Efferent (fan-out)](#efferent-fan-out) + - [Runtime Dependencies (aka "Normal Dependencies")](#runtime-dependencies-aka-normal-dependencies) + - [Development Dependencies](#development-dependencies) + - [Afferent (fan-in)](#afferent-fan-in) + - [Runtime dependents](#runtime-dependents) + - [Development dependents](#development-dependents) - [Related projects](#related-projects) - [License](#license) @@ -59,7 +64,7 @@ require 'recls/helpers' ## Examples -Examples are provided in the `examples` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md). +Examples are provided in the ```examples``` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md). ## Project Information @@ -77,24 +82,47 @@ Defect reports, feature requests, and pull requests are welcome on https://githu ### Dependencies -This library has **efferent** (fan-out) dependencies on: -* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby) (`recls-ruby`); +#### Efferent (fan-out) -and, for development/tests: +Libraries upon which **recls-helpers.Ruby** depends: -* [**xqsr3**](https://github.com/synesissoftware/xqsr3/). -It has no known **afferent** (fan-in) dependencies yet. +##### Runtime Dependencies (aka "Normal Dependencies") + +* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby); + + +##### Development Dependencies + +* [**rake**](https://rubygems.org/gems/rake); +* [**test-unit**](https://rubygems.org/gems/test-unit); +* [**xqsr3**](https://github.com/synesissoftware/xqsr3); + + +#### Afferent (fan-in) + +Projects that depend on **recls-helpers.Ruby**: + + +##### Runtime dependents + +* \; + + +##### Development dependents + +* \; ### Related projects -* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby); -* [**recls**](https://github.com/synesissoftware/recls) (**C** / **C++**); -* [**recls.Go**](https://github.com/synesissoftware/recls.Go); -* [**recls.NET**](https://github.com/synesissoftware/recls.NET); -* [**recls.Rust**](https://github.com/synesissoftware/recls.Rust); +* [**recls**](https://github.com/synesissoftware/recls/); +* [**recls.Go**](https://github.com/synesissoftware/recls.Go/); +* [**recls.NET**](https://github.com/synesissoftware/recls.NET/); +* [**recls.Python**](https://github.com/synesissoftware/recls.Python/); +* [**recls.Ruby**](https://github.com/synesissoftware/recls.Ruby/); +* [**recls.Rust**](https://github.com/synesissoftware/recls.Rust/); ### License diff --git a/TODO.md b/TODO.md index 60d9010..6dcf86b 100644 --- a/TODO.md +++ b/TODO.md @@ -1,12 +1,6 @@ # recls-helpers.Ruby - TODO -## Table of Contents - -- [Functional improvements](#functional-improvements) -- [Packaging improvements](#packaging-improvements) - - ## Functional improvements * [ ] Ignore / exclude filtering (`strip_excludes` / `reject_ignored`, String + Regexp); @@ -16,10 +10,20 @@ * [ ] Stock Synesis ignore / pattern presets (optional); +## Performance improvements + +* \ + + ## Packaging improvements * [ ] Examples for first shipped helpers; -* [ ] Publish gem and GitHub release for **0.0.0**; +* [ ] Publish gem and GitHub release for **0.0.1**; +* [x] ~~~updated **run_all_unit_tests.sh** (from **misc-dev-scripts**) to skip `tput` when `$TERM` is unset or stdout is not a TTY~~~; +* [x] ~~~**Gemfile** `lockfile false`; stop tracking **Gemfile.lock**; CI `bundler-cache: false`~~~; +* [x] ~~~gemspec polish: README tagline as `spec.summary`, drop `< 4` upper bound, package docs, exclude **Gemfile.lock** / **.ruby-version**~~~; +* [x] ~~~README canonical structure (tagline before badges; **Dependencies**; CI badge → **ruby.yml**)~~~; +* [x] ~~~after the packaging/boilerplate/CI baseline: bump **VERSION** and align **CHANGES**/**NEWS**~~~; diff --git a/lib/recls/helpers.rb b/lib/recls/helpers.rb index b4b9abf..0e09f21 100644 --- a/lib/recls/helpers.rb +++ b/lib/recls/helpers.rb @@ -5,9 +5,9 @@ # Purpose: Top-level include for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 15th August 2026 +# Updated: 19th August 2026 # -# Home: http://github.com/synesissoftware/recls-helpers.Ruby +# Home: https://github.com/synesissoftware/recls-helpers.Ruby # # Author: Matthew Wilson # diff --git a/lib/recls/helpers/version.rb b/lib/recls/helpers/version.rb index 5d71235..c682ee2 100644 --- a/lib/recls/helpers/version.rb +++ b/lib/recls/helpers/version.rb @@ -5,9 +5,9 @@ # Purpose: Version for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 15th August 2026 +# Updated: 19th August 2026 # -# Home: http://github.com/synesissoftware/recls-helpers.Ruby +# Home: https://github.com/synesissoftware/recls-helpers.Ruby # # Author: Matthew Wilson # @@ -51,7 +51,7 @@ module Recls module Helpers # Current version of the recls-helpers.Ruby library - VERSION = '0.0.0' + VERSION = '0.0.1' private # @!visibility private diff --git a/recls-helpers-ruby.gemspec b/recls-helpers-ruby.gemspec index 26728e3..39ef82c 100644 --- a/recls-helpers-ruby.gemspec +++ b/recls-helpers-ruby.gemspec @@ -1,12 +1,12 @@ -# ######################################################################### # +# ######################################################################## # # File: recls-helpers-ruby.gemspec # # Purpose: Gemspec for recls-helpers.Ruby library # # Created: 14th August 2026 -# Updated: 15th August 2026 +# Updated: 19th August 2026 # -# ######################################################################### # +# ######################################################################## # $:.unshift File.join(File.dirname(__FILE__), 'lib') @@ -17,8 +17,8 @@ require 'recls/helpers/version' Gem::Specification.new do |spec| spec.name = 'recls-helpers-ruby' + spec.summary = 'Helper types and functions for working with recls.Ruby' spec.version = Recls::Helpers::VERSION - spec.summary = 'recls-helpers.Ruby' spec.description = <= 2.0', '< 4' ] + spec.required_ruby_version = [ '>= 2.0' ] + + spec.add_runtime_dependency "recls-ruby", [ '~> 2.13' ] + + spec.add_development_dependency "xqsr3", [ '>= 0.39.5', '< 1.0' ] spec.metadata = { 'bug_tracker_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby/issues', @@ -42,11 +46,25 @@ END_DESC 'source_code_uri' => 'https://github.com/synesissoftware/recls-helpers.Ruby', } - spec.add_runtime_dependency "recls-ruby", [ '~> 2.13' ] - - spec.add_development_dependency "xqsr3", [ '>= 0.39.5', '< 1.0' ] - - spec.files = Dir[ 'Rakefile', '{bin,examples,lib,man,spec,test}/**/*', 'README*', 'LICENSE*' ] & `git ls-files -z`.split("\0") + spec.files = Dir[ + 'Rakefile', + '{bin,examples,lib,man,spec,test}/**/*', + 'AUTHORS*', + 'CHANGES*', + 'CONTRIBUTING*', + 'EXAMPLES*', + 'FAQ*', + 'INSTALL*', + 'LICENSE*', + 'NEWS*', + 'README*', + 'SECURITY*', + 'TODO*', + ] & `git ls-files -z`.split("\0") + spec.files -= [ + '.ruby-version', + 'Gemfile.lock', + ] end diff --git a/run_all_unit_tests.sh b/run_all_unit_tests.sh index 6aea55b..0a05634 100755 --- a/run_all_unit_tests.sh +++ b/run_all_unit_tests.sh @@ -8,7 +8,7 @@ # executing each rbenv version # # Created: 9th June 2011 -# Updated: 12th August 2026 +# Updated: 19th August 2026 # # Copyright (c) Matthew Wilson, 2011-2026 # All rights reserved @@ -58,18 +58,20 @@ Basename="$(basename "$Source")" # colours -if command -v tput > /dev/null; then +SisClr_Blue=${FG_BLUE:-} +SisClr_Red=${FG_RED:-} +SisClr_Bold=${FD_BOLD:-} +SisClr_None=${FD_NONE:-} - SisClr_Blue=${FG_BLUE:-$(tput setaf 4)} - SisClr_Red=${FG_RED:-$(tput setaf 1)} - SisClr_Bold=${FD_BOLD:-$(tput bold)} - SisClr_None=${FD_NONE:-$(tput sgr0)} -else +if [ -n "${TERM:-}" ] && [ -t 1 ] && command -v tput >/dev/null 2>&1; then + + if tput sgr0 >/dev/null 2>&1; then - SisClr_Blue= - SisClr_Red= - SisClr_Bold= - SisClr_None= + SisClr_Blue=${FG_BLUE:-$(tput setaf 4)} + SisClr_Red=${FG_RED:-$(tput setaf 1)} + SisClr_Bold=${FD_BOLD:-$(tput bold)} + SisClr_None=${FD_NONE:-$(tput sgr0)} + fi fi @@ -115,19 +117,19 @@ if [ ! -z "$RunRbEnvAllVersions" ]; then if ! command -v rbenv > /dev/null; then - >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}rbenv${SisClr_None} not detected" + >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}rbenv${SisClr_None} not detected" - exit 1 + exit 1 fi exclusions=() if [ -e "$ProjectDir/.ruby-version-exclusions" ]; then - exclusion_lines=`cat "$ProjectDir/.ruby-version-exclusions"` - for line in $exclusion_lines; do + exclusion_lines=`cat "$ProjectDir/.ruby-version-exclusions"` + for line in $exclusion_lines; do - exclusions+=("$line") - done + exclusions+=("$line") + done fi echo "executing command line '${SisClr_Blue}${SisClr_Bold}$0 ${ForwardArgs[*]}${SisClr_None}' with all Ruby versions ..." @@ -138,11 +140,20 @@ if [ ! -z "$RunRbEnvAllVersions" ]; then current=$(tr -d '[:space:]' < "$ProjectDir/.ruby-version") fi + if ! version_output=$(rbenv versions --bare); then + + >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}failed to enumerate Ruby versions via rbenv${SisClr_None}" + exit 1 + fi + versions=() - while IFS= read -r line; do + if [ -n "$version_output" ]; then - versions+=("$line") - done < <(rbenv versions --bare) + while IFS= read -r line; do + + versions+=("$line") + done <<< "$version_output" + fi echo "versions: ${SisClr_Blue}${SisClr_Bold}${versions[*]}${SisClr_None}; skipped versions: ${SisClr_Blue}${SisClr_Bold}${exclusions[*]}${SisClr_None}; current version: ${SisClr_Blue}${SisClr_Bold}${current:-(none)}${SisClr_None}" @@ -151,32 +162,32 @@ if [ ! -z "$RunRbEnvAllVersions" ]; then for version in "${versions[@]}" do - echo + echo - skip= + skip= - for exclusion in "${exclusions[@]}"; do + for exclusion in "${exclusions[@]}"; do - if [[ "$exclusion" == "$version" ]]; then + if [[ "$exclusion" == "$version" ]]; then - skip=1 - fi - done + skip=1 + fi + done - if [ "$skip" != "" ]; then + if [ "$skip" != "" ]; then - echo "skipping Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" - else + echo "skipping Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" + else - echo "processing Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" + echo "processing Ruby version ${SisClr_Blue}${SisClr_Bold}$version${SisClr_None}:" - echo -e "\texecuting command line 'RBENV_VERSION=$version $0 ${ForwardArgs[*]}' with Ruby version $version ..." + echo -e "\texecuting command line 'RBENV_VERSION=$version $0 ${ForwardArgs[*]}' with Ruby version $version ..." - if ! RBENV_VERSION="$version" "$0" "${ForwardArgs[@]}"; then + if ! RBENV_VERSION="$version" "$0" "${ForwardArgs[@]}"; then - result=1 + result=1 + fi fi - fi done exit $result @@ -275,13 +286,24 @@ else result=0 + test_files=$(mktemp "${TMPDIR:-/tmp}/run_all_unit_tests.XXXXXX") || { + >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}failed to create temporary file for test discovery${SisClr_None}" + exit 1 + } + trap 'rm -f "$test_files"' EXIT + + if ! find "$ProjectDir" -name 'tc_*.rb' -print0 > "$test_files"; then + >&2 echo "$0: ${SisClr_Red}${SisClr_Bold}failed to discover test files${SisClr_None}" + exit 1 + fi + while IFS= read -r -d '' testfile; do if ! ruby $DebugFlag $WarningsFlag "$testfile"; then result=1 fi - done < <(find "$ProjectDir" -name 'tc_*.rb' -print0) + done < "$test_files" exit $result fi From ec2f62a16e248200307c0980d858fee58cd7f76f Mon Sep 17 00:00:00 2001 From: Matt Wilson Date: Thu, 20 Aug 2026 20:21:00 +1000 Subject: [PATCH 35/35] squash-commit --- .github/workflows/ruby.yml | 10 +++++----- EXAMPLES.md | 4 ++-- Gemfile.lock | 28 ++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 Gemfile.lock diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 633c3b3..1837863 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -67,7 +67,7 @@ jobs: steps: - name: Checking out code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Remove Gemfile.lock shell: bash @@ -77,9 +77,9 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} - # Bundler 4 honours Gemfile `lockfile false`, so no Gemfile.lock - # is written. bundler-cache cats that file after `bundle lock` - # and fails on Windows 3.2+ (setup-ruby installs Bundler ~> 4). + # Bundler 4 honours Gemfile `lockfile false`, so no Gemfile.lock is + # written. bundler-cache cats that file after `bundle lock` and + # fails on Windows 3.2+ (setup-ruby installs Bundler ~> 4). bundler-cache: false - name: Install gems @@ -106,7 +106,7 @@ jobs: steps: - name: Checking out code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Remove Gemfile.lock shell: bash diff --git a/EXAMPLES.md b/EXAMPLES.md index 4961e5a..f100923 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -1,7 +1,7 @@ # recls-helpers.Ruby - Examples -|Name|Source & Description|Summary| -|---|---|---| +| Name | Source & Description | Summary | +| ---- | -------------------- | ------- | diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..4b7361a --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,28 @@ +PATH + remote: . + specs: + recls-helpers-ruby (0.0.1) + recls-ruby (~> 2.13) + +GEM + remote: https://rubygems.org/ + specs: + power_assert (3.1.0) + rake (13.4.2) + recls-ruby (2.13.4) + test-unit (3.7.8) + power_assert + xqsr3 (0.39.5) + +PLATFORMS + arm64-darwin-25 + ruby + +DEPENDENCIES + rake (~> 13.0) + recls-helpers-ruby! + test-unit (~> 3.0) + xqsr3 (>= 0.39.5, < 1.0) + +BUNDLED WITH + 2.6.9