yuuki 0.1.0 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f43903b0871e192e128847cf0e772066dec93cfa0b882afb9ac53bb0dfbf3ca
4
- data.tar.gz: 1114888a7eb4a790792556ab6aa03b9ace4da9a15bd56201f8fdf98cf855df30
3
+ metadata.gz: 49851d0c15f259e4c54568ff173a45b9ae9316e25c4120fd3d12926f2560fcfb
4
+ data.tar.gz: f17a0f2ec8d4de59becb43c9f6e4de08de3b38534583250f1899da127576188c
5
5
  SHA512:
6
- metadata.gz: 742ddbe4914aa114d780a8a5bdd6285ba04c6ca651fa23d62c995741b155a935c58742240eb51114f43c6ab82347ea1d457a92f40b63ae87324fbf81ae8073a7
7
- data.tar.gz: 6ae20a7613818d726fd3442a7057354355106656a42c45c9f8c8dcf1dd1eb8172905307f35b9559e7e15c4e3c0b4f60cfad74017ccd254edff93dabf8fab485f
6
+ metadata.gz: a2ef440f3446c5d737abfa611f81731b06905189013c3220560a00a9f0e23d6422180a699934a9161711390a49d2e5bbf61f5178bd4316c6c1bcc2e1bad33889
7
+ data.tar.gz: 895d9874e7455840667ea75a90bb02c669d5b384a88b0412ee3bd4be58082465489317b483d2b8e28de81d6d2224f5819bb6af5b34fb1bb9a907b1db053e4164
data/.DS_Store ADDED
Binary file
data/.gitignore CHANGED
@@ -6,5 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- /test/
10
9
  Gemfile.lock
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in yuuki.gemspec
data/README.md CHANGED
@@ -20,7 +20,32 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- あとで書く。
23
+ ```ruby
24
+ require 'yuuki'
25
+
26
+ class HogeClass
27
+ extend Yuuki::Runner
28
+
29
+ add :a
30
+ def a
31
+ puts 'a'
32
+ end
33
+
34
+ add :b
35
+ tag :b, :tag_b
36
+ def b
37
+ puts 'b'
38
+ end
39
+ end
40
+
41
+ yuuki = Yuuki::Caller.new(HogeClass)
42
+ yuuki.run
43
+ # a
44
+ # b
45
+
46
+ yuuki.run_tag(:tag_b)
47
+ # b
48
+ ```
24
49
 
25
50
  ## Contributing
26
51
 
data/Rakefile CHANGED
@@ -1,2 +1,12 @@
1
- require "bundler/gem_tasks"
2
- task :default => :spec
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ end
11
+
12
+ task default: %i[test]
data/lib/yuuki/caller.rb CHANGED
@@ -1,135 +1,173 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
1
4
  require 'yuuki/runner'
2
5
 
3
6
  module Yuuki
4
- class Caller
5
- Runner = Struct.new(:method, :tags, :exclude, :threading, :priority)
6
-
7
- def self.require_dir(dir, recursive = false)
8
- Dir.glob(recursive ? "#{require_dir}/**/*.rb" : "#{require_dir}/*.rb"){|file| require file}
9
- end
10
-
11
- def initialize(*klass)
12
- @runners = []
13
- @threads = []
14
- add(*klass)
15
- end
16
-
17
- def add(*klass)
18
- klass.each do |klass|
19
- instance = klass.new
20
- instance.instance_variable_set(:@caller, self)
21
- info = klass.instance_variable_get(:@runner_info) || {}
22
- methods = klass.public_instance_methods(false)
23
- methods |= klass.instance_variable_get(:@runner_adds) || []
24
- methods -= klass.instance_variable_get(:@runner_excepts) || []
25
- @runners += methods.map do |method|
26
- tags = info.dig(method, :tags) || []
27
- exclude = !!info.dig(method, :exclude)
28
- threading = !!info.dig(method, :threading)
29
- priority = info.dig(method, :priority) || 0
30
- Runner.new(instance.method(method), tags, exclude, threading, priority)
31
- end
32
- end
33
- @runners.sort_by!{|e| -e.priority}
34
- end
35
-
36
- def run(**args)
37
- run_internal(@runners.reject(&:exclude), args)
38
- end
7
+ class Caller
8
+ # requires all the rb files in the given directory
9
+ # @param [String] require_dir directory
10
+ # @param [Boolean] recursive
11
+ def self.require_dir(require_dir, recursive: false)
12
+ Dir.glob(recursive ? "#{require_dir}/**/*.rb" : "#{require_dir}/*.rb"){|file| require file}
13
+ end
39
14
 
