pragmater 9.3.0 → 10.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.adoc +207 -155
- data/README.adoc +18 -31
- 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 +46 -16
- 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,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pragmater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 10.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -28,36 +28,64 @@ cert_chain:
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
29
29
|
W2A=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date: 2021-
|
31
|
+
date: 2021-12-29 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
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
36
50
|
requirements:
|
37
51
|
- - "~>"
|
38
52
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
53
|
+
version: '9.0'
|
40
54
|
type: :runtime
|
41
55
|
prerelease: false
|
42
56
|
version_requirements: !ruby/object:Gem::Requirement
|
43
57
|
requirements:
|
44
58
|
- - "~>"
|
45
59
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
60
|
+
version: '9.0'
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
name: runcom
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
50
64
|
requirements:
|
51
65
|
- - "~>"
|
52
66
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
67
|
+
version: '8.0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '8.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: zeitwerk
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::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
|
@@ -72,15 +100,17 @@ files:
|
|
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,7 +123,7 @@ 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
129
|
changelog_uri: https://www.alchemists.io/projects/pragmater/changes.html
|
@@ -108,14 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
138
|
requirements:
|
109
139
|
- - "~>"
|
110
140
|
- !ruby/object:Gem::Version
|
111
|
-
version: '3.
|
141
|
+
version: '3.1'
|
112
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
143
|
requirements:
|
114
144
|
- - ">="
|
115
145
|
- !ruby/object:Gem::Version
|
116
146
|
version: '0'
|
117
147
|
requirements: []
|
118
|
-
rubygems_version: 3.
|
148
|
+
rubygems_version: 3.3.3
|
119
149
|
signing_key:
|
120
150
|
specification_version: 4
|
121
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
|