dk 0.1.0 → 0.1.1

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
- ---
2
- SHA512:
3
- data.tar.gz: 6d18c6023b43628117f27c2b7c60441a125ba6f126cd40a712cf635e7f9956728b68d94387ccfee8d4a4b26047dd1de48328304c428c5477727aa560238c46b9
4
- metadata.gz: c3224e1ceea343b4a365dde9955d30e4cb6062365053e44a0fe17c00b90a32363365135259fdaf6b3651a24e6bff0b7f2fc9a704c0902fdf85f6460391610778
5
- SHA1:
6
- data.tar.gz: 5dc5bf7f2a83491664acdb2a9d55112149eed2e3
7
- metadata.gz: 494082902e15484e13409bad7f209d6342ac671a
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c14d5db8726cb02f2fd49b2925a6668c2ba4b2726f2bc8fe09930a59464e3bbf
4
+ data.tar.gz: 1e15c547e84c278fbe6f00bf3cd03ab87503fdf7cc7f88086389f8f72334da4d
5
+ SHA512:
6
+ metadata.gz: 35fb927197d925fd5c67b46787a9ca696c048a0796c4cfc684f658e2ef728d379ae4291f6848de0de000c55857831c58c8517e3174ec55e988c134198604a036
7
+ data.tar.gz: b6ec29e8044f4921a0309a9e40f4ebddb173de26b00917bc3f0f8b6ecc0fa2ef1fc1b354a25d65f16dc6ec595629350d99e9abf8fbf894bc1506782b1a135bb0
data/README.md CHANGED
@@ -30,6 +30,7 @@ Now route this task with a name so it can be run from the CLI:
30
30
  ```ruby
31
31
  # in config/dk.rb or whatever
32
32
  require 'dk'
33
+ require 'my_task'
33
34
 
34
35
  Dk.configure do
35
36
 
@@ -46,6 +47,8 @@ my-task # my task that does something great
46
47
  $ dk my-task
47
48
  ```
48
49
 