40
- def run_all(**args)
41
- run_internal(@runners, args)
42
- end
15
+ # @param [Object] instances
16
+ def initialize(*instances)
17
+ @instances = Set.new
18
+ @threads = []
19
+ add(*instances)
20
+ end
43
21
 
44
- def run_class(*klass, **args)
45
- run_internal(@runners.select{|e| !e.exclude && klass.any?{|k| e.method.receiver.instance_of?(k)}}, args)
22
+ # adds instances to yuuki
23
+ # @param [Object] instances
24
+ def add(*instances)
25
+ instances.each do |instance|
26
+ # create instance if class is given
27
+ if instance.is_a?(Class)
28
+ klass = instance
29
+ # check the klass is extended
30
+ raise Yuuki::Error, 'Runner instance must be extend Yuuki::Runner' unless klass.singleton_class.include?(Yuuki::Runner)
31
+ instance = instance.allocate
32
+ instance.instance_variable_set(:@yuuki, self)
33
+ instance.send(:initialize)
34
+ else
35
+ # check the klass is extended
36
+ raise Yuuki::Error, 'Runner instance must be extend Yuuki::Runner' unless instance.class.singleton_class.include?(Yuuki::Runner)
37
+ # add @yuuki to the instance
38
+ instance.instance_variable_set(:@yuuki, self)
46
39
  end
47
40
 
48
- def run_class_all(*klass, **args)
49
- run_internal(@runners.select{|e| klass.any?{|k| e.method.receiver.instance_of?(k)}}, args)
50
- end
41
+ # regist
42
+ @instances << instance
43
+ end
44
+ end
51
45
 
52
- def run_tag(*tags, **args)
53
- run_internal(@runners.select{|e| tags.any?{|t| e.tags.any?(t)}}, args)
54
- end
46
+ # returns runners
47
+ # @return [Array<[Method, Hash<Symbol, Object>]>]
48
+ def runners
49
+ list = @instances.flat_map do |instance|
50
+ methods = instance.class.instance_variable_get(:@yuuki_methods)
51
+ methods.select{|_sig, meta| meta[:enabled]}.map{|sig, meta| [instance.method(sig), meta]}
52
+ end
53
+ list.sort_by{|_method, meta| -(meta[:priority] || 0)}
54
+ end
55
55
 
56
- def run_select(**args)
57
- run_internal(@runners.select{|e| yield(e)}, args)
58
- end
56
+ # runs all methods
57
+ # @param [Object] args arguments
58
+ def run(**args, &block)
59
+ run_internal(runners, args, &block)
60
+ end
59
61
 
60
- def run_method(klass, method, **args)
61
- runners = klass ? @runners.select{|e| e.method.receiver.class == klass} : @runners
62
- runners.select!{|e| e.method.name == method} if method
63
- run_internal(runners, args)
64
- end
62
+ # runs all selected methods
63
+ # @param [Proc] proc_select
64
+ # @param [Object] args arguments
65
+ def run_select(proc_select, **args, &block)
66
+ run_internal(runners.select(&proc_select), args, &block)
67
+ end
65
68
 
66
- def join
67
- @threads.each(&:join)
68
- end
69
+ # runs all methods with the specified tags
70
+ # @param [Symbol] tags
71
+ # @param [Object] args arguments
72
+ def run_tag(*tags, **args, &block)
73
+ run_select(proc{|_method, meta| meta[:tags]&.intersect?(tags)}, **args, &block)
74
+ end
69
75
 
70
- def alive?
71
- @threads.any?(&:alive?)
72
- end
73
- alias running? alive?
76
+ # runs the specific method
77
+ # @param [Class, nil] klass
78
+ # @param [Symbol, nil] method_sig method name
79
+ # @param [Object] args arguments
80
+ def run_method(klass, method_sig, **args, &block)
81
+ select_proc = proc do |method, _meta|
82
+ flag_klass = klass ? method.receiver.instance_of?(klass) : true
83
+ flag_method = method_sig ? method.name == method_sig : true
84
+ flag_klass && flag_method
85
+ end
86
+ run_select(select_proc, **args, &block)
87
+ end
74
88
 
75
- private
89
+ # joins all runnning threads
90
+ def join
91
+ @threads.each(&:join)
92
+ @threads.select!(&:alive?)
93
+ end
76
94
 
