Add standard

This commit is contained in:
0x1eef 2024-05-12 00:59:38 -03:00
parent 9942c6e6bc
commit 8fd14f1856
22 changed files with 152 additions and 32 deletions

36
.rubocop.yml Normal file
View file

@ -0,0 +1,36 @@
##
# Plugins
require:
- standard
##
# Defaults: standard-rb
inherit_gem:
standard: config/base.yml
##
# All cops
AllCops:
TargetRubyVersion: 3.2
Include:
- lib/*.rb
- lib/**/*.rb
- test/*.rb
- test/**/*.rb
- share/bsdcontrol.rb/examples/*.rb
##
# Enabled
Style/FrozenStringLiteralComment:
Enabled: true
##
# Disabled
Layout/ArgumentAlignment:
Enabled: false
Layout/MultilineMethodCallIndentation:
Enabled: false
Layout/EmptyLineBetweenDefs:
Enabled: false
Style/TrivialAccessors:
Enabled: false

View file

@ -1,2 +1,4 @@
source "https://rubygems.org"
# frozen_string_literal: true
source 'https://rubygems.org'
gemspec

View file

@ -6,13 +6,55 @@ PATH
GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
json (2.7.2)
language_server-protocol (3.17.0.3)
lint_roller (1.1.0)
parallel (1.24.0)
parser (3.3.1.0)
ast (~> 2.4.1)
racc
power_assert (2.0.3)
racc (1.7.3)
rainbow (3.1.1)
rake (13.1.0)
rake-compiler (1.2.7)
rake
regexp_parser (2.9.1)
rexml (3.2.6)
rubocop (1.62.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3)
parser (>= 3.3.1.0)
rubocop-performance (1.20.2)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (1.13.0)
standard (1.35.1)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.0)
rubocop (~> 1.62.0)
standard-custom (~> 1.0.0)
standard-performance (~> 1.3)
standard-custom (1.0.2)
lint_roller (~> 1.0)
rubocop (~> 1.50)
standard-performance (1.3.1)
lint_roller (~> 1.1)
rubocop-performance (~> 1.20.2)
test-cmd.rb (0.8.0)
test-unit (3.6.2)
power_assert
unicode-display_width (2.5.0)
PLATFORMS
amd64-freebsd-14
@ -21,6 +63,7 @@ PLATFORMS
DEPENDENCIES
bsdcontrol.rb!
rake-compiler (~> 1.2)
standard (~> 1.35)
test-cmd.rb (~> 0.8)
test-unit (~> 3.6)

View file

@ -1,23 +1,25 @@
require "bundler/setup"
require "rake/extensiontask"
Rake::ExtensionTask.new("bsdcontrol.rb")
# frozen_string_literal: true
require 'bundler/setup'
require 'rake/extensiontask'
Rake::ExtensionTask.new('bsdcontrol.rb')
task default: %w[clobber compile test]
namespace :clang do
desc "Run clang-format"
desc 'Run clang-format'
task :format do
sh "clang-format -style=file:.clang-format -i ext/bsdcontrol.rb/*.c"
sh 'clang-format -style=file:.clang-format -i ext/bsdcontrol.rb/*.c'
end
end
namespace :test do
desc "Run unprivileged tests"
desc 'Run unprivileged tests'
task :unprivileged do
sh "./bin/run-unprivileged-tests"
sh './bin/run-unprivileged-tests'
end
desc "Run superuser tests"
desc 'Run superuser tests'
task :superuser do
sh "./bin/run-superuser-tests"
sh './bin/run-superuser-tests'
end
end

View file

@ -1,17 +1,21 @@
require_relative "lib/bsd/control/version"
# frozen_string_literal: true
require 'English'
require_relative 'lib/bsd/control/version'
Gem::Specification.new do |gem|
gem.name = "bsdcontrol.rb"
gem.authors = ["0x1eef"]
gem.email = ["0x1eef@protonmail.com"]
gem.homepage = "https://git.hardenedbsd.org/0x1eef/bsdcontrol.rb#readme"
gem.name = 'bsdcontrol.rb'
gem.authors = ['0x1eef']
gem.email = ['0x1eef@protonmail.com']
gem.homepage = 'https://git.hardenedbsd.org/0x1eef/bsdcontrol.rb#readme'
gem.version = BSD::Control::VERSION
gem.licenses = ["0BSD"]
gem.files = `git ls-files`.split($/)
gem.require_paths = ["lib"]
gem.licenses = ['0BSD']
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
gem.require_paths = ['lib']
gem.extensions = %w[ext/bsdcontrol.rb/extconf.rb]
gem.summary = "Ruby bindings for libhbsdcontrol"
gem.summary = 'Ruby bindings for libhbsdcontrol'
gem.description = gem.summary
gem.add_development_dependency "rake-compiler", "~> 1.2"
gem.add_development_dependency "test-unit", "~> 3.6"
gem.add_development_dependency "test-cmd.rb", "~> 0.8"
gem.add_development_dependency 'rake-compiler', '~> 1.2'
gem.add_development_dependency 'standard', '~> 1.35'
gem.add_development_dependency 'test-cmd.rb', '~> 0.8'
gem.add_development_dependency 'test-unit', '~> 3.6'
end

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module BSD::Control
require_relative "control/context"
require_relative "control/feature"
@ -40,6 +42,6 @@ module BSD::Control
# Returns an instance of {BSD::Control::Feature BSD::Control::Feature}.
def self.feature(name)
feature = available_features.find { _1.name == name.to_s }
feature ? feature : raise(Error, "feature '#{name}' wasn't found")
feature || raise(Error, "feature '#{name}' wasn't found")
end
end

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module BSD::Control
##
# The {BSD::Control::Context BSD::Control::Context} class encapsulates

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module BSD::Control
class Feature < Struct.new(:name, :context)
##

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module BSD
module Control
VERSION = "0.1.1"

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module BSD
require_relative "bsd/control"
require_relative "bsdcontrol.rb.so"

2
share/bsdcontrol.rb/examples/1_available_features.rb Normal file → Executable file
View file

@ -1,4 +1,6 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
# Required privileges: user, superuser
require "bsdcontrol"
BSD::Control

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require_relative "setup"
class ReadmeExamplesTest < Test::Unit::TestCase
@ -5,14 +7,14 @@ class ReadmeExamplesTest < Test::Unit::TestCase
require "test/cmd"
def test_available_features
result = cmd(RbConfig.ruby, readme_example('1_available_features.rb'))
result = cmd(RbConfig.ruby, readme_example("1_available_features.rb"))
assert_equal true, result.status.success?
result.each_line { assert_match %r|The [a-zA-Z0-9_]+ feature is available|, _1 }
result.each_line { assert_match %r{The [a-zA-Z0-9_]+ feature is available}, _1 }
end
private
def readme_example(name)
File.join(Dir.getwd, 'share', 'bsdcontrol.rb', 'examples', name)
File.join(Dir.getwd, "share", "bsdcontrol.rb", "examples", name)
end
end

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require "bundler/setup"
require "test/unit"
require "bsdcontrol"

View file

@ -1,7 +1,9 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class DisableFeatureTest < Test::Unit::TestCase
require 'fileutils'
require "fileutils"
include FileUtils
def test_disable_pageexec

View file

@ -1,7 +1,9 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class EnableFeatureTest < Test::Unit::TestCase
require 'fileutils'
require "fileutils"
include FileUtils
def test_enable_pageexec

View file

@ -1,7 +1,9 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class FeatureStatusTest < Test::Unit::TestCase
require 'fileutils'
require "fileutils"
include FileUtils
def test_pageexec_sysdef_status
@ -21,7 +23,6 @@ module BSD::Control
rm(file)
end
def test_pageexec_disabled_status
touch(file)
BSD::Control.feature(:pageexec).disable!(file)

View file

@ -1,7 +1,9 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class SysDefFeatureTest < Test::Unit::TestCase
require 'fileutils'
require "fileutils"
include FileUtils
def test_sysdef_pageexec

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class AvailableFeaturesTest < Test::Unit::TestCase

View file

@ -1,7 +1,9 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class DisableFeatureTest < Test::Unit::TestCase
require 'fileutils'
require "fileutils"
include FileUtils
def test_disable_pageexec_nonexistent_file

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class EnableFeatureTest < Test::Unit::TestCase

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class FeatureTest < Test::Unit::TestCase

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require_relative "../setup"
module BSD::Control
class SysDefTest < Test::Unit::TestCase