50
+ See [dk-abdeploy](https://github.com/redding/dk-abdeploy#usage) for another example using Dk tasks to deploy code.
51
+
49
52
  ### CLI
50
53
 
51
54
  ```
@@ -311,6 +314,8 @@ Each callback can be optionally configured with a set of params. Callbacks can
311
314
 
312
315
  ##### `ssh_hosts`
313
316
 
317
+ Use the `ssh_hosts` helper to set new ssh host lists values like you would on the main config:
318
+
314
319
  ```ruby
315
320
  require 'dk/task'
316
321
 
@@ -331,10 +336,12 @@ class MyTask
331
336
  end
332
337
  ```
333
338
 
334
- Use the `ssh_hosts` method to set new ssh host lists values like you would on the main config. Any subsequent tasks that are run will have these ssh hosts available to their `ssh` commands.
339
+ Any subsequent tasks that are run will have these ssh hosts available to their `ssh` commands.
335
340
 
336
341
  ##### `run_task`
337
342
 
343
+ Use the `run_task` helper to run other tasks:
344
+
338
345
  ```ruby
339
346
  require 'dk/task'
340
347
  require 'my_other_task'
@@ -353,10 +360,12 @@ class MyTask
353
360
  end
354
361
  ```
355
362
 
356
- Use the `run_task` helper to run other tasks. This method takes an optional set of param values. Any params given will be merged onto the global config params and made available to just the task being run.
363
+ This method takes an optional set of param values. Any params given will be merged onto the global config params and made available to just the task being run.
357
364
 
358
365
  ##### `cmd`, `cmd!`
359
366
 
367
+ Use the `cmd` and `cmd!` helpers to run local system cmds:
368
+
360
369
  ```ruby
361
370
  require 'dk/task'
362
371
 
@@ -371,10 +380,55 @@ class MyTask
371
380
  end
372
381
  ```
373
382
 
374
- Use the `cmd` helper to run local system cmds. Pass it a string system command to run and it runs it using [Scmd](https://github.com/redding/scmd). You can [optionally pass in an `:env` param](https://github.com/redding/scmd#environment-variables) with any ENV vars that need to be set. A `Dk::Local::Cmd` object is returned so you can access data such as the `stdout`, `stderr` and whether the command was successful or not.
383
+ Pass them a string system command to run and it runs it using [Scmd](https://github.com/redding/scmd). You can [optionally pass in an `:env` param](https://github.com/redding/scmd#environment-variables) with any ENV vars that need to be set. A `Dk::Local::Cmd` object is returned so you can access data such as the `stdout`, `stderr` and whether the command was successful or not.
375
384
 
376
385
  The `cmd!` helper is identical to the `cmd` helper except that it raises a `Dk::Task::CmdRunError` if the command was not successful.
377
386
 
387
+ ##### `start`
388
+
389
+ Use the `start` helper to asynchronously run a local system cmd:
390
+
391
+ ```ruby
392
+ require 'dk/task'
393
+
394
+ class MyTask
395
+ include Dk::Task
396
+
397
+ def run!
398
+ # run, but don't block waiting on an exitstatus
399
+ server_cmd = start "bin/server"
400
+
401
+ server_cmd.running? # => true
402
+ server_cmd.pid # => 12345
403
+ server_cmd.exitstatus # => nil
404
+
405
+ # do other stuff...
406
+
407
+ server_cmd.wait # wait indefinitely until cmd exits
408
+ server_cmd.running? # => false
409
+ server_cmd.pid # => 12345
410
+ server_cmd.exitstatus # => 0
411
+ end
412
+
413
+ end
414
+ ```
415
+
416
+ OR, you can also asynchorously run with timeouts:
417
+
418
+ ```ruby
419
+ # run, but don't block waiting on an exitstatus
420
+ server_cmd = start "bin/server"
421
+
422
+ begin
423
+ server_cmd.wait(10)
424
+ rescue Dk::CmdTimeoutError => err
425
+ cmd.stop(10) # attempt to stop the cmd nicely, kill if doesn't stop in time
426
+ cmd.kill # OR, just kill the cmd now
427
+ end
428
+ ```
429
+
430
+ This helper behaves just like `cmd` and `cmd!`. The only difference is it won't block waiting for the system command to run. It uses [Scmd](https://github.com/redding/scmd) to run system commmands and proxies most of its command API - see [the Scmd usage docs](https://github.com/redding/scmd#usage) for additional reference.
431
+
378
432
  ##### `ssh`, `ssh!`
379
433
 
380
434
  ```ruby
data/dk.gemspec CHANGED
@@ -22,6 +22,6 @@ Gem::Specification.new do |gem|
22
22
 
23
23
  gem.add_dependency("much-plugin", ["~> 0.2.0"])
24
24
  gem.add_dependency("scmd", ["~> 3.0.3"])
25
- gem.add_dependency("logsly", ["~> 1.3.2"])
25
+ gem.add_dependency("logsly", ["~> 1.3.3"])
26
26
 
27
27
  end
data/lib/dk.rb CHANGED
@@ -20,7 +20,8 @@ module Dk
20
20
  @config = Config.new
21
21
  end
22
22
 
23
- NoticeError = Class.new(RuntimeError)
24
- NoParamError = Class.new(ArgumentError)
23
+ NoticeError = Class.new(RuntimeError)
24
+ NoParamError = Class.new(ArgumentError)
25
+ CmdTimeoutError = Class.new(RuntimeError)
25
26
 
26
27
  end
@@ -16,13 +16,34 @@ module Dk::Local
16
16
 
17
17
  def to_s; self.cmd_str; end
18
18
 
19
+ def start(input = nil)
20
+ @scmd.start(input)
21
+ self
22
+ end
23
+
24
+ def wait(timeout = nil)
25
+ begin
26
+ @scmd.wait(timeout)
27
+ rescue Scmd::TimeoutError => e
28
+ raise Dk::CmdTimeoutError, e.message
29
+ end
30
+ self
31
+ end
32
+
33
+ def stop(timeout = nil)
34
+ @scmd.stop(timeout)
35
+ self
36
+ end
37
+
19
38
  def run(input = nil)
20
39
  @scmd.run(input)
21
40
  self
22
41
  end
23
42
 
43
+ def pid; @scmd.pid; end
24
44
  def stdout; @scmd.stdout; end
25
45
  def stderr; @scmd.stderr; end
46
+ def running?; @scmd.running?; end
26
47
  def success?; @scmd.success?; end
27
48
 
28
49
  def output_lines
@@ -65,6 +86,11 @@ module Dk::Local
65
86
  @cmd_opts = opts
66
87
  end
67
88
 
89
+ def start_input
90
+ return nil unless self.start_called?
91
+ self.start_calls.first.input
92
+ end
93
+
68
94
  def run_input
69
95
  return nil unless self.run_called?
70
96
  self.run_calls.first.input
@@ -74,6 +100,9 @@ module Dk::Local
74
100
  def stderr=(value); @scmd.stderr = value; end
75
101
  def exitstatus=(value); @scmd.exitstatus = value; end
76
102
 
103
+ def start_calls; @scmd.start_calls; end
104
+ def start_called?; @scmd.start_called?; end
105
+
77
106
  def run_calls; @scmd.run_calls; end
78
107
  def run_called?; @scmd.run_called?; end
79
108
 
@@ -109,12 +109,16 @@ module Dk
109
109
  self.logger.debug "===================================="
110
110
  end
111
111
 
112
- def cmd(task, cmd_str, input, given_opts)
113
- build_and_run_local_cmd(task, cmd_str, input, given_opts)
112
+ def start(*args)
113
+ build_and_start_local_cmd(*args)
114
114
  end
115
115
 
116
- def ssh(task, cmd_str, input, given_opts, ssh_opts)
117
- build_and_run_remote_cmd(task, cmd_str, input, given_opts, ssh_opts)
116
+ def cmd(*args)
117
+ build_and_run_local_cmd(*args)
118
+ end
119
+
120
+ def ssh(*args)
121
+ build_and_run_remote_cmd(*args)
118
122
  end
119
123
 
120
124
  def has_run_task?(task_class)
@@ -150,9 +154,17 @@ module Dk
150
154
  task_class.new(self, params)
151
155
  end
152
156
 
153
- def build_and_run_local_cmd(task, cmd_str, input, given_opts)
157
+ def build_and_start_local_cmd(*args)
158
+ build_and_log_local_cmd(*args){ |cmd, input| cmd.start(input) }
159
+ end
160
+
161
+ def build_and_run_local_cmd(*args)
162
+ build_and_log_local_cmd(*args){ |cmd, input| cmd.run(input) }
163
+ end
164
+
165
+ def build_and_log_local_cmd(task, cmd_str, input, given_opts, &block)
154
166
  local_cmd = build_local_cmd(task, cmd_str, input, given_opts)
155
- log_local_cmd(local_cmd){ |cmd| cmd.run(input) }
167
+ log_local_cmd(local_cmd){ |cmd| block.call(cmd, input) }
156
168
  end
157
169
 
158
170
  # input is needed for the `TestRunner` so it can use it with stubbing
@@ -65,6 +65,12 @@ module Dk
65
65
  @dk_runner.run_task(task_class, params)
66
66
  end
67
67
 
68
+ def start(cmd_str, *args)
69
+ given_opts = args.last.kind_of?(::Hash) ? args.pop : nil
70
+ input = args.last
71
+ @dk_runner.start(self, cmd_str, input, given_opts)
72
+ end
73
+
68
74
  def cmd(cmd_str, *args)
69
75
  given_opts = args.last.kind_of?(::Hash) ? args.pop : nil
70
76
  input = args.last
@@ -23,14 +23,19 @@ module Dk
23
23
  TaskRun.new(task_class, params).tap{ |tr| self.runs << tr }
24
24
  end
25
25
 
26
+ # track that a local cmd was started
27
+ def start(*args)
28
+ super(*args).tap{ |c| self.runs << c }
29
+ end
30
+
26
31
  # track that a local cmd was run
27
- def cmd(task, cmd_str, input, given_opts)
28
- super(task, cmd_str, input, given_opts).tap{ |c| self.runs << c }
32
+ def cmd(*args)
33
+ super(*args).tap{ |c| self.runs << c }
29
34
  end
30
35
 
31
36
  # track that a remote cmd was run
32
- def ssh(task, cmd_str, input, given_opts, ssh_opts)
33
- super(task, cmd_str, input, given_opts, ssh_opts).tap{ |c| self.runs << c }
37
+ def ssh(*args)
38
+ super(*args).tap{ |c| self.runs << c }
34
39
  end
35
40
 
36
41
  # test task API
@@ -1,3 +1,3 @@
1
1
  module Dk
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -50,7 +50,7 @@ module Dk::Local
50
50
  end
51
51
 
52
52
  should have_readers :scmd, :cmd_str
53
- should have_imeths :to_s, :run
53
+ should have_imeths :to_s, :start, :wait, :stop, :run
54
54
  should have_imeths :stdout, :stderr, :success?, :output_lines
55
55
 
56
56
  should "build an scmd with the cmd str and any given :env option" do
@@ -67,15 +67,56 @@ module Dk::Local
67
67
  assert_equal subject.cmd_str, subject.to_s
68
68
  end
69
69
 
70
- should "demeter its scmd" do
70
+ should "demeter its scmd starts" do
71
+ assert_false @scmd_spy.start_called?
72
+
73
+ input = Factory.string
74
+ subject.start(input)
75
+ assert_true @scmd_spy.start_called?
76
+ assert_equal input, @scmd_spy.start_calls.last.input
77
+
78
+ wait_timeout = Factory.integer(10)
79
+ subject.wait(wait_timeout)
80
+ assert_true @scmd_spy.wait_called?
81
+ assert_equal wait_timeout, @scmd_spy.wait_calls.last.timeout
82
+
83
+ stop_timeout = Factory.integer(10)
84
+ subject.stop(stop_timeout)
85
+ assert_true @scmd_spy.stop_called?
86
+ assert_equal stop_timeout, @scmd_spy.stop_calls.last.timeout
87
+
88
+ assert_equal @scmd_spy.pid, subject.pid
89
+ assert_equal @scmd_spy.stdout, subject.stdout
90
+ assert_equal @scmd_spy.stderr, subject.stderr
91
+ assert_equal @scmd_spy.running?, subject.running?
92
+ assert_equal @scmd_spy.success?, subject.success?
93
+ end
94
+
95
+ should "demeter its scmd timeout errors" do
96
+ scmd_timeout_error_message = Factory.string
97
+ Assert.stub(@scmd_spy, :wait) do
98
+ raise Scmd::TimeoutError, scmd_timeout_error_message
99
+ end
100
+
101
+ subject.start
102
+ wait_timeout = Factory.integer(10)
103
+ e = assert_raises { subject.wait(wait_timeout) }
104
+
105
+ assert_equal Dk::CmdTimeoutError, e.class
106
+ assert_equal scmd_timeout_error_message, e.message
107
+ end
108
+
109
+ should "demeter its scmd runs" do
71
110
  assert_false @scmd_spy.run_called?
72
111
  input = Factory.string
73
112
  subject.run(input)
74
113
  assert_true @scmd_spy.run_called?
75
114
  assert_equal input, @scmd_spy.run_calls.last.input
76
115
 
116
+ assert_equal @scmd_spy.pid, subject.pid
77
117
  assert_equal @scmd_spy.stdout, subject.stdout
78
118
  assert_equal @scmd_spy.stderr, subject.stderr
119
+ assert_equal @scmd_spy.running?, subject.running?
79
120
  assert_equal @scmd_spy.success?, subject.success?
80
121
  end
81
122
 
@@ -56,7 +56,7 @@ class Dk::Runner
56
56
  should have_imeths :run, :run_task
57
57
  should have_imeths :log_info, :log_debug, :log_error
58
58
  should have_imeths :log_task_run, :log_cli_run
59
- should have_imeths :cmd, :ssh
59
+ should have_imeths :start, :cmd, :ssh
60
60
  should have_imeths :has_run_task?, :pretty_run_time
61
61
 
62
62
  should "know its attrs" do
@@ -265,7 +265,7 @@ class Dk::Runner
265
265
  exp = "#{(run_time * 10_000).round / 10.0}ms"
266
266
  assert_equal exp, subject.pretty_run_time(run_time)
267
267
 
268
- run_time = Factory.float (0.1) + 1.5
268
+ run_time = Factory.float(0.1) + 1.5
269
269
  exp = "#{run_time.to_i / 60}:#{(run_time.round % 60).to_i.to_s.rjust(2, '0')}s"
270
270
  assert_equal exp, subject.pretty_run_time(run_time)
271
271
  end
@@ -308,7 +308,20 @@ class Dk::Runner
308
308
  Assert.stub(subject, :pretty_run_time){ @pretty_run_time }
309
309
  end
310
310
 
311
- should "build, log and run local cmds" do
311
+ should "build, log, and start local cmds" do
312
+ @runner.start(@task, @cmd_str, @cmd_input, @cmd_given_opts)
313
+
314
+ exp = [@cmd_str, @cmd_given_opts]
315
+ assert_equal exp, @local_cmd_new_called_with
316
+
317
+ assert_not_nil @local_cmd
318
+ assert_true @local_cmd.start_called?
319
+ assert_equal @cmd_input, @local_cmd.start_input
320
+
321
+ assert_equal exp_log_output(@local_cmd), @log_out
322
+ end
323
+
324
+ should "build, log, and run local cmds" do
312
325
  @runner.cmd(@task, @cmd_str, @cmd_input, @cmd_given_opts)
313
326
 
314
327
  exp = [@cmd_str, @cmd_given_opts]
@@ -290,6 +290,38 @@ module Dk::Task
290
290
 
291
291
  end
292
292
 
293
+ class StartPrivateHelpersTests < InitTests
294
+
295
+ should "start local cmds, calling to the runner" do
296
+ runner_start_called_with = nil
297
+ Assert.stub(@runner, :start) do |*args|
298
+ runner_start_called_with = args
299
+ Assert.stub_send(@runner, :start, *args)
300
+ end
301
+
302
+ cmd_str = Factory.string
303
+ cmd_input = Factory.string
304
+ cmd_opts = { Factory.string => Factory.string }
305
+
306
+ subject.instance_eval{ start(cmd_str, cmd_input, cmd_opts) }
307
+ exp = [subject, cmd_str, cmd_input, cmd_opts]
308
+ assert_equal exp, runner_start_called_with
309
+
310
+ subject.instance_eval{ start(cmd_str) }
311
+ exp = [subject, cmd_str, nil, nil]
312
+ assert_equal exp, runner_start_called_with
313
+
314
+ subject.instance_eval{ start(cmd_str, cmd_input) }
315
+ exp = [subject, cmd_str, cmd_input, nil]
316
+ assert_equal exp, runner_start_called_with
317
+
318
+ subject.instance_eval{ start(cmd_str, cmd_opts) }
319
+ exp = [subject, cmd_str, nil, cmd_opts]
320
+ assert_equal exp, runner_start_called_with
321
+ end
322
+
323
+ end
324
+
293
325
  class CmdPrivateHelpersTests < InitTests
294
326
 
295
327
  should "run local cmds, calling to the runner" do
metadata CHANGED
@@ -1,69 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dk
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Kelly Redding
8
8
  - Collin Redding
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2016-08-16 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2019-04-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: assert
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
22
20
  version: 2.16.3
23
21
  type: :development
24
- version_requirements: *id001
25
- - !ruby/object:Gem::Dependency
26
- name: much-plugin
27
22
  prerelease: false
28
- requirement: &id002 !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 2.16.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: much-plugin
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
32
34
  version: 0.2.0
33
35
  type: :runtime
34
- version_requirements: *id002
35
- - !ruby/object:Gem::Dependency
36
- name: scmd
37
36
  prerelease: false
38
- requirement: &id003 !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ~>
41
- - !ruby/object:Gem::Version
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.2.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: scmd
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
42
48
  version: 3.0.3
43
49
  type: :runtime
44
- version_requirements: *id003
45
- - !ruby/object:Gem::Dependency
46
- name: logsly
47
50
  prerelease: false
48
- requirement: &id004 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ~>
51
- - !ruby/object:Gem::Version
52
- version: 1.3.2
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 3.0.3
56
+ - !ruby/object:Gem::Dependency
57
+ name: logsly
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.3.3
53
63
  type: :runtime
54
- version_requirements: *id004
55
- description: "\"Why'd you name this repo dk?\" \"Don't know\" (this is some automated task runner thingy ala cap/rake)"
56
- email:
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.3.3
70
+ description: '"Why''d you name this repo dk?" "Don''t know" (this is some automated
71
+ task runner thingy ala cap/rake)'
72
+ email:
57
73
  - kelly@kellyredding.com