77
- def run_internal(runners, args)
78
- runners.each do |runner|
79
- if runner.threading
80
- @threads << Thread.new(runner.method, args) do |method, args|
81
- run_method_internal(method, args)
82
- end
83
- else
84
- run_method_internal(runner.method, args)
85
- end
86
- end
87
- @threads.select!(&:alive?)
95
+ # returns whether any thread is alive
96
+ # @return [Boolean]
97
+ def alive?
98
+ @threads.select!(&:alive?)
99
+ !@threads.empty?
100
+ end
101
+ alias running? alive?
102
+
103
+ private
104
+
105
+ def run_internal(runners, args, &block)
106
+ @threads.select!(&:alive?)
107
+ runners.each do |method, meta|
108
+ if meta[:thread]
109
+ thread = Thread.new(method, args, block) do |thread_method, thread_args, thread_block|
110
+ run_method_internal(thread_method, thread_args, &thread_block)
111
+ end
112
+ thread.priority = meta[:priority] || 0
113
+ @threads << thread
114
+ else
115
+ run_method_internal(method, args, &block)
88
116
  end
117
+ end
118
+ end
89
119
 
90
- def run_method_internal(method, args)
91
- params = method.parameters
92
- return method[] if params.size == 0
93
- params_array = []
94
- params_hash = {}
95
- params_block = nil
96
- nonspecified_last_opt = nil
97
- params.each do |type, name|
98
- case type
99
- when :req
100
- raise Yuuki::Error.new("A required argument '#{name}' was not found on running #{method.owner}::#{method.name}") unless args.key?(name)
101
- params_array << args[name]
102
- when :opt
103
- next nonspecified_last_opt = name unless args.key?(name)
104
- raise Yuuki::Error.new("A required argument '#{nonspecified_last_opt}' was not found"\
105
- " on running #{method.owner}::#{method.name}"" with optional argument '#{name}'") if nonspecified_last_opt
106
- params_array << args[name]
107
- when :rest
108
- next unless args.key?(name)
109
- raise Yuuki::Error.new("A required argument '#{nonspecified_last_opt}' not found"\
110
- " on running #{method.owner}::#{method.name}"" with rest argument '#{name}'") if nonspecified_last_opt
111
- if args[name].respond_to?(:to_ary)
112
- params_array += args[name]
113
- else
114
- params_array << args[name]
115
- end
116
- when :keyreq
117
- raise Yuuki::Error.new("A required key argument '#{name}' was not found on running #{method.owner}::#{method.name}") unless args.key?(name)
118
- params_hash[name] = args[name]
119
- when :key
120
- params_hash[name] = args[name] if args.key?(name)
121
- when :keyrest
122
- next unless args.key?(name)
123
- if args[name].respond_to?(:to_hash)
124
- params_hash.merge!(args[name])
125
- else
126
- params_hash[name] = args[name]
127
- end
128
- when :block
129
- params_block = args[name]
130
- end
131
- end
132
- params_hash.empty? ? method[*params_array, &params_block] : method[*params_array, **params_hash, &params_block]
120
+ def run_method_internal(method, args, &block)
121
+ params = method.parameters
122
+ return method[] if params.empty?
123
+ params_array = []
124
+ params_hash = {}
125
+ params_block = nil
126
+ nonspecified_last_opt = nil
127
+ params.each do |type, name|
128
+ case type
129
+ when :req
130
+ raise Yuuki::Error, "A required argument '#{name}' was not found on running #{method.owner}::#{method.name}" unless args.key?(name)
131
+ params_array << args[name]
132
+ when :opt
133
+ # if parameters do not contain the :opt argument, treat it as not specified
134
+ next nonspecified_last_opt = name unless args.key?(name)
135
+ if nonspecified_last_opt
136
+ # if there already exist non-specified :opt arguments, no more specified :opt argument is allowed
137
+ raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' was not found"\
138
+ " on running #{method.owner}::#{method.name}"" with optional argument '#{name}'"
139
+ end
140
+ params_array << args[name]
141
+ when :rest
142
+ next unless args.key?(name)
143
+ if nonspecified_last_opt
144
+ # if there already exist non-specified :opt arguments, the :rest argument cannot be handled
145
+ raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' not found"\
146
+ " on running #{method.owner}::#{method.name}"" with rest argument '#{name}'"
147
+ end
148
+ if args[name].respond_to?(:to_ary)
149
+ params_array += args[name]
150
+ else
151
+ params_array << args[name]
152
+ end
153
+ when :keyreq
154
+ raise Yuuki::Error, "A required key argument '#{name}' was not found on running #{method.owner}::#{method.name}" unless args.key?(name)
155
+ params_hash[name] = args[name]
156
+ when :key
157
+ params_hash[name] = args[name] if args.key?(name)
158
+ when :keyrest
159
+ next unless args.key?(name)
160
+ if args[name].respond_to?(:to_hash)
161
+ params_hash.merge!(args[name])
162
+ else
163
+ params_hash[name] = args[name]
164
+ end
165
+ when :block
166
+ params_block = args[name]
133
167
  end
