Added some initial project structure and supporting tooling
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-08-30 10:05:55 -04:00
parent 26897dd544
commit bfd2c98344
7 changed files with 192 additions and 0 deletions

24
.rubocop.yml Normal file
View File

@@ -0,0 +1,24 @@
plugins:
- rubocop-rspec
AllCops:
NewCops: enable
Layout/EmptyLinesAroundClassBody:
EnforcedStyle: 'empty_lines_except_namespace'
Layout/EmptyLinesAroundModuleBody:
EnforcedStyle: 'empty_lines_except_namespace'
Layout/FirstHashElementIndentation:
EnforcedStyle: 'consistent'
Metrics/ClassLength:
Max: 150
Style/ClassVars:
Enabled: false
Style/GlobalVars:
Enabled: false
Style/MethodCallWithoutArgsParentheses:
Enabled: false
Style/MethodCallWithArgsParentheses:
Enabled: true
Style/RedundantReturn:
Enabled: false

39
.woodpecker.yml Normal file
View File

@@ -0,0 +1,39 @@
steps:
setup:
image: ruby:3.4
env:
RACK_ENV: testing
commands:
- gem install rake
- bundle config set --local path "vendor/bundle"
- bundle install
test_ruby34:
image: ruby:3.4
env:
RACK_ENV: testing
commands:
- gem install rake
- bundle config set --local path "vendor/bundle"
- rake test:unit
group: tests
style:
image: ruby:3.4
env:
RACK_ENV: testing
commands:
- gem install rake
- bundle config set --local path "vendor/bundle"
- rake test:lint
gitea_release:
image: plugins/gitea-release
settings:
api_key:
from_secret: gitea_api_key
base_url: https://git.metaunix.net
title: "${CI_COMMIT_TAG}"
when:
event:
- tag

14
Gemfile Normal file
View File

@@ -0,0 +1,14 @@
source 'https://rubygems.org'
gem 'thor', '~> 1.3'
gem 'logger'
group :development, :test do
# rubocop and extensions for code style
gem 'rubocop'
gem 'rubocop-rspec'
# rspec for unit testing
gem 'rspec'
end

66
Gemfile.lock Normal file
View File

@@ -0,0 +1,66 @@
GEM
remote: https://rubygems.org/
specs:
ast (2.4.3)
diff-lcs (1.6.2)
json (2.13.2)
language_server-protocol (3.17.0.5)
lint_roller (1.1.0)
logger (1.7.0)
parallel (1.27.0)
parser (3.3.9.0)
ast (~> 2.4.1)
racc
prism (1.4.0)
racc (1.8.1)
rainbow (3.1.1)
regexp_parser (2.11.2)
rspec (3.13.1)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.5)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.5)
rubocop (1.80.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.46.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.46.0)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-rspec (3.6.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
ruby-progressbar (1.13.0)
thor (1.4.0)
unicode-display_width (3.1.5)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
PLATFORMS
ruby
x86_64-linux-gnu
DEPENDENCIES
logger
rspec
rubocop
rubocop-rspec
thor (~> 1.3)
BUNDLED WITH
2.6.9

12
Rakefile Normal file
View File

@@ -0,0 +1,12 @@
require 'bundler/setup'
namespace :test do
task :unit do
ENV['RACK_ENV'] = 'testing'
system('rspec')
end
task :lint do
system('rubocop src/ spec/')
end
end

12
src/cmd/network.rb Normal file
View File

@@ -0,0 +1,12 @@
# frozen_string_literal: true
require 'thor'
class Network < Thor
desc 'print', 'Prints the network subcommand.'
def print()
puts 'This is the network subcommand'
end
end

25
src/main.rb Normal file
View File

@@ -0,0 +1,25 @@
# frozen_string_literal: true
#!/usr/bin/env ruby
require 'bundler/setup'
require 'thor'
module PCHWBM
require_relative 'cmd/network'
class CLI < Thor
desc 'version', 'Prints the application version.'
def version()
puts 'PC Hardware Benchmark CLI app v0.1.0.'
end
desc 'network', 'network SUBCOMMAND for testing networking components.'
subcommand 'network', Network
end
end
PCHWBM::CLI.start(ARGV)