spud 0.2.9 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c375bdd21d64dcddbdb86e7d3aef2c8e04abd0b5
4
- data.tar.gz: 26d2be23293edfa1305ab3b28684e04a3d2d98ec
3
+ metadata.gz: d0b081b3d20c3a0b253e2383b4a514aac28edcf8
4
+ data.tar.gz: da8443efc8c52b187e84158075cee7d5875de020
5
5
  SHA512:
6
- metadata.gz: 8689e8cbf001ad043337b556a7e6c981c67481eac17c10810da3d9d5f851fb0def39cb5a828d0d96022b722828447412cc3f3a730d599f756d59098df32a5a21
7
- data.tar.gz: 033f5a3b43d2d1d99247cf75d1aa98c9d42e69f99cfaa50201f66253681388b8f55c80c1f008691cabb9e23aef4f6d5daed418d2958c6b3b4714e98121de279b
6
+ metadata.gz: 3798ff8d115c5c1cdafcca5f134531f5df5932a7bbfafd1d33b07486dd132cf49674888fa45c1708d058a9f2b6653f2ce8e642c93112313cec684a31b6ebde7d
7
+ data.tar.gz: e0f7c61cfc28af1d0f4b821fb904731240e842f35846c6d3257153223d814adc6875cf49241d046cfa0dd1c24d33f39fc59abe009a99c6ad6acb22e9493e4e04
@@ -8,6 +8,7 @@ require 'spud/cli/parser'
8
8
  require 'spud/cli/options'
9
9
  require 'spud/task_runners/task'
10
10
  require 'spud/task_runners/task_runners'
11
+ require 'spud/task_runners/spud_task_runner/task'
11
12
 
12
13
  module Spud
13
14
  class Driver
@@ -39,18 +40,12 @@ module Spud
39
40
  return
40
41
  end
41
42
 
42
- task = T.must(args.task)
43
43
  if options.inspect?
44
- puts get_task(task).details
44
+ inspect!
45
45
  return
46
46
  end
47
47
 
48
- unless options.watches.empty?
49
- watch!
50
- return
51
- end
52
-
53
- invoke(task, args.ordered, args.named)
48
+ invoke!
54
49
  rescue Error => error
55
50
  puts error.message
56
51
  raise error if debug?
@@ -61,9 +56,7 @@ module Spud
61
56
  raise error if debug?
62
57
  end
63
58
 
64
- sig do
65
- params(name: String, ordered: T::Array[String], named: T::Hash[T.any(String, Symbol), String]).returns(T.untyped)
66
- end
59
+ sig {params(name: String, ordered: T::Array[String], named: T::Hash[T.any(String, Symbol), String]).returns(T.untyped)}
67
60
  def invoke(name, ordered, named)
68
61
  get_task(name).invoke(ordered, stringify_keys(named))
69
62
  end
@@ -81,14 +74,31 @@ module Spud
81
74
  private
82
75
 
83
76
  sig {void}
84
- def watch!
85
- Watch.run!(
86
- driver: self,
87
- task: T.must(args.task),
88
- ordered: args.ordered,
89
- named: args.named,
90
- watches: options.watches,
91
- )
77
+ def invoke!
78
+ task_name = T.must(args.task)
79
+ task = get_task(task_name)
80
+
81
+ watches = options.watches
82
+ watches = task.watches if watches.empty?
83
+
84
+ if watches.empty?
85
+ invoke(task_name, args.ordered, args.named)
86
+ else
87
+ raise Error, "watches only supported for Spud tasks" unless task.is_a?(TaskRunners::SpudTaskRunner::Task)
88
+
89
+ Watch.run!(
90
+ driver: self,
91
+ task: task_name,
92
+ ordered: args.ordered,
93
+ named: args.named,
94
+ watches: watches,
95
+ )
96
+ end
97
+ end
98
+
99
+ sig {void}
100
+ def inspect!
101
+ puts get_task(T.must(args.task)).details
92
102
  end
93
103
 
94
104
  sig {params(task_name: String).returns(TaskRunners::Task)}
@@ -33,16 +33,23 @@ module Spud
33
33
  sig do
34
34
  params(
35
35
  name: T.any(String, Symbol),
36
- dependencies: T::Hash[T.any(String, T::Array[String]), T.any(String, T::Array[String])],
36
+ opts: T::Hash[T.any(Symbol, String, T::Array[String]), T.any(String, T::Array[String])],
37
37
  block: Proc,
38
38
  ).void
39
39
  end
40
- def task(name, dependencies = {}, &block)
40
+ def task(name, opts = {}, &block)
41
+ watches = opts.delete(:watch)
42
+ dependencies = T.cast(
43
+ opts.reject { |key, _| key.is_a?(Symbol) },
44
+ T::Hash[T.any(String, T::Array[String]), T.any(String, T::Array[String])],
45
+ )
46
+
41
47
  @__tasks << Task.new(
42
48
  driver: @__driver,
43
49
  name: Task.qualified_name(@__filename, name.to_s),
44
50
  filename: @__filename,
45
51
  dependencies: dependencies,
52
+ watches: [watches].flatten.compact,
46
53
  file_dsl: self,
47
54
  &block
48
55
  )
@@ -26,6 +26,9 @@ module Spud
26
26
  sig {returns(T::Array[Dependency])}
27
27
  attr_reader :dependencies
28
28
 
29
+ sig {override.returns(T::Array[String])}
30
+ attr_reader :watches
31
+
29
32
  sig {override.params(driver: Driver).returns(T::Array[TaskRunners::Task])}
30
33
  def self.tasks(driver)
31
34
  Dir['Spudfile', '*.spud'].flat_map { |filename| FileDSL.run(driver, filename) }
@@ -50,15 +53,16 @@ module Spud
50
53
  name: String,
51
54
  filename: String,
52
55
  dependencies: T::Hash[T.any(String, T::Array[String]), T.any(String, T::Array[String])],
56
+ watches: T::Array[String],
53
57
  file_dsl: FileDSL,
54
58
  block: Proc,
55
- )
56
- .void
59
+ ).void
57
60
  end
58
- def initialize(driver:, name:, filename:, dependencies:, file_dsl:, &block)
61
+ def initialize(driver:, name:, filename:, dependencies:, watches:, file_dsl:, &block)
59
62
  @driver = driver
60
63
  @name = name
61
64
  @filename = filename
65
+ @watches = watches
62
66
  @dependencies = dependencies.map { |to, from| Dependency.new(to, from) }
63
67
  @file_dsl = file_dsl
64
68
  @block = block
@@ -22,6 +22,11 @@ module Spud
22
22
  sig {abstract.params(ordered: T::Array[String], named: T::Hash[String, String]).returns(T.untyped)}
23
23
  def invoke(ordered, named); end
24
24
 
25
+ sig {overridable.returns(T::Array[String])}
26
+ def watches
27
+ []
28
+ end
29
+
25
30
  sig {overridable.returns(TaskArgs)}
26
31
  def args
27
32
  TaskArgs.new([])
@@ -1,4 +1,4 @@
1
1
  # typed: strict
2
2
  module Spud
3
- VERSION = '0.2.9'
3
+ VERSION = '0.2.10'
4
4
  end
@@ -42,6 +42,7 @@ module Spud
42
42
  def run!
43
43
  thread = T.let(nil, T.nilable(Thread))
44
44
 
45
+ puts "running '#{@task}' on changes to #{@watches.map { |glob| "'#{glob}'" }.join(', ')}"
45
46
  loop do
46
47
  if watches_changed?
47
48
  thread&.kill
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Booth