168
+ end
169
+ params_block = block unless params.any?{|type, _| type == :block}
170
+ params_hash.empty? ? method[*params_array, &params_block] : method[*params_array, **params_hash, &params_block]
134
171
  end
172
+ end
135
173
  end
data/lib/yuuki/error.rb CHANGED
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Yuuki
2
- class Error < StandardError
3
- end
4
+ class Error < StandardError
5
+ end
4
6
  end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yuuki/caller'
4
+ require 'yuuki/runner'
5
+
6
+ module Yuuki
7
+ module Runner
8
+ # sets interval to the method
9
+ # @param [Symbol] methods method names
10
+ # @param [Integer] interval
11
+ def periodic(*methods, interval)
12
+ @yuuki_methods ||= {}
13
+ methods.each do |method|
14
+ @yuuki_methods[method] ||= {}
15
+ @yuuki_methods[method][:periodic] = interval
16
+ end
17
+ end
18
+
19
+ # sets whether the method run at the first time
20
+ # @param [Symbol] methods method names
21
+ # @param [Boolean] enabled
22
+ def first_run(*methods, enabled: true)
23
+ @yuuki_methods ||= {}
24
+ methods.each do |method|
25
+ @yuuki_methods[method] ||= {}
26
+ @yuuki_methods[method][:first_run] = enabled
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ module Yuuki
33
+ # @attr_reader [Boolean] first_run
34
+ # @attr_reader [Float] current_time
35
+ class PeriodicCaller < Caller
36
+ attr_reader :first_run, :current_time
37
+
38
+ def initialize(*instances)
39
+ super
40
+ @first_run = true
41
+ end
42
+
43
+ # sets error callback
44
+ # @yield [error]
45
+ # @yieldparam [Exception] error
46
+ def on_error(&block)
47
+ @on_error = block
48
+ end
49
+
50
+ # runs the periodic caller
51
+ # @param [Numeric] gmtoff GMT Offset
52
+ # @param [Object] args arguments
53
+ def run(gmtoff = Time.now.gmtoff, **args, &block)
54
+ last_time = nil
55
+ loop do
56
+ @current_time = Time.now.to_f
57
+ begin
58
+ select_proc = proc do |_method, meta|
59
+ next true if @first_run && meta[:first_run]
60
+ next false unless meta[:periodic]
61
+ next false unless last_time
62
+ c = @current_time + gmtoff
63
+ l = last_time + gmtoff
64
+ next true if (l.div(meta[:periodic]) + 1) * meta[:periodic] <= c
65
+ end
66
+ run_select(select_proc, **args, &block)
67
+ rescue
68
+ @on_error ? @on_error[$!] : raise
69
+ end
70
+ @first_run = false
71
+
72
+ last_time = @current_time
73
+ ((@current_time + 1).floor - Time.now.to_f).tap{|e| sleep e if e > 0}
74
+ end
75
+ end
76
+ end
77
+ end
data/lib/yuuki/runner.rb CHANGED
@@ -1,48 +1,59 @@
1
- require 'yuuki/error'
1
+ # frozen_string_literal: true
2
2
 
3
- module Yuuki
4
- class RunnerBase
5
- class << self
6
- private
7
-
8
- def add(*methods)
9
- @runner_adds ||= []
10
- @runner_adds |= methods
11
- end
3
+ require 'set'
12
4
 
13
- def delete(*methods)
14
- @runner_excepts ||= []
15
- @runner_excepts |= methods
16
- end
5
+ module Yuuki
6
+ module Runner
7
+ # adds methods to yuuki
8
+ # @param [Symbol] methods method names
9
+ def add(*methods)
10
+ @yuuki_methods ||= {}
11
+ methods.each do |method|
12
+ @yuuki_methods[method] ||= {}
13
+ @yuuki_methods[method][:enabled] = true
14
+ end
15
+ end
17
16
 