58
74
  - collin.redding@me.com
59
- executables:
75
+ executables:
60
76
  - dk
61
77
  extensions: []
62
-
63
78
  extra_rdoc_files: []
64
-
65
- files:
66
- - .gitignore
79
+ files:
80
+ - ".gitignore"
67
81
  - Gemfile
68
82
  - LICENSE
69
83
  - README.md
@@ -118,32 +132,31 @@ files:
118
132
  - test/unit/tree_runner_tests.rb
119
133
  - tmp/.gitkeep
120
134
  homepage: https://github.com/redding/dk
121
- licenses:
135
+ licenses:
122
136
  - MIT
123
137
  metadata: {}
124
-
125
138
  post_install_message:
126
139
  rdoc_options: []
127
-
128
- require_paths:
140
+ require_paths:
129
141
  - lib
130
- required_ruby_version: !ruby/object:Gem::Requirement
131
- requirements:
132
- - &id005
133
- - ">="
134
- - !ruby/object:Gem::Version
135
- version: "0"
136
- required_rubygems_version: !ruby/object:Gem::Requirement
137
- requirements:
138
- - *id005
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
139
152
  requirements: []
140
-
141
153
  rubyforge_project:
142
- rubygems_version: 2.6.4
154
+ rubygems_version: 2.7.7
143
155
  signing_key:
144
156
  specification_version: 4
145
- summary: "\"Why'd you name this repo dk?\" \"Don't know\" (this is some automated task runner thingy ala cap/rake)"
146
- test_files:
157
+ summary: '"Why''d you name this repo dk?" "Don''t know" (this is some automated task
158
+ runner thingy ala cap/rake)'
159
+ test_files:
147
160
  - test/helper.rb
148
161
  - test/support/config/dk.rb
149
162
  - test/support/config/task_defs.rb