deploy_pin 1.1.3 → 1.2.1
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/README.md +20 -3
- data/lib/deploy_pin.rb +1 -0
- data/lib/deploy_pin/collector.rb +28 -20
- data/lib/deploy_pin/runner.rb +6 -6
- data/lib/deploy_pin/task_criteria.rb +29 -0
- data/lib/deploy_pin/version.rb +1 -1
- data/lib/tasks/deploy_pin_tasks.rake +4 -4
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea0329967282201470ee39ab8cf9bad06a025f7b9e450a48f3fda96e48433d7f
|
4
|
+
data.tar.gz: 35f10a49f28f6194f1b1e68d58f7a8958f47c1e254b6b38c56445c782e28ca0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddfc115d8671ce6d5c677bf07f47f88b07eae65e845f5380c7d71caa3ee544d435dd7d773af306ccd4ab6fb1d9e0f558ac23ad37ecc46d88d43440a2c5de1d8b
|
7
|
+
data.tar.gz: dc42d8b471074663325db88614c1a51f2ce538ac377c8fee07b8f655b09cf60df34791adb0da30e8d0d2237d452e54771936009c23e68413139169f0aa062425
|
data/README.md
CHANGED
@@ -36,9 +36,9 @@ To run all pending tasks
|
|
36
36
|
rake deploy_pin:run
|
37
37
|
```
|
38
38
|
|
39
|
-
|
40
|
-
~~~ please define allowed groups in config/initializers/deploy_pin.rb ~~~
|
39
|
+
## Groupped tasks
|
41
40
|
|
41
|
+
Please define allowed groups in `config/initializers/deploy_pin.rb`
|
42
42
|
if you want to group tasks around "allowed_group"
|
43
43
|
|
44
44
|
```bash
|
@@ -57,7 +57,24 @@ To run all pending tasks
|
|
57
57
|
rake deploy_pin:run[allowed_group]
|
58
58
|
```
|
59
59
|
|
60
|
+
## Run by uuid
|
61
|
+
|
62
|
+
To run some specific task by uuid
|
63
|
+
```bash
|
64
|
+
rake deploy_pin:run[uuid_1, uuid_2]
|
65
|
+
```
|
66
|
+
Or you can combine uuid and group
|
67
|
+
```bash
|
68
|
+
rake deploy_pin:run[uuid, allowed_group]
|
69
|
+
```
|
70
|
+
In case if you want to rerun task you should add exclamation mark in the end of uuid
|
71
|
+
```bash
|
72
|
+
rake deploy_pin:run['uuid_1!', 'uuid_2!']
|
73
|
+
```
|
74
|
+
|
60
75
|
## Installation
|
76
|
+
|
77
|
+
|
61
78
|
Add this line to your application's Gemfile:
|
62
79
|
|
63
80
|
```ruby
|
@@ -74,7 +91,7 @@ Or install it yourself as:
|
|
74
91
|
$ gem install deploy_pin
|
75
92
|
```
|
76
93
|
|
77
|
-
|
94
|
+
then generate configuration file
|
78
95
|
```bash
|
79
96
|
rails g deploy_pin:install
|
80
97
|
```
|
data/lib/deploy_pin.rb
CHANGED
data/lib/deploy_pin/collector.rb
CHANGED
@@ -3,26 +3,10 @@
|
|
3
3
|
# executes tasks
|
4
4
|
module DeployPin
|
5
5
|
class Collector
|
6
|
-
attr_reader :
|
6
|
+
attr_reader :identifiers
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
end
|
11
|
-
|
12
|
-
def files
|
13
|
-
Dir["#{DeployPin.tasks_path}/*.rb"]
|
14
|
-
end
|
15
|
-
|
16
|
-
def tasks
|
17
|
-
files.map do |file|
|
18
|
-
task = DeployPin::Task.new(file)
|
19
|
-
task.parse_file
|
20
|
-
|
21
|
-
next if task.done? # task is done
|
22
|
-
next unless groups.include?(task.group) # group mismatch
|
23
|
-
|
24
|
-
task
|
25
|
-
end.compact.sort # sort by group position in config
|
8
|
+
def initialize(identifiers:)
|
9
|
+
@identifiers = identifiers
|
26
10
|
end
|
27
11
|
|
28
12
|
def run
|
@@ -38,7 +22,7 @@ module DeployPin
|
|
38
22
|
task.run if executable
|
39
23
|
|
40
24
|
# mark each task as done
|
41
|
-
task.mark
|
25
|
+
task.mark unless task.done?
|
42
26
|
end
|
43
27
|
end
|
44
28
|
|
@@ -56,5 +40,29 @@ module DeployPin
|
|
56
40
|
task if _tasks[0..index].none? { |_task| task.eql?(_task) }
|
57
41
|
end.compact
|
58
42
|
end
|
43
|
+
|
44
|
+
def tasks_count
|
45
|
+
tasks.count
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def files
|
51
|
+
Dir["#{DeployPin.tasks_path}/*.rb"]
|
52
|
+
end
|
53
|
+
|
54
|
+
def tasks
|
55
|
+
files.map do |file|
|
56
|
+
task = DeployPin::Task.new(file)
|
57
|
+
task.parse_file
|
58
|
+
|
59
|
+
# check if task is suitable
|
60
|
+
task if task_criteria.suitable?(task)
|
61
|
+
end.compact.sort # sort by group position in config
|
62
|
+
end
|
63
|
+
|
64
|
+
def task_criteria
|
65
|
+
@task_criteria ||= DeployPin::TaskCriteria.new(identifiers: identifiers)
|
66
|
+
end
|
59
67
|
end
|
60
68
|
end
|
data/lib/deploy_pin/runner.rb
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
# executes tasks
|
4
4
|
module DeployPin
|
5
5
|
module Runner
|
6
|
-
def self.run(
|
7
|
-
DeployPin::Collector.new(
|
6
|
+
def self.run(identifiers:)
|
7
|
+
DeployPin::Collector.new(identifiers: identifiers).run do |index, count, task, executable|
|
8
8
|
self.print("[#{index + 1}/#{count}] Task #{task.title} #{task.uuid}##{task.group} (#{executable ? 'run' : 'skip'})")
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.list(
|
13
|
-
DeployPin::Collector.new(
|
12
|
+
def self.list(identifiers:)
|
13
|
+
DeployPin::Collector.new(identifiers: identifiers).list do |index, count, task|
|
14
14
|
self.print("======= Task ##{index} ========".white)
|
15
15
|
|
16
16
|
# print details
|
@@ -26,10 +26,10 @@ module DeployPin
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
def self.summary(
|
29
|
+
def self.summary(identifiers:)
|
30
30
|
# print summary
|
31
31
|
self.print("======= Summary ========")
|
32
|
-
self.print("tasks number: #{DeployPin::Collector.new(
|
32
|
+
self.print("tasks number: #{DeployPin::Collector.new(identifiers: identifiers).tasks_count}")
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.print(msg)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# check task criteria
|
4
|
+
module DeployPin
|
5
|
+
class TaskCriteria
|
6
|
+
SKIP_REGEXEP = /\A-(.+[^!])\z/
|
7
|
+
FORCE_REGEXP = /\A([^-].+)!\z/
|
8
|
+
COMMON_REGEXP = /(^[^-]*.+[^!]*$)/
|
9
|
+
|
10
|
+
attr_reader :identifiers
|
11
|
+
|
12
|
+
def initialize(identifiers:)
|
13
|
+
@identifiers = identifiers
|
14
|
+
end
|
15
|
+
|
16
|
+
def suitable?(task)
|
17
|
+
task_cover = ->(task, regexp) {
|
18
|
+
items = identifiers.flat_map {|x| x.to_s.scan(regexp) }.flatten
|
19
|
+
|
20
|
+
items & [task.group, task.uuid]
|
21
|
+
}
|
22
|
+
|
23
|
+
return false if task_cover.(task, SKIP_REGEXEP).any?
|
24
|
+
return true if task_cover.(task, FORCE_REGEXP).any?
|
25
|
+
|
26
|
+
task_cover.(task, COMMON_REGEXP).any? && !task.done?
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/deploy_pin/version.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
namespace :deploy_pin do
|
2
2
|
desc "run pending tasks"
|
3
|
-
task :run, [:
|
4
|
-
args.with_defaults(
|
3
|
+
task :run, [:identifiers] => :environment do |t, args|
|
4
|
+
args.with_defaults(identifiers: DeployPin.groups)
|
5
5
|
|
6
6
|
DeployPin::Runner.run(args)
|
7
7
|
end
|
8
8
|
|
9
|
-
task :list, [:
|
10
|
-
args.with_defaults(
|
9
|
+
task :list, [:identifiers] => :environment do |t, args|
|
10
|
+
args.with_defaults(identifiers: DeployPin.groups)
|
11
11
|
|
12
12
|
DeployPin::Runner.list(args)
|
13
13
|
DeployPin::Runner.summary(args)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deploy_pin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rafael
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -193,6 +193,7 @@ files:
|
|
193
193
|
- lib/deploy_pin/engine.rb
|
194
194
|
- lib/deploy_pin/runner.rb
|
195
195
|
- lib/deploy_pin/task.rb
|
196
|
+
- lib/deploy_pin/task_criteria.rb
|
196
197
|
- lib/deploy_pin/version.rb
|
197
198
|
- lib/generators/deploy_pin/install/USAGE
|
198
199
|
- lib/generators/deploy_pin/install/install_generator.rb
|
@@ -223,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
224
|
- !ruby/object:Gem::Version
|
224
225
|
version: '0'
|
225
226
|
requirements: []
|
226
|
-
rubygems_version: 3.0.
|
227
|
+
rubygems_version: 3.0.6
|
227
228
|
signing_key:
|
228
229
|
specification_version: 4
|
229
230
|
summary: pin some task around deployment
|