spud 0.2.9 → 0.2.10

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
  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