sfb_scripts 0.1.7 → 0.1.8
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/bin/app_up +5 -5
- data/lib/sfb_scripts/bundler/bundle_manager.rb +28 -8
- data/lib/sfb_scripts/folder_guard.rb +11 -0
- data/lib/sfb_scripts/migrations/migrator.rb +6 -14
- data/lib/sfb_scripts/needs_manager.rb +16 -2
- data/lib/sfb_scripts/upper.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ad64628594616c16074cdf1dc8a025a2d788778
|
4
|
+
data.tar.gz: 48f17df97550e050c646e3c15cae131a14a07a1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66862b0679ce60cd59bd4075627014fe2cc9c13228ce18c6e6d956687d757a7c067353287553917d5a688e39da8e133a82e959ffc85fd43ac96efae16b190377
|
7
|
+
data.tar.gz: 0df73ca2bf1cb38a5444ff17ce152504d628bc2c3ee4466af52586f65b46064428120bac50e9a53bee22446bec0f745762512bc2b8d3beb116d11a6e8c652e6d
|
data/bin/app_up
CHANGED
@@ -9,12 +9,12 @@ class CLI < Thor
|
|
9
9
|
# REBASE
|
10
10
|
#
|
11
11
|
|
12
|
-
desc "
|
12
|
+
desc "up", "Rebase your commits onto master. Bundle installs and migrates as needed. Will terminate if conflicts are found."
|
13
13
|
option :loud, :type => :boolean, :desc => 'Pipe output to terminal or not (output is always piped to /tmp/app_up.log)'
|
14
|
-
option :no_git, aliases:
|
15
|
-
option :
|
14
|
+
option :no_git, aliases: ['--no-pull', '--no-rebase', '--all'], :type => :boolean, :desc => "Don't update the repo, just bundle and migrate everywhere."
|
15
|
+
option :engines, type: :boolean, default: false, desc: "Perform actions in engines as well"
|
16
16
|
|
17
|
-
def
|
17
|
+
def up
|
18
18
|
if options[:no_git]
|
19
19
|
Upper.no_git(options)
|
20
20
|
else
|
@@ -32,7 +32,7 @@ class CLI < Thor
|
|
32
32
|
Upper.pre_push_hook(git_command, options)
|
33
33
|
end
|
34
34
|
|
35
|
-
default_task :
|
35
|
+
default_task :up
|
36
36
|
end
|
37
37
|
|
38
38
|
CLI.start(ARGV)
|
@@ -1,24 +1,25 @@
|
|
1
1
|
class BundleManager
|
2
|
-
attr_accessor :shell, :repo, :queue
|
2
|
+
attr_accessor :shell, :repo, :queue, :folder_guard
|
3
3
|
|
4
|
-
def initialize(repo: raise, shell: raise)
|
4
|
+
def initialize(repo: raise, shell: raise, queue: raise, folder_guard: folder_guard)
|
5
5
|
@shell = shell
|
6
6
|
@repo = repo
|
7
|
-
@queue =
|
7
|
+
@queue = queue
|
8
|
+
@folder_guard = folder_guard
|
8
9
|
end
|
9
10
|
|
10
11
|
def bundle_where_necessary
|
11
12
|
shell.notify "\nBundling:"
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
bundle(directory_of(gemfile_lock))
|
16
|
-
end
|
13
|
+
directories_to_bundle.each do |dir|
|
14
|
+
queue.enqueue_b do
|
15
|
+
bundle(dir)
|
17
16
|
end
|
18
17
|
end
|
19
18
|
queue.join
|
20
19
|
end
|
21
20
|
|
21
|
+
private
|
22
|
+
|
22
23
|
def bundle(gemfile_directory)
|
23
24
|
begin
|
24
25
|
shell.run "bundle install --local", dir: gemfile_directory
|
@@ -28,6 +29,25 @@ class BundleManager
|
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
32
|
+
def directories_to_bundle
|
33
|
+
changed_gemfile_locks.map do |gemfile_lock|
|
34
|
+
directory_of(gemfile_lock)
|
35
|
+
end
|
36
|
+
.select do |dir|
|
37
|
+
folder_guard.allowed?(dir)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def changed_gemfile_locks
|
42
|
+
all_gemfile_locks.select do |gemfile_lock|
|
43
|
+
repo.changed?(gemfile_lock)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def all_gemfile_locks
|
48
|
+
find("Gemfile.lock")
|
49
|
+
end
|
50
|
+
|
31
51
|
def find(file_name)
|
32
52
|
Dir.glob("**/#{file_name}")
|
33
53
|
end
|
@@ -1,14 +1,13 @@
|
|
1
1
|
class Migrator
|
2
|
-
attr_accessor :shell, :repo, :queue
|
2
|
+
attr_accessor :shell, :repo, :queue, :folder_guard
|
3
3
|
|
4
4
|
# hack: move engines flag into
|
5
5
|
# another object that decides
|
6
|
-
def initialize(repo: raise, shell: raise,
|
6
|
+
def initialize(repo: raise, shell: raise, queue: raise, folder_guard: raise)
|
7
7
|
@shell = shell
|
8
8
|
@repo = repo
|
9
|
-
@
|
10
|
-
|
11
|
-
@queue = WorkQueue.new(8, nil)
|
9
|
+
@queue = queue
|
10
|
+
@folder_guard = folder_guard
|
12
11
|
end
|
13
12
|
|
14
13
|
def migrate_where_necessary
|
@@ -23,7 +22,7 @@ class Migrator
|
|
23
22
|
|
24
23
|
def directories_to_migrate
|
25
24
|
migrate_dirs = repo.files_changed.select {|f| f.match("/migrate/") }.map {|f| File.dirname(f) }.map {|dir| dir.gsub(/\/db\/migrate$/, '')}.uniq
|
26
|
-
migrate_dirs.select {|d|
|
25
|
+
migrate_dirs.select {|d| folder_guard.allowed?(d) };
|
27
26
|
end
|
28
27
|
|
29
28
|
private
|
@@ -38,14 +37,7 @@ class Migrator
|
|
38
37
|
end
|
39
38
|
|
40
39
|
def in_rack_application?(migrate_dir)
|
41
|
-
|
42
|
-
true
|
43
|
-
else
|
44
|
-
! migrate_dir.match(/engines/)
|
45
|
-
end
|
40
|
+
folder_guard.allowed?(migrate_dir)
|
46
41
|
end
|
47
42
|
|
48
|
-
def migrate_engines?
|
49
|
-
@migrate_engines
|
50
|
-
end
|
51
43
|
end
|
@@ -16,10 +16,14 @@ require_relative 'test_running/test_collection'
|
|
16
16
|
require_relative 'test_running/test_file_runner'
|
17
17
|
require_relative 'test_running/test_method_runner'
|
18
18
|
require_relative 'test_running/test_runner'
|
19
|
+
require_relative 'folder_guard'
|
19
20
|
|
20
21
|
|
21
22
|
class NeedsManager
|
22
23
|
|
24
|
+
BUNDLER_MAX_THREAD_COUNT = 2
|
25
|
+
MIGRATOR_MAX_THREAD_COUNT = 8
|
26
|
+
|
23
27
|
def self.configure(task, needs, options)
|
24
28
|
new(task, needs, options).configure
|
25
29
|
end
|
@@ -36,6 +40,8 @@ class NeedsManager
|
|
36
40
|
set_working_directory
|
37
41
|
|
38
42
|
create_shell
|
43
|
+
create_folder_guard
|
44
|
+
|
39
45
|
create_repo if needs.include? :repo
|
40
46
|
create_bundler if needs.include? :bundler
|
41
47
|
create_migrator if needs.include? :migrator
|
@@ -61,6 +67,12 @@ class NeedsManager
|
|
61
67
|
end
|
62
68
|
end
|
63
69
|
|
70
|
+
def create_folder_guard
|
71
|
+
denied_folders = []
|
72
|
+
denied_folders << 'engines' if ! options[:engines]
|
73
|
+
env[:folder_guard] = FolderGuard.new(denied_folders)
|
74
|
+
end
|
75
|
+
|
64
76
|
def create_repo
|
65
77
|
env[:repo] = repo_class.new(shell: env[:shell])
|
66
78
|
end
|
@@ -76,11 +88,13 @@ class NeedsManager
|
|
76
88
|
end
|
77
89
|
|
78
90
|
def create_bundler
|
79
|
-
|
91
|
+
queue = WorkQueue.new(BUNDLER_MAX_THREAD_COUNT, nil)
|
92
|
+
env[:bundler] = BundleManager.new(shell: env[:shell], repo: env[:repo], queue: queue, folder_guard: env[:folder_guard])
|
80
93
|
end
|
81
94
|
|
82
95
|
def create_migrator
|
83
|
-
|
96
|
+
queue = WorkQueue.new(MIGRATOR_MAX_THREAD_COUNT, nil)
|
97
|
+
env[:migrator] = Migrator.new(shell: env[:shell], repo: env[:repo], queue: queue, folder_guard: env[:folder_guard])
|
84
98
|
end
|
85
99
|
|
86
100
|
def create_test_runner
|
data/lib/sfb_scripts/upper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sfb_scripts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Kinnecom
|
@@ -14,40 +14,40 @@ dependencies:
|
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.19'
|
20
|
-
- - <
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '1.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0.19'
|
30
|
-
- - <
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '1.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: work_queue
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 2.5.3
|
40
|
-
- - <
|
40
|
+
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '3.0'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 2.5.3
|
50
|
-
- - <
|
50
|
+
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '3.0'
|
53
53
|
description: Easily update your rails app and run tests from command line
|
@@ -60,6 +60,7 @@ extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
62
|
- lib/sfb_scripts/bundler/bundle_manager.rb
|
63
|
+
- lib/sfb_scripts/folder_guard.rb
|
63
64
|
- lib/sfb_scripts/hook_manager.rb
|
64
65
|
- lib/sfb_scripts/hooks/pre_push_hook.rb
|
65
66
|
- lib/sfb_scripts/migrations/migrator.rb
|
@@ -90,12 +91,12 @@ require_paths:
|
|
90
91
|
- lib
|
91
92
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
93
|
requirements:
|
93
|
-
- -
|
94
|
+
- - ">="
|
94
95
|
- !ruby/object:Gem::Version
|
95
96
|
version: '0'
|
96
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
98
|
requirements:
|
98
|
-
- -
|
99
|
+
- - ">="
|
99
100
|
- !ruby/object:Gem::Version
|
100
101
|
version: '0'
|
101
102
|
requirements: []
|
@@ -105,4 +106,3 @@ signing_key:
|
|
105
106
|
specification_version: 4
|
106
107
|
summary: Easily update your rails app and run tests from command line
|
107
108
|
test_files: []
|
108
|
-
has_rdoc:
|