18
- def tag(method, *tags)
19
- @runner_info ||= {}
20
- @runner_info[method] ||= {}
21
- @runner_info[method][:tags] ||= []
22
- @runner_info[method][:tags] |= tags
23
- end
17
+ # deletes methods from yuuki
18
+ # @param [Symbol] methods method names
19
+ def delete(*methods)
20
+ @yuuki_methods ||= {}
21
+ methods.each do |method|
22
+ @yuuki_methods[method] ||= {}
23
+ @yuuki_methods[method][:enabled] = false
24
+ end
25
+ end
24
26
 
25
- def exclude(*methods)
26
- @runner_info ||= {}
27
- methods.each do |method|
28
- @runner_info[method] ||= {}
29
- @runner_info[method][:exclude] = true
30
- end
31
- end
27
+ # adds tags to the method
28
+ # @param [Symbol] method method name
29
+ # @param [Symbol] tags tag names
30
+ def tag(method, *tags)
31
+ @yuuki_methods ||= {}
32
+ @yuuki_methods[method] ||= {}
33
+ @yuuki_methods[method][:tags] ||= Set.new
34
+ @yuuki_methods[method][:tags].merge(tags)
35
+ end
32
36
 
33
- def threading(*methods)
34
- @runner_info ||= {}
35
- methods.each do |method|
36
- @runner_info[method] ||= {}
37
- @runner_info[method][:threading] = true
38
- end
39
- end
37
+ # enables threading for the methods
38
+ # @param [Symbol] methods method names
39
+ # @param [Boolean] enabled
40
+ def thread(*methods, enabled: true)
41
+ @yuuki_methods ||= {}
42
+ methods.each do |method|
43
+ @yuuki_methods[method] ||= {}
44
+ @yuuki_methods[method][:thread] = enabled
45
+ end
46
+ end
40
47
 
41
- def priority(method, priority)
42
- @runner_info ||= {}
43
- @runner_info[method] ||= {}
44
- @runner_info[method][:priority] = priority
45
- end
46
- end
48
+ # sets priority to the method
49
+ # @param [Symbol] methods method names
50
+ # @param [Numeric] priority
51
+ def priority(*methods, priority)
52
+ @yuuki_methods ||= {}
53
+ methods.each do |method|
54
+ @yuuki_methods[method] ||= {}
55
+ @yuuki_methods[method][:priority] = priority
56
+ end
47
57
  end
58
+ end
48
59
  end
data/lib/yuuki/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Yuuki
2
- VERSION = '0.1.0'
4
+ VERSION = '0.1.3'
3
5
  end
data/lib/yuuki.rb CHANGED
@@ -1,4 +1,6 @@
1
- require 'yuuki/runner'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'yuuki/caller'
3
4
  require 'yuuki/error'
5
+ require 'yuuki/runner'
4
6
  require 'yuuki/version'
@@ -0,0 +1,25 @@
1
+ # TypeProf 0.21.2
2
+
3
+ # Classes
4
+ module Yuuki
5
+ class Caller
6
+ @instances: Set[untyped]
7
+ @threads: Array[Thread]
8
+
9
+ def self.require_dir: (String require_dir, ?recursive: bool) -> void
10
+ def initialize: (*untyped instances) -> void
11
+ def add: (*untyped instances) -> void
12
+ def runners: -> Array[untyped]
13
+ def run: (**untyped) -> void
14
+ def run_select: (^(Method, Hash[Symbol, untyped]) -> bool proc_select, **untyped) -> void
15
+ def run_tag: (*Symbol tags, **untyped) -> void
16
+ def run_method: (Class klass, Symbol method_sig, **untyped) -> void
17
+ def join: -> void
18
+ def alive?: -> bool
19
+ alias running? alive?
20
+
21
+ private
22
+ def run_internal: (Array[untyped] runners, Hash[Symbol, untyped] args) -> void
23
+ def run_method_internal: (Method method, Hash[Symbol, untyped] args) -> void
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ # TypeProf 0.21.2
2
+
3
+ # Classes
4
+ module Yuuki
5
+ class Error < StandardError
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ # TypeProf 0.21.2
2
+
3
+ # Classes
4
+ module Yuuki
5
+ module Runner
6
+ def periodic: (Symbol method, Integer interval) -> void
7
+ def first_run: (Symbol method, ?enabled: bool) -> void
8
+ end
9
+
10
+ class PeriodicCaller < Caller
11
+ @on_error: Proc
12
+
13
+ attr_reader first_run: bool
14
+ attr_reader current_time: Float
15
+ def initialize: (*untyped instances) -> void
16
+ def on_error: {(Exception) -> void} -> void
17
+ def run: (?Integer gmtoff, **untyped) -> void
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ # TypeProf 0.21.2
2
+
3
+ # Classes
4
+ module Yuuki
5
+ module Runner
6
+ @yuuki_methods: Hash[Symbol, Hash[Symbol, untyped]]
7
+
8
+ def add: (*Symbol methods) -> void
9
+ def delete: (*Symbol methods) -> void
10
+ def tag: (Symbol method, *Symbol tags) -> void
11
+ def thread: (*Symbol methods, ?enabled: bool) -> void
12
+ def priority: (*Symbol methods, Numeric priority) -> void
13
+ end
14
+ end
@@ -0,0 +1,6 @@
1
+ # TypeProf 0.21.2
2
+
3
+ # Classes
4
+ module Yuuki
5
+ VERSION: String
6
+ end
data/yuuki.gemspec CHANGED
@@ -1,28 +1,30 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $:.unshift(lib) unless $:.include?(lib)
3
5
  require 'yuuki/version'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = 'yuuki'
