shufu 0.1.0 → 0.1.4
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
- data/Gemfile.lock +3 -29
- data/README.md +12 -15
- data/lib/shufu/argument.rb +23 -0
- data/lib/shufu/command.rb +35 -0
- data/lib/shufu/version.rb +1 -1
- data/shufu.gemspec +1 -1
- metadata +4 -5
- data/lib/shufu/item.rb +0 -30
- data/lib/shufu/line.rb +0 -23
- data/lib/shufu/schema.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 071d6191267e3bb684b700c188e3cdcc7924c7a93e329cf79c49eb0c203a0ff4
|
|
4
|
+
data.tar.gz: de82af9aac1ff9b9114f668f71b200706c1e6ba1e1d1e289d4ab562c830a9e6b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 32f4aed2b7910b2a3f0a405d248165c48cd94abeed5c2fdf01cfd711f51aa9d8aaa09628e8f9cc9b3049695f6343e6f11c814b8afafcc2681da361cf9b4cfa5e
|
|
7
|
+
data.tar.gz: dc924999be4ee8db979697cc0c1e12580703a6af0ac6933fbd225327d5c4f25a4584db4e176b3cfa8163b641d069c44ff388b0959b8d3ce30e389d98e6e3547b
|
data/Gemfile.lock
CHANGED
|
@@ -1,40 +1,14 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
shufu (0.1.
|
|
5
|
-
dry-
|
|
4
|
+
shufu (0.1.4)
|
|
5
|
+
dry-initializer
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
concurrent-ruby (1.1.9)
|
|
11
10
|
diff-lcs (1.5.0)
|
|
12
|
-
dry-
|
|
13
|
-
concurrent-ruby (~> 1.0)
|
|
14
|
-
dry-core (~> 0.6)
|
|
15
|
-
dry-container (0.9.0)
|
|
16
|
-
concurrent-ruby (~> 1.0)
|
|
17
|
-
dry-configurable (~> 0.13, >= 0.13.0)
|
|
18
|
-
dry-core (0.7.1)
|
|
19
|
-
concurrent-ruby (~> 1.0)
|
|
20
|
-
dry-inflector (0.2.1)
|
|
21
|
-
dry-initializer (3.1.0)
|
|
22
|
-
dry-logic (1.2.0)
|
|
23
|
-
concurrent-ruby (~> 1.0)
|
|
24
|
-
dry-core (~> 0.5, >= 0.5)
|
|
25
|
-
dry-schema (1.8.0)
|
|
26
|
-
concurrent-ruby (~> 1.0)
|
|
27
|
-
dry-configurable (~> 0.13, >= 0.13.0)
|
|
28
|
-
dry-core (~> 0.5, >= 0.5)
|
|
29
|
-
dry-initializer (~> 3.0)
|
|
30
|
-
dry-logic (~> 1.0)
|
|
31
|
-
dry-types (~> 1.5)
|
|
32
|
-
dry-types (1.5.1)
|
|
33
|
-
concurrent-ruby (~> 1.0)
|
|
34
|
-
dry-container (~> 0.3)
|
|
35
|
-
dry-core (~> 0.5, >= 0.5)
|
|
36
|
-
dry-inflector (~> 0.1, >= 0.1.2)
|
|
37
|
-
dry-logic (~> 1.0, >= 1.0.2)
|
|
11
|
+
dry-initializer (3.1.1)
|
|
38
12
|
power_assert (1.1.7)
|
|
39
13
|
rake (13.0.6)
|
|
40
14
|
rspec (3.10.0)
|
data/README.md
CHANGED
|
@@ -23,21 +23,18 @@ Or install it yourself as:
|
|
|
23
23
|
```ruby
|
|
24
24
|
require "shufu"
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
"git
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
).to_s
|
|
39
|
-
|
|
40
|
-
# git commit --amend --author=cc-kawakami
|
|
26
|
+
schema = [
|
|
27
|
+
{ name: "git", type: "command" },
|
|
28
|
+
{ name: "commit", type: "command" },
|
|
29
|
+
{ name: "amend", type: "flag" },
|
|
30
|
+
{ name: "author", type: "equal" }
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
command = Shufu::Command.new(schema)
|
|
34
|
+
|
|
35
|
+
p command.to_s({ amend: true, author: "cc-kawakami" })
|
|
36
|
+
|
|
37
|
+
# => "git commit --amend --author=cc-kawakami"
|
|
41
38
|
```
|
|
42
39
|
|
|
43
40
|
## Development
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "dry-initializer"
|
|
2
|
+
|
|
3
|
+
module Shufu
|
|
4
|
+
class Argument
|
|
5
|
+
extend Dry::Initializer
|
|
6
|
+
|
|
7
|
+
option :name, proc(&:to_s)
|
|
8
|
+
option :type, proc(&:to_sym), default: proc { :equal }
|
|
9
|
+
|
|
10
|
+
def to_s(value)
|
|
11
|
+
case type
|
|
12
|
+
when :param
|
|
13
|
+
value
|
|
14
|
+
when :flag
|
|
15
|
+
value ? "--#{name}" : ""
|
|
16
|
+
when :equal
|
|
17
|
+
"--#{name}=#{value}"
|
|
18
|
+
when :space
|
|
19
|
+
"--#{name} #{value}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Shufu
|
|
2
|
+
class Command
|
|
3
|
+
#
|
|
4
|
+
# @param [Array<Hash>] schema
|
|
5
|
+
#
|
|
6
|
+
def initialize(schema)
|
|
7
|
+
@schema = schema.map { |s| Argument.new(**s) }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# @param [Hash] values
|
|
12
|
+
# @return [String]
|
|
13
|
+
#
|
|
14
|
+
def to_s(values)
|
|
15
|
+
arguments(values).join(" ")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# @reutrn [Array<String>]
|
|
20
|
+
#
|
|
21
|
+
def arguments(values)
|
|
22
|
+
[commands] + values.map { |k, v|
|
|
23
|
+
a = @schema.find { |a| a.name == k.to_s } || Argument.new(name: k)
|
|
24
|
+
a.to_s(v)
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
#
|
|
29
|
+
# @return [Array<String>]
|
|
30
|
+
#
|
|
31
|
+
def commands
|
|
32
|
+
@schema.select { |a| a.type == :command }.map(&:name)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
data/lib/shufu/version.rb
CHANGED
data/shufu.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shufu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- cc-kawakami
|
|
@@ -11,7 +11,7 @@ cert_chain: []
|
|
|
11
11
|
date: 2022-01-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: dry-
|
|
14
|
+
name: dry-initializer
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
@@ -37,9 +37,8 @@ files:
|
|
|
37
37
|
- README.md
|
|
38
38
|
- Rakefile
|
|
39
39
|
- lib/shufu.rb
|
|
40
|
-
- lib/shufu/
|
|
41
|
-
- lib/shufu/
|
|
42
|
-
- lib/shufu/schema.rb
|
|
40
|
+
- lib/shufu/argument.rb
|
|
41
|
+
- lib/shufu/command.rb
|
|
43
42
|
- lib/shufu/version.rb
|
|
44
43
|
- shufu.gemspec
|
|
45
44
|
homepage: https://github.com/cc-kawakami/shufu
|
data/lib/shufu/item.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Shufu
|
|
2
|
-
class Item
|
|
3
|
-
def initialize(all_schema, name, value)
|
|
4
|
-
@all_schema = all_schema
|
|
5
|
-
@name = name
|
|
6
|
-
@value = value
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def schema
|
|
10
|
-
@all_schema[:schema].find { |s| s[:name] == @name.to_s }
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def to_s
|
|
15
|
-
if schema[:type] == "argument"
|
|
16
|
-
@value
|
|
17
|
-
else
|
|
18
|
-
if schema[:flag]
|
|
19
|
-
"--#{@name}"
|
|
20
|
-
else
|
|
21
|
-
if schema[:equal]
|
|
22
|
-
"--#{@name}=#{@value}"
|
|
23
|
-
else
|
|
24
|
-
"--#{@name} #{@value}"
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/shufu/line.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
module Shufu
|
|
2
|
-
class InvalidSchemaError < RuntimeError; end
|
|
3
|
-
|
|
4
|
-
class Line
|
|
5
|
-
def initialize(main, schema, values)
|
|
6
|
-
@main = main
|
|
7
|
-
schema = Shufu::Schema.call(schema)
|
|
8
|
-
if schema.failure?
|
|
9
|
-
raise Shufu::InvalidSchemaError, schema.errors(full: true).to_h
|
|
10
|
-
end
|
|
11
|
-
@schema = schema
|
|
12
|
-
@values = values
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def to_s
|
|
16
|
-
[@main, items].flatten.join(" ")
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def items
|
|
20
|
-
@values.map { |k, v| Shufu::Item.new(@schema, k, v).to_s }
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/lib/shufu/schema.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require 'dry-schema'
|
|
2
|
-
|
|
3
|
-
module Shufu
|
|
4
|
-
Schema = Dry::Schema.Params do
|
|
5
|
-
required(:schema).filled(:array).each do
|
|
6
|
-
hash do
|
|
7
|
-
required(:name).filled(:string)
|
|
8
|
-
required(:type).filled(:string)
|
|
9
|
-
optional(:position).maybe(:integer)
|
|
10
|
-
optional(:flag).maybe(:bool)
|
|
11
|
-
optional(:equal).maybe(:bool)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|