Add standard
This commit is contained in:
parent
9942c6e6bc
commit
8fd14f1856
22 changed files with 152 additions and 32 deletions
36
.rubocop.yml
Normal file
36
.rubocop.yml
Normal 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
|
4
Gemfile
4
Gemfile
|
@ -1,2 +1,4 @@
|
||||||
source "https://rubygems.org"
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
source 'https://rubygems.org'
|
||||||
gemspec
|
gemspec
|
||||||
|
|
43
Gemfile.lock
43
Gemfile.lock
|
@ -6,13 +6,55 @@ PATH
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
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)
|
power_assert (2.0.3)
|
||||||
|
racc (1.7.3)
|
||||||
|
rainbow (3.1.1)
|
||||||
rake (13.1.0)
|
rake (13.1.0)
|
||||||
rake-compiler (1.2.7)
|
rake-compiler (1.2.7)
|
||||||
rake
|
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-cmd.rb (0.8.0)
|
||||||
test-unit (3.6.2)
|
test-unit (3.6.2)
|
||||||
power_assert
|
power_assert
|
||||||
|
unicode-display_width (2.5.0)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
amd64-freebsd-14
|
amd64-freebsd-14
|
||||||
|
@ -21,6 +63,7 @@ PLATFORMS
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
bsdcontrol.rb!
|
bsdcontrol.rb!
|
||||||
rake-compiler (~> 1.2)
|
rake-compiler (~> 1.2)
|
||||||
|
standard (~> 1.35)
|
||||||
test-cmd.rb (~> 0.8)
|
test-cmd.rb (~> 0.8)
|
||||||
test-unit (~> 3.6)
|
test-unit (~> 3.6)
|
||||||
|
|
||||||
|
|
20
Rakefile.rb
20
Rakefile.rb
|
@ -1,23 +1,25 @@
|
||||||
require "bundler/setup"
|
# frozen_string_literal: true
|
||||||
require "rake/extensiontask"
|
|
||||||
Rake::ExtensionTask.new("bsdcontrol.rb")
|
require 'bundler/setup'
|
||||||
|
require 'rake/extensiontask'
|
||||||
|
Rake::ExtensionTask.new('bsdcontrol.rb')
|
||||||
task default: %w[clobber compile test]
|
task default: %w[clobber compile test]
|
||||||
|
|
||||||
namespace :clang do
|
namespace :clang do
|
||||||
desc "Run clang-format"
|
desc 'Run clang-format'
|
||||||
task :format do
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
namespace :test do
|
namespace :test do
|
||||||
desc "Run unprivileged tests"
|
desc 'Run unprivileged tests'
|
||||||
task :unprivileged do
|
task :unprivileged do
|
||||||
sh "./bin/run-unprivileged-tests"
|
sh './bin/run-unprivileged-tests'
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Run superuser tests"
|
desc 'Run superuser tests'
|
||||||
task :superuser do
|
task :superuser do
|
||||||
sh "./bin/run-superuser-tests"
|
sh './bin/run-superuser-tests'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -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::Specification.new do |gem|
|
||||||
gem.name = "bsdcontrol.rb"
|
gem.name = 'bsdcontrol.rb'
|
||||||
gem.authors = ["0x1eef"]
|
gem.authors = ['0x1eef']
|
||||||
gem.email = ["0x1eef@protonmail.com"]
|
gem.email = ['0x1eef@protonmail.com']
|
||||||
gem.homepage = "https://git.hardenedbsd.org/0x1eef/bsdcontrol.rb#readme"
|
gem.homepage = 'https://git.hardenedbsd.org/0x1eef/bsdcontrol.rb#readme'
|
||||||
gem.version = BSD::Control::VERSION
|
gem.version = BSD::Control::VERSION
|
||||||
gem.licenses = ["0BSD"]
|
gem.licenses = ['0BSD']
|
||||||
gem.files = `git ls-files`.split($/)
|
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
||||||
gem.require_paths = ["lib"]
|
gem.require_paths = ['lib']
|
||||||
gem.extensions = %w[ext/bsdcontrol.rb/extconf.rb]
|
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.description = gem.summary
|
||||||
gem.add_development_dependency "rake-compiler", "~> 1.2"
|
gem.add_development_dependency 'rake-compiler', '~> 1.2'
|
||||||
gem.add_development_dependency "test-unit", "~> 3.6"
|
gem.add_development_dependency 'standard', '~> 1.35'
|
||||||
gem.add_development_dependency "test-cmd.rb", "~> 0.8"
|
gem.add_development_dependency 'test-cmd.rb', '~> 0.8'
|
||||||
|
gem.add_development_dependency 'test-unit', '~> 3.6'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
require_relative "control/context"
|
require_relative "control/context"
|
||||||
require_relative "control/feature"
|
require_relative "control/feature"
|
||||||
|
@ -40,6 +42,6 @@ module BSD::Control
|
||||||
# Returns an instance of {BSD::Control::Feature BSD::Control::Feature}.
|
# Returns an instance of {BSD::Control::Feature BSD::Control::Feature}.
|
||||||
def self.feature(name)
|
def self.feature(name)
|
||||||
feature = available_features.find { _1.name == name.to_s }
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
##
|
##
|
||||||
# The {BSD::Control::Context BSD::Control::Context} class encapsulates
|
# The {BSD::Control::Context BSD::Control::Context} class encapsulates
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class Feature < Struct.new(:name, :context)
|
class Feature < Struct.new(:name, :context)
|
||||||
##
|
##
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module BSD
|
module BSD
|
||||||
module Control
|
module Control
|
||||||
VERSION = "0.1.1"
|
VERSION = "0.1.1"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module BSD
|
module BSD
|
||||||
require_relative "bsd/control"
|
require_relative "bsd/control"
|
||||||
require_relative "bsdcontrol.rb.so"
|
require_relative "bsdcontrol.rb.so"
|
||||||
|
|
2
share/bsdcontrol.rb/examples/1_available_features.rb
Normal file → Executable file
2
share/bsdcontrol.rb/examples/1_available_features.rb
Normal file → Executable file
|
@ -1,4 +1,6 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# Required privileges: user, superuser
|
# Required privileges: user, superuser
|
||||||
require "bsdcontrol"
|
require "bsdcontrol"
|
||||||
BSD::Control
|
BSD::Control
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "setup"
|
require_relative "setup"
|
||||||
|
|
||||||
class ReadmeExamplesTest < Test::Unit::TestCase
|
class ReadmeExamplesTest < Test::Unit::TestCase
|
||||||
|
@ -5,14 +7,14 @@ class ReadmeExamplesTest < Test::Unit::TestCase
|
||||||
require "test/cmd"
|
require "test/cmd"
|
||||||
|
|
||||||
def test_available_features
|
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?
|
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
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def readme_example(name)
|
def readme_example(name)
|
||||||
File.join(Dir.getwd, 'share', 'bsdcontrol.rb', 'examples', name)
|
File.join(Dir.getwd, "share", "bsdcontrol.rb", "examples", name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "bundler/setup"
|
require "bundler/setup"
|
||||||
require "test/unit"
|
require "test/unit"
|
||||||
require "bsdcontrol"
|
require "bsdcontrol"
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class DisableFeatureTest < Test::Unit::TestCase
|
class DisableFeatureTest < Test::Unit::TestCase
|
||||||
require 'fileutils'
|
require "fileutils"
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
|
||||||
def test_disable_pageexec
|
def test_disable_pageexec
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class EnableFeatureTest < Test::Unit::TestCase
|
class EnableFeatureTest < Test::Unit::TestCase
|
||||||
require 'fileutils'
|
require "fileutils"
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
|
||||||
def test_enable_pageexec
|
def test_enable_pageexec
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class FeatureStatusTest < Test::Unit::TestCase
|
class FeatureStatusTest < Test::Unit::TestCase
|
||||||
require 'fileutils'
|
require "fileutils"
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
|
||||||
def test_pageexec_sysdef_status
|
def test_pageexec_sysdef_status
|
||||||
|
@ -21,7 +23,6 @@ module BSD::Control
|
||||||
rm(file)
|
rm(file)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_pageexec_disabled_status
|
def test_pageexec_disabled_status
|
||||||
touch(file)
|
touch(file)
|
||||||
BSD::Control.feature(:pageexec).disable!(file)
|
BSD::Control.feature(:pageexec).disable!(file)
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class SysDefFeatureTest < Test::Unit::TestCase
|
class SysDefFeatureTest < Test::Unit::TestCase
|
||||||
require 'fileutils'
|
require "fileutils"
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
|
||||||
def test_sysdef_pageexec
|
def test_sysdef_pageexec
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class AvailableFeaturesTest < Test::Unit::TestCase
|
class AvailableFeaturesTest < Test::Unit::TestCase
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class DisableFeatureTest < Test::Unit::TestCase
|
class DisableFeatureTest < Test::Unit::TestCase
|
||||||
require 'fileutils'
|
require "fileutils"
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
|
||||||
def test_disable_pageexec_nonexistent_file
|
def test_disable_pageexec_nonexistent_file
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class EnableFeatureTest < Test::Unit::TestCase
|
class EnableFeatureTest < Test::Unit::TestCase
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class FeatureTest < Test::Unit::TestCase
|
class FeatureTest < Test::Unit::TestCase
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "../setup"
|
require_relative "../setup"
|
||||||
module BSD::Control
|
module BSD::Control
|
||||||
class SysDefTest < Test::Unit::TestCase
|
class SysDefTest < Test::Unit::TestCase
|
||||||
|
|
Loading…
Reference in a new issue