pragmater 9.1.2 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.adoc +207 -155
- data/README.adoc +23 -49
- data/{bin → exe}/pragmater +0 -0
- data/lib/pragmater/cli/actions/config.rb +35 -0
- data/lib/pragmater/cli/actions/run.rb +23 -0
- data/lib/pragmater/cli/parser.rb +31 -0
- data/lib/pragmater/cli/parsers/core.rb +70 -0
- data/lib/pragmater/cli/parsers/flag.rb +46 -0
- data/lib/pragmater/cli/shell.rb +22 -41
- data/lib/pragmater/configuration/content.rb +23 -0
- data/lib/pragmater/configuration/defaults.yml +3 -0
- data/lib/pragmater/configuration/loader.rb +35 -0
- data/lib/pragmater/container.rb +37 -0
- data/lib/pragmater/formatters/main.rb +2 -3
- data/lib/pragmater/identity.rb +1 -1
- data/lib/pragmater/parsers/comments.rb +3 -9
- data/lib/pragmater/processors/handler.rb +1 -3
- data/lib/pragmater/runner.rb +18 -10
- data/lib/pragmater.rb +9 -18
- data.tar.gz.sig +0 -0
- metadata +49 -18
- metadata.gz.sig +0 -0
- data/lib/pragmater/cli/options/assembler.rb +0 -45
- data/lib/pragmater/cli/options/configuration.rb +0 -37
- data/lib/pragmater/cli/options/core.rb +0 -56
- data/lib/pragmater/cli/options/defaults.yml +0 -6
- data/lib/pragmater/cli/options/insert_remove.rb +0 -38
- data/lib/pragmater/cli/options/merger.rb +0 -52
- data/lib/pragmater/context.rb +0 -14
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Pragmater
|
6
|
+
module CLI
|
7
|
+
module Parsers
|
8
|
+
# Handles parsing of Command Line Interface (CLI) core options.
|
9
|
+
class Core
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration = Container[:configuration], client: Parser::CLIENT
|
15
|
+
@configuration = configuration
|
16
|
+
@client = client
|
17
|
+
end
|
18
|
+
|
19
|
+
def call arguments = []
|
20
|
+
client.banner = "#{Identity::LABEL} - #{Identity::SUMMARY}"
|
21
|
+
client.separator "\nUSAGE:\n"
|
22
|
+
collate
|
23
|
+
client.parse arguments
|
24
|
+
configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :configuration, :client
|
30
|
+
|
31
|
+
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
32
|
+
|
33
|
+
def add_config
|
34
|
+
client.on "-c",
|
35
|
+
"--config ACTION",
|
36
|
+
%i[edit view],
|
37
|
+
"Manage gem configuration: edit or view." do |action|
|
38
|
+
configuration.merge! action_config: action
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_insert
|
43
|
+
client.on "-i", "--insert [PATH]", %(Insert pragmas. Default: "#{root_dir}".) do |path|
|
44
|
+
configuration.merge! action_insert: true, root_dir: path || root_dir
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_remove
|
49
|
+
client.on "-r", "--remove [PATH]", %(Remove pragmas. Default: "#{root_dir}".) do |path|
|
50
|
+
configuration.merge! action_remove: true, root_dir: path || root_dir
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_version
|
55
|
+
client.on "-v", "--version", "Show gem version." do
|
56
|
+
configuration.merge! action_version: true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_help
|
61
|
+
client.on "-h", "--help", "Show this message." do
|
62
|
+
configuration.merge! action_help: true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def root_dir = configuration.root_dir
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Pragmater
|
6
|
+
module CLI
|
7
|
+
module Parsers
|
8
|
+
# Parses common command line flags.
|
9
|
+
class Flag
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration = Container[:configuration], client: Parser::CLIENT
|
15
|
+
@configuration = configuration
|
16
|
+
@client = client
|
17
|
+
end
|
18
|
+
|
19
|
+
def call arguments = []
|
20
|
+
client.separator "\nOPTIONS:\n"
|
21
|
+
collate
|
22
|
+
client.parse arguments
|
23
|
+
configuration
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
attr_reader :configuration, :client
|
29
|
+
|
30
|
+
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
31
|
+
|
32
|
+
def add_comments
|
33
|
+
client.on "--comments a,b,c", Array, "Add pragma comments. Default: []." do |comments|
|
34
|
+
configuration.merge! comments:
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_includes
|
39
|
+
client.on "--includes a,b,c", Array, "Add include patterns. Default: []." do |includes|
|
40
|
+
configuration.merge! includes:
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/pragmater/cli/shell.rb
CHANGED
@@ -2,61 +2,42 @@
|
|
2
2
|
|
3
3
|
module Pragmater
|
4
4
|
module CLI
|
5
|
-
# The
|
5
|
+
# The main Command Line Interface (CLI) object.
|
6
6
|
class Shell
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
@
|
7
|
+
ACTIONS = {config: Actions::Config.new, run: Actions::Run.new}.freeze
|
8
|
+
|
9
|
+
def initialize parser: Parser.new, actions: ACTIONS, container: Container
|
10
|
+
@parser = parser
|
11
|
+
@actions = actions
|
12
|
+
@container = container
|
11
13
|
end
|
12
14
|
|
13
15
|
def call arguments = []
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
in config:, edit:, **remainder then edit_configuration
|
18
|
-
in config:, info:, **remainder then print_configuration
|
19
|
-
in version:, **remainder then print_version
|
20
|
-
else print_usage
|
21
|
-
end
|
16
|
+
perform parser.call(arguments)
|
17
|
+
rescue OptionParser::ParseError => error
|
18
|
+
logger.error { error.message }
|
22
19
|
end
|
23
20
|
|
24
21
|
private
|
25
22
|
|
26
|
-
attr_reader :
|
27
|
-
|
28
|
-
def insert_pragmas options, path
|
29
|
-
runner.for(**options.merge(action: :insert, root_dir: path))
|
30
|
-
.call
|
31
|
-
.map { |file| helper.info "Processed: #{file}." }
|
32
|
-
end
|
33
|
-
|
34
|
-
def remove_pragmas options, path
|
35
|
-
runner.for(**options.merge(action: :remove, root_dir: path))
|
36
|
-
.call
|
37
|
-
.map { |file| helper.info "Processed: #{file}." }
|
38
|
-
end
|
23
|
+
attr_reader :parser, :actions, :container
|
39
24
|
|
40
|
-
def
|
41
|
-
|
25
|
+
def perform configuration
|
26
|
+
case configuration
|
27
|
+
in action_config: Symbol => action then config action
|
28
|
+
in {action_insert: true} | {action_remove: true} then run configuration
|
29
|
+
in action_version: true then logger.info Identity::VERSION_LABEL
|
30
|
+
else usage
|
31
|
+
end
|
42
32
|
end
|
43
33
|
|
44
|
-
def
|
45
|
-
merger.configuration_path.then do |path|
|
46
|
-
return helper.info "No configuration found." unless path
|
34
|
+
def config(action) = actions.fetch(__method__).call(action)
|
47
35
|
|
48
|
-
|
49
|
-
helper.info path.read
|
50
|
-
end
|
51
|
-
end
|
36
|
+
def run(configuration) = actions.fetch(__method__).call(configuration)
|
52
37
|
|
53
|
-
def
|
54
|
-
helper.info Identity::VERSION_LABEL
|
55
|
-
end
|
38
|
+
def usage = logger.unknown(parser.to_s)
|
56
39
|
|
57
|
-
def
|
58
|
-
helper.info merger.usage
|
59
|
-
end
|
40
|
+
def logger = container[__method__]
|
60
41
|
end
|
61
42
|
end
|
62
43
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Pragmater
|
4
|
+
module Configuration
|
5
|
+
# Defines the content of the configuration for use throughout the gem.
|
6
|
+
Content = Struct.new(
|
7
|
+
:action_config,
|
8
|
+
:action_help,
|
9
|
+
:action_insert,
|
10
|
+
:action_remove,
|
11
|
+
:action_version,
|
12
|
+
:comments,
|
13
|
+
:includes,
|
14
|
+
:root_dir,
|
15
|
+
keyword_init: true
|
16
|
+
) do
|
17
|
+
def initialize *arguments
|
18
|
+
super
|
19
|
+
freeze
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "pathname"
|
4
|
+
require "refinements/hashes"
|
5
|
+
require "refinements/structs"
|
6
|
+
require "runcom"
|
7
|
+
require "yaml"
|
8
|
+
|
9
|
+
module Pragmater
|
10
|
+
module Configuration
|
11
|
+
# Represents the fully assembled Command Line Interface (CLI) configuration.
|
12
|
+
class Loader
|
13
|
+
using Refinements::Hashes
|
14
|
+
using Refinements::Structs
|
15
|
+
|
16
|
+
DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
|
17
|
+
CLIENT = Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS
|
18
|
+
|
19
|
+
def self.call = new.call
|
20
|
+
|
21
|
+
def self.with_defaults = new(client: DEFAULTS)
|
22
|
+
|
23
|
+
def initialize content: Content.new, client: CLIENT
|
24
|
+
@content = content
|
25
|
+
@client = client
|
26
|
+
end
|
27
|
+
|
28
|
+
def call = content.merge(**client.to_h.flatten_keys)
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_reader :content, :client
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry-container"
|
4
|
+
require "logger"
|
5
|
+
require "pastel"
|
6
|
+
|
7
|
+
module Pragmater
|
8
|
+
# Provides a global gem container for injection into other objects.
|
9
|
+
module Container
|
10
|
+
extend Dry::Container::Mixin
|
11
|
+
|
12
|
+
register(:configuration) { Configuration::Loader.call }
|
13
|
+
register(:colorizer) { Pastel.new enabled: $stdout.tty? }
|
14
|
+
register(:kernel) { Kernel }
|
15
|
+
|
16
|
+
register :log_colors do
|
17
|
+
{
|
18
|
+
"DEBUG" => self[:colorizer].white.detach,
|
19
|
+
"INFO" => self[:colorizer].green.detach,
|
20
|
+
"WARN" => self[:colorizer].yellow.detach,
|
21
|
+
"ERROR" => self[:colorizer].red.detach,
|
22
|
+
"FATAL" => self[:colorizer].white.bold.on_red.detach,
|
23
|
+
"ANY" => self[:colorizer].white.bold.detach
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
register :logger do
|
28
|
+
Logger.new $stdout,
|
29
|
+
level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
|
30
|
+
formatter: (
|
31
|
+
lambda do |severity, _at, _name, message|
|
32
|
+
self[:log_colors][severity].call "#{message}\n"
|
33
|
+
end
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -5,6 +5,7 @@ module Pragmater
|
|
5
5
|
# Formats all pragmas in a consistent manner.
|
6
6
|
class Main
|
7
7
|
FORMATTERS = [General, Shebang].freeze
|
8
|
+
|
8
9
|
PATTERN = FORMATTERS.map { |formatter| formatter::PATTERN }
|
9
10
|
.then { |patterns| Regexp.union(*patterns) }
|
10
11
|
.freeze
|
@@ -14,9 +15,7 @@ module Pragmater
|
|
14
15
|
@formatters = formatters
|
15
16
|
end
|
16
17
|
|
17
|
-
def call
|
18
|
-
formatters.reduce(string) { |pragma, formatter| formatter.new(pragma).call }
|
19
|
-
end
|
18
|
+
def call = formatters.reduce(string) { |pragma, formatter| formatter.new(pragma).call }
|
20
19
|
|
21
20
|
private
|
22
21
|
|
data/lib/pragmater/identity.rb
CHANGED
@@ -10,21 +10,15 @@ module Pragmater
|
|
10
10
|
@newer = format newer
|
11
11
|
end
|
12
12
|
|
13
|
-
def insert
|
14
|
-
older.union newer
|
15
|
-
end
|
13
|
+
def insert = older.union(newer)
|
16
14
|
|
17
|
-
def remove
|
18
|
-
older - older.intersection(newer)
|
19
|
-
end
|
15
|
+
def remove = older - older.intersection(newer)
|
20
16
|
|
21
17
|
private
|
22
18
|
|
23
19
|
attr_reader :formatter, :older, :newer
|
24
20
|
|
25
|
-
def format pragmas
|
26
|
-
Array(pragmas).map { |pragma| formatter.new(pragma).call }
|
27
|
-
end
|
21
|
+
def format(pragmas) = Array(pragmas).map { |pragma| formatter.new(pragma).call }
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
data/lib/pragmater/runner.rb
CHANGED
@@ -7,23 +7,31 @@ module Pragmater
|
|
7
7
|
class Runner
|
8
8
|
using Refinements::Pathnames
|
9
9
|
|
10
|
-
def
|
11
|
-
new Context[attributes]
|
12
|
-
end
|
13
|
-
|
14
|
-
def initialize context, parser: Parsers::File.new
|
15
|
-
@context = context
|
10
|
+
def initialize parser: Parsers::File.new, container: Container
|
16
11
|
@parser = parser
|
12
|
+
@container = container
|
17
13
|
end
|
18
14
|
|
19
|
-
def call
|
20
|
-
Pathname(
|
21
|
-
|
15
|
+
def call configuration = Configuration::Loader.call
|
16
|
+
Pathname(configuration.root_dir).files("{#{configuration.includes.join ","}}").map do |path|
|
17
|
+
yield path if block_given?
|
18
|
+
|
19
|
+
case configuration
|
20
|
+
in action_insert: true then write path, configuration, :insert
|
21
|
+
in action_remove: true then write path, configuration, :remove
|
22
|
+
else logger.error { "Unknown run action. Use insert or remove." }
|
23
|
+
end
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
27
|
private
|
26
28
|
|
27
|
-
attr_reader :
|
29
|
+
attr_reader :parser, :container
|
30
|
+
|
31
|
+
def write path, configuration, action
|
32
|
+
path.write parser.call(path, configuration.comments, action:).join
|
33
|
+
end
|
34
|
+
|
35
|
+
def logger = container[__method__]
|
28
36
|
end
|
29
37
|
end
|
data/lib/pragmater.rb
CHANGED
@@ -1,20 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
require "pragmater/context"
|
13
|
-
require "pragmater/runner"
|
14
|
-
require "pragmater/cli/options/configuration"
|
15
|
-
require "pragmater/cli/options/insert_remove"
|
16
|
-
require "pragmater/cli/options/core"
|
17
|
-
require "pragmater/cli/options/assembler"
|
18
|
-
require "pragmater/cli/options/merger"
|
19
|
-
require "pragmater/cli/helper"
|
20
|
-
require "pragmater/cli/shell"
|
3
|
+
require "zeitwerk"
|
4
|
+
|
5
|
+
Zeitwerk::Loader.for_gem
|
6
|
+
.tap { |loader| loader.inflector.inflect "cli" => "CLI" }
|
7
|
+
.setup
|
8
|
+
|
9
|
+
# Main namespace.
|
10
|
+
module Pragmater
|
11
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pragmater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 10.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
@@ -28,10 +28,38 @@ cert_chain:
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
29
29
|
W2A=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date:
|
31
|
+
date: 2022-01-01 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: dry-container
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.9'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.9'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: refinements
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '9.0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '9.0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: runcom
|
35
63
|
requirement: !ruby/object:Gem::Requirement
|
36
64
|
requirements:
|
37
65
|
- - "~>"
|
@@ -45,19 +73,19 @@ dependencies:
|
|
45
73
|
- !ruby/object:Gem::Version
|
46
74
|
version: '8.0'
|
47
75
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
76
|
+
name: zeitwerk
|
49
77
|
requirement: !ruby/object:Gem::Requirement
|
50
78
|
requirements:
|
51
79
|
- - "~>"
|
52
80
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
81
|
+
version: '2.5'
|
54
82
|
type: :runtime
|
55
83
|
prerelease: false
|
56
84
|
version_requirements: !ruby/object:Gem::Requirement
|
57
85
|
requirements:
|
58
86
|
- - "~>"
|
59
87
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
88
|
+
version: '2.5'
|
61
89
|
description:
|
62
90
|
email:
|
63
91
|
- brooke@alchemists.io
|
@@ -70,17 +98,19 @@ extra_rdoc_files:
|
|
70
98
|
files:
|
71
99
|
- LICENSE.adoc
|
72
100
|
- README.adoc
|
73
|
-
-
|
101
|
+
- exe/pragmater
|
74
102
|
- lib/pragmater.rb
|
103
|
+
- lib/pragmater/cli/actions/config.rb
|
104
|
+
- lib/pragmater/cli/actions/run.rb
|
75
105
|
- lib/pragmater/cli/helper.rb
|
76
|
-
- lib/pragmater/cli/
|
77
|
-
- lib/pragmater/cli/
|
78
|
-
- lib/pragmater/cli/
|
79
|
-
- lib/pragmater/cli/options/defaults.yml
|
80
|
-
- lib/pragmater/cli/options/insert_remove.rb
|
81
|
-
- lib/pragmater/cli/options/merger.rb
|
106
|
+
- lib/pragmater/cli/parser.rb
|
107
|
+
- lib/pragmater/cli/parsers/core.rb
|
108
|
+
- lib/pragmater/cli/parsers/flag.rb
|
82
109
|
- lib/pragmater/cli/shell.rb
|
83
|
-
- lib/pragmater/
|
110
|
+
- lib/pragmater/configuration/content.rb
|
111
|
+
- lib/pragmater/configuration/defaults.yml
|
112
|
+
- lib/pragmater/configuration/loader.rb
|
113
|
+
- lib/pragmater/container.rb
|
84
114
|
- lib/pragmater/formatters/general.rb
|
85
115
|
- lib/pragmater/formatters/main.rb
|
86
116
|
- lib/pragmater/formatters/shebang.rb
|
@@ -93,11 +123,12 @@ files:
|
|
93
123
|
- lib/pragmater/runner.rb
|
94
124
|
homepage: https://www.alchemists.io/projects/pragmater
|
95
125
|
licenses:
|
96
|
-
-
|
126
|
+
- Hippocratic-3.0
|
97
127
|
metadata:
|
98
128
|
bug_tracker_uri: https://github.com/bkuhlmann/pragmater/issues
|
99
|
-
changelog_uri: https://www.alchemists.io/projects/pragmater/
|
129
|
+
changelog_uri: https://www.alchemists.io/projects/pragmater/versions
|
100
130
|
documentation_uri: https://www.alchemists.io/projects/pragmater
|
131
|
+
rubygems_mfa_required: 'true'
|
101
132
|
source_code_uri: https://github.com/bkuhlmann/pragmater
|
102
133
|
post_install_message:
|
103
134
|
rdoc_options: []
|
@@ -107,14 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
138
|
requirements:
|
108
139
|
- - "~>"
|
109
140
|
- !ruby/object:Gem::Version
|
110
|
-
version: '3.
|
141
|
+
version: '3.1'
|
111
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
143
|
requirements:
|
113
144
|
- - ">="
|
114
145
|
- !ruby/object:Gem::Version
|
115
146
|
version: '0'
|
116
147
|
requirements: []
|
117
|
-
rubygems_version: 3.
|
148
|
+
rubygems_version: 3.3.4
|
118
149
|
signing_key:
|
119
150
|
specification_version: 4
|
120
151
|
summary: A command line interface for managing/formatting source file pragma comments.
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "optparse"
|
4
|
-
require "forwardable"
|
5
|
-
|
6
|
-
module Pragmater
|
7
|
-
module CLI
|
8
|
-
module Options
|
9
|
-
# Coalesces all options and arguments into a single hash for further processing.
|
10
|
-
class Assembler
|
11
|
-
extend Forwardable
|
12
|
-
|
13
|
-
PARSER = OptionParser.new nil, 40, " "
|
14
|
-
SECTIONS = [Core, InsertRemove, Configuration].freeze
|
15
|
-
|
16
|
-
EXCEPTIONS = [
|
17
|
-
OptionParser::InvalidOption,
|
18
|
-
OptionParser::MissingArgument,
|
19
|
-
OptionParser::InvalidArgument
|
20
|
-
].freeze
|
21
|
-
|
22
|
-
delegate %i[to_s] => :parser
|
23
|
-
|
24
|
-
def initialize sections: SECTIONS, parser: PARSER, exceptions: EXCEPTIONS
|
25
|
-
@sections = sections
|
26
|
-
@parser = parser
|
27
|
-
@options = {}
|
28
|
-
@exceptions = exceptions
|
29
|
-
end
|
30
|
-
|
31
|
-
def call arguments = []
|
32
|
-
sections.each { |section| section.new(options, parser: parser).call }
|
33
|
-
parser.parse! arguments
|
34
|
-
options
|
35
|
-
rescue *EXCEPTIONS
|
36
|
-
{}
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
attr_reader :parser, :sections, :options, :exceptions
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Pragmater
|
4
|
-
module CLI
|
5
|
-
module Options
|
6
|
-
# Defines gem configuration options.
|
7
|
-
class Configuration
|
8
|
-
def initialize values, parser: OptionParser.new
|
9
|
-
@parser = parser
|
10
|
-
@values = values
|
11
|
-
end
|
12
|
-
|
13
|
-
def call
|
14
|
-
parser.separator "\nConfiguration:\n"
|
15
|
-
private_methods.grep(/add_/).each { |method| __send__ method }
|
16
|
-
parser
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :parser, :values
|
22
|
-
|
23
|
-
def add_edit
|
24
|
-
parser.on "--edit", "Edit configuration." do
|
25
|
-
values[:edit] = true
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def add_info
|
30
|
-
parser.on "--info", "Print configuration." do
|
31
|
-
values[:info] = true
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|