7
- spec.version = Yuuki::VERSION
8
- spec.authors = ['Ishotihadus']
9
- spec.email = ['hanachan.pao@gmail.com']
8
+ spec.name = 'yuuki'
9
+ spec.version = Yuuki::VERSION
10
+ spec.authors = ['Ishotihadus']
11
+ spec.email = ['hanachan.pao@gmail.com']
10
12
 
11
- spec.summary = 'A caller / runner framework for Ruby'
12
- spec.description = 'A caller / runner framework for Ruby.'
13
- spec.homepage = 'https://github.com/ishotihadus/yuuki'
14
- spec.license = 'MIT'
13
+ spec.summary = 'A caller / runner framework for Ruby'
14
+ spec.description = 'A caller / runner framework for Ruby.'
15
+ spec.homepage = 'https://github.com/ishotihadus/yuuki'
16
+ spec.license = 'MIT'
15
17
 
16
- # Specify which files should be added to the gem when it is released.
17
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
19
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
- end
21
- spec.bindir = 'exe'
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ['lib']
18
+ # Specify which files should be added to the gem when it is released.
19
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
+ `git ls-files -z`.split("\x0").reject{|f| f.match(%r{^(test|spec|features)/})}
22
+ end
23
+ spec.bindir = 'exe'
24
+ spec.executables = spec.files.grep(%r{^exe/}){|f| File.basename(f)}
25
+ spec.require_paths = ['lib']
24
26
 
25
- spec.add_development_dependency 'bundler'
26
- spec.add_development_dependency 'rake'
27
- spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'pry'
29
+ spec.add_development_dependency 'rake'
28
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yuuki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ishotihadus
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-16 00:00:00.000000000 Z
11
+ date: 2022-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: pry
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -59,6 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - ".DS_Store"
62
63
  - ".gitignore"
63
64
  - Gemfile
64
65
  - LICENSE.txt
@@ -69,14 +70,20 @@ files:
69
70
  - lib/yuuki.rb
70
71
  - lib/yuuki/caller.rb
71
72
  - lib/yuuki/error.rb
73
+ - lib/yuuki/periodic.rb
72
74
  - lib/yuuki/runner.rb
73
75
  - lib/yuuki/version.rb
76
+ - sig/yuuki/caller.rbs
77
+ - sig/yuuki/error.rbs
78
+ - sig/yuuki/periodic.rbs
79
+ - sig/yuuki/runner.rbs
80
+ - sig/yuuki/version.rbs
74
81
  - yuuki.gemspec
75
82
  homepage: https://github.com/ishotihadus/yuuki
76
83
  licenses:
77
84
  - MIT
78
85
  metadata: {}
79
- post_install_message:
86
+ post_install_message:
80
87
  rdoc_options: []
81
88
  require_paths:
82
89
  - lib
@@ -91,8 +98,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
98
  - !ruby/object:Gem::Version
92
99
  version: '0'
93
100
  requirements: []
94
- rubygems_version: 3.0.1
95
- signing_key:
101
+ rubygems_version: 3.3.3
102
+ signing_key:
96
103
  specification_version: 4
97
104
  summary: A caller / runner framework for Ruby
98
105
  test_files: []