takelage 0.13.3 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/takelage.rb +37 -14
- data/lib/takelage/bit/check/cli.rb +1 -1
- data/lib/takelage/bit/check/{module.rb → workspace.rb} +2 -2
- data/lib/takelage/bit/clipboard/cli.rb +9 -3
- data/lib/takelage/bit/clipboard/copy.rb +140 -0
- data/lib/takelage/bit/clipboard/lib.rb +153 -0
- data/lib/takelage/bit/clipboard/paste.rb +58 -0
- data/lib/takelage/bit/clipboard/pull.rb +38 -0
- data/lib/takelage/bit/clipboard/push.rb +37 -0
- data/lib/takelage/bit/scope/add.rb +55 -0
- data/lib/takelage/bit/scope/cli.rb +7 -3
- data/lib/takelage/bit/scope/inbit.rb +13 -0
- data/lib/takelage/bit/scope/list.rb +41 -0
- data/lib/takelage/bit/scope/new.rb +44 -0
- data/lib/takelage/default.yml +4 -3
- data/lib/takelage/docker/check/cli.rb +1 -1
- data/lib/takelage/docker/check/{module.rb → running.rb} +2 -2
- data/lib/takelage/docker/container/check/cli.rb +4 -2
- data/lib/takelage/docker/container/check/existing.rb +31 -0
- data/lib/takelage/docker/container/check/network.rb +31 -0
- data/lib/takelage/docker/container/check/orphaned.rb +31 -0
- data/lib/takelage/docker/container/cli.rb +35 -34
- data/lib/takelage/docker/container/command.rb +33 -0
- data/lib/takelage/docker/container/daemon.rb +13 -0
- data/lib/takelage/docker/container/lib.rb +149 -0
- data/lib/takelage/docker/container/login.rb +46 -0
- data/lib/takelage/docker/container/nuke.rb +39 -0
- data/lib/takelage/docker/container/purge.rb +30 -0
- data/lib/takelage/docker/image/check/cli.rb +4 -4
- data/lib/takelage/docker/image/check/{module.rb → outdated.rb} +4 -5
- data/lib/takelage/docker/image/cli.rb +4 -4
- data/lib/takelage/docker/image/tag/check/cli.rb +4 -3
- data/lib/takelage/docker/image/tag/check/{module.rb → local.rb} +2 -34
- data/lib/takelage/docker/image/tag/check/remote.rb +38 -0
- data/lib/takelage/docker/image/tag/latest/cli.rb +5 -3
- data/lib/takelage/docker/image/tag/latest/local.rb +20 -0
- data/lib/takelage/docker/image/tag/latest/{module.rb → remote.rb} +2 -18
- data/lib/takelage/docker/image/tag/list/cli.rb +3 -2
- data/lib/takelage/docker/image/tag/list/local.rb +19 -0
- data/lib/takelage/docker/image/tag/list/{module.rb → remote.rb} +2 -17
- data/lib/takelage/docker/image/{module.rb → update.rb} +2 -2
- data/lib/takelage/docker/socket/cli.rb +6 -2
- data/lib/takelage/docker/socket/host.rb +25 -0
- data/lib/takelage/docker/socket/lib.rb +88 -0
- data/lib/takelage/docker/socket/scheme.rb +46 -0
- data/lib/takelage/docker/socket/start.rb +34 -0
- data/lib/takelage/docker/socket/stop.rb +55 -0
- data/lib/takelage/git/check/clean.rb +46 -0
- data/lib/takelage/git/check/cli.rb +3 -1
- data/lib/takelage/git/check/master.rb +26 -0
- data/lib/takelage/git/check/workspace.rb +33 -0
- data/lib/takelage/self/cli.rb +1 -1
- data/lib/takelage/self/{module.rb → list.rb} +2 -2
- data/lib/takelage/version +1 -1
- metadata +38 -15
- data/lib/takelage/bit/clipboard/module.rb +0 -401
- data/lib/takelage/bit/scope/module.rb +0 -122
- data/lib/takelage/docker/container/check/module.rb +0 -81
- data/lib/takelage/docker/container/module.rb +0 -295
- data/lib/takelage/docker/socket/module.rb +0 -227
- data/lib/takelage/git/check/module.rb +0 -93
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '058d42cc592fd9c1509aab8d8796069b1f1699453b88cfffbc93af9dfb1d09c0'
|
4
|
+
data.tar.gz: 45763ae032cd559e55dc636d857de7ef87a0dd4b6c0e1b3292f350d787388e0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 733b0d40ac76a2caece5cf6f6a52252d5bd9dad690bd6df0258dab21268b43cf9f109e5e54f5ce8b3599ee392ba3f9bb3d65e7a7fcaa4a1daadee560c7ce7469
|
7
|
+
data.tar.gz: ef4b53f6bb4cd250095e02472357933d2d29f6049d0b29269782f5730694aaffefbb89ac252f37f816e3e4c03c89184debf07e061b564e46615b75110abc20b1
|
data/lib/takelage.rb
CHANGED
@@ -20,41 +20,64 @@ require_relative 'takelage/lib/system'
|
|
20
20
|
require_relative 'takelage/lib/config'
|
21
21
|
require_relative 'takelage/lib/project'
|
22
22
|
|
23
|
-
require_relative 'takelage/git/check/
|
23
|
+
require_relative 'takelage/git/check/clean'
|
24
|
+
require_relative 'takelage/git/check/master'
|
25
|
+
require_relative 'takelage/git/check/workspace'
|
24
26
|
require_relative 'takelage/git/check/cli'
|
25
27
|
require_relative 'takelage/git/cli'
|
26
|
-
require_relative 'takelage/bit/check/
|
28
|
+
require_relative 'takelage/bit/check/workspace'
|
27
29
|
require_relative 'takelage/bit/check/cli'
|
28
|
-
require_relative 'takelage/bit/scope/
|
30
|
+
require_relative 'takelage/bit/scope/add'
|
31
|
+
require_relative 'takelage/bit/scope/inbit'
|
32
|
+
require_relative 'takelage/bit/scope/list'
|
33
|
+
require_relative 'takelage/bit/scope/new'
|
29
34
|
require_relative 'takelage/bit/scope/cli'
|
30
|
-
require_relative 'takelage/bit/clipboard/
|
35
|
+
require_relative 'takelage/bit/clipboard/lib'
|
36
|
+
require_relative 'takelage/bit/clipboard/copy'
|
37
|
+
require_relative 'takelage/bit/clipboard/paste'
|
38
|
+
require_relative 'takelage/bit/clipboard/pull'
|
39
|
+
require_relative 'takelage/bit/clipboard/push'
|
31
40
|
require_relative 'takelage/bit/clipboard/cli'
|
32
41
|
require_relative 'takelage/bit/cli'
|
33
42
|
require_relative 'takelage/completion/cli'
|
34
|
-
require_relative 'takelage/docker/check/
|
43
|
+
require_relative 'takelage/docker/check/running'
|
35
44
|
require_relative 'takelage/docker/check/cli'
|
36
|
-
require_relative 'takelage/docker/socket/
|
45
|
+
require_relative 'takelage/docker/socket/lib'
|
46
|
+
require_relative 'takelage/docker/socket/host'
|
47
|
+
require_relative 'takelage/docker/socket/scheme'
|
48
|
+
require_relative 'takelage/docker/socket/start'
|
49
|
+
require_relative 'takelage/docker/socket/stop'
|
37
50
|
require_relative 'takelage/docker/socket/cli'
|
38
|
-
require_relative 'takelage/docker/image/tag/list/
|
51
|
+
require_relative 'takelage/docker/image/tag/list/local'
|
52
|
+
require_relative 'takelage/docker/image/tag/list/remote'
|
39
53
|
require_relative 'takelage/docker/image/tag/list/cli'
|
40
|
-
require_relative 'takelage/docker/image/tag/latest/
|
54
|
+
require_relative 'takelage/docker/image/tag/latest/local'
|
55
|
+
require_relative 'takelage/docker/image/tag/latest/remote'
|
41
56
|
require_relative 'takelage/docker/image/tag/latest/cli'
|
42
|
-
require_relative 'takelage/docker/image/tag/check/
|
57
|
+
require_relative 'takelage/docker/image/tag/check/local'
|
58
|
+
require_relative 'takelage/docker/image/tag/check/remote'
|
43
59
|
require_relative 'takelage/docker/image/tag/check/cli'
|
44
60
|
require_relative 'takelage/docker/image/tag/cli'
|
45
|
-
require_relative 'takelage/docker/image/check/
|
61
|
+
require_relative 'takelage/docker/image/check/outdated'
|
46
62
|
require_relative 'takelage/docker/image/check/cli'
|
47
|
-
require_relative 'takelage/docker/image/
|
63
|
+
require_relative 'takelage/docker/image/update'
|
48
64
|
require_relative 'takelage/docker/image/cli'
|
49
|
-
require_relative 'takelage/docker/container/check/
|
65
|
+
require_relative 'takelage/docker/container/check/existing'
|
66
|
+
require_relative 'takelage/docker/container/check/network'
|
67
|
+
require_relative 'takelage/docker/container/check/orphaned'
|
50
68
|
require_relative 'takelage/docker/container/check/cli'
|
51
|
-
require_relative 'takelage/docker/container/
|
69
|
+
require_relative 'takelage/docker/container/lib'
|
70
|
+
require_relative 'takelage/docker/container/command'
|
71
|
+
require_relative 'takelage/docker/container/daemon'
|
72
|
+
require_relative 'takelage/docker/container/login'
|
73
|
+
require_relative 'takelage/docker/container/nuke'
|
74
|
+
require_relative 'takelage/docker/container/purge'
|
52
75
|
require_relative 'takelage/docker/container/cli'
|
53
76
|
require_relative 'takelage/docker/cli'
|
54
77
|
require_relative 'takelage/info/project/cli'
|
55
78
|
require_relative 'takelage/info/cli'
|
56
79
|
require_relative 'takelage/self/config/cli'
|
57
|
-
require_relative 'takelage/self/
|
80
|
+
require_relative 'takelage/self/list'
|
58
81
|
require_relative 'takelage/self/cli'
|
59
82
|
|
60
83
|
# Facilitate the takelage devops workflow.
|
@@ -6,9 +6,15 @@ module Takelage
|
|
6
6
|
include LoggingModule
|
7
7
|
include ConfigModule
|
8
8
|
include SystemModule
|
9
|
-
include
|
10
|
-
include
|
11
|
-
include
|
9
|
+
include GitCheckClean
|
10
|
+
include GitCheckMaster
|
11
|
+
include GitCheckWorkspace
|
12
|
+
include BitCheckWorkspace
|
13
|
+
include BitClipboardLib
|
14
|
+
include BitClipboardCopy
|
15
|
+
include BitClipboardPaste
|
16
|
+
include BitClipboardPull
|
17
|
+
include BitClipboardPush
|
12
18
|
|
13
19
|
#
|
14
20
|
# bit copy
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage bit clipboard copy
|
4
|
+
module BitClipboardCopy
|
5
|
+
# Backend method for bit copy.
|
6
|
+
def bit_clipboard_copy(dir, scope)
|
7
|
+
# remove trailing slash
|
8
|
+
dir = dir.chomp('/')
|
9
|
+
|
10
|
+
log.debug "Running bit copy \"#{dir}\" to \"#{scope}\""
|
11
|
+
|
12
|
+
return false unless _bit_clipboard_lib_prepare_workspace
|
13
|
+
|
14
|
+
unless File.directory? dir
|
15
|
+
log.error "The directory \"#{dir}\" does not exist"
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
_bit_clipboard_copy_dir dir, scope
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# rubocop:disable Metrics/MethodLength
|
25
|
+
def _bit_clipboard_copy_dir(dir, scope)
|
26
|
+
log.debug "Adding the directory \"#{dir}\" as a tagged bit component"
|
27
|
+
|
28
|
+
return false unless _bit_clipboard_copy_dir_scope_exists? scope
|
29
|
+
|
30
|
+
return false if _bit_clipboard_copy_readme_bit_exists_in_subdir? dir
|
31
|
+
|
32
|
+
id = _bit_clipboard_lib_id(dir)
|
33
|
+
|
34
|
+
_bit_clipboard_copy_touch_readme_bit dir
|
35
|
+
_bit_clipboard_copy_add_dir id, dir
|
36
|
+
_bit_clipboard_copy_tag_dir id
|
37
|
+
_bit_clipboard_copy_export_to_scope scope
|
38
|
+
_bit_clipbpard_lib_remove_bit_artifacts
|
39
|
+
_bit_clipboard_lib_sync_workspace
|
40
|
+
|
41
|
+
log.info "Copied directory \"#{dir}\" as bit component \"#{id}\" " \
|
42
|
+
"to bit remote scope \"#{scope}\""
|
43
|
+
end
|
44
|
+
# rubocop:enable Metrics/MethodLength
|
45
|
+
|
46
|
+
# touch README.bit if necessary
|
47
|
+
def _bit_clipboard_copy_touch_readme_bit(dir)
|
48
|
+
readme_bit = "#{dir}/README.bit"
|
49
|
+
return if File.file? readme_bit
|
50
|
+
|
51
|
+
log.info "Creating \"README.bit\" in \"#{dir}\""
|
52
|
+
File.open(readme_bit, 'w') {}
|
53
|
+
end
|
54
|
+
|
55
|
+
# check if a README.bit file exists in a subdirectory
|
56
|
+
def _bit_clipboard_copy_readme_bit_exists_in_subdir?(dir)
|
57
|
+
Dir.glob("#{dir}/**/README.bit").each do |file|
|
58
|
+
unless file == "#{dir}/README.bit"
|
59
|
+
log.error 'Nested README.bit file detected'
|
60
|
+
return true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
67
|
+
# Check if bit scope exists
|
68
|
+
def _bit_clipboard_copy_dir_scope_exists?(scope)
|
69
|
+
bit_dev = config.active['bit_dev_user']
|
70
|
+
|
71
|
+
# check if scope is a candidate for a bit.dev remote scope
|
72
|
+
if scope.start_with? bit_dev + '.'
|
73
|
+
return false unless _bit_clipboard_bit_dev_scope_exists scope
|
74
|
+
else
|
75
|
+
return false unless _bit_clipboard_custom_scope_exists scope
|
76
|
+
end
|
77
|
+
|
78
|
+
true
|
79
|
+
end
|
80
|
+
|
81
|
+
# check if bit.dev remote scope exists
|
82
|
+
def _bit_clipboard_bit_dev_scope_exists(scope)
|
83
|
+
cmd_bit_list_scope = format(
|
84
|
+
config.active['cmd_bit_clipboard_copy_bit_list_scope'],
|
85
|
+
scope: scope
|
86
|
+
)
|
87
|
+
|
88
|
+
status = try cmd_bit_list_scope
|
89
|
+
|
90
|
+
return true if status.exitstatus.zero?
|
91
|
+
|
92
|
+
log.error "No bit.dev remote scope \"#{scope}\" found"
|
93
|
+
false
|
94
|
+
end
|
95
|
+
|
96
|
+
# check if bit remote scope is added to local workspace
|
97
|
+
def _bit_clipboard_custom_scope_exists(scope)
|
98
|
+
cmd_bit_list_remotes =
|
99
|
+
config.active['cmd_bit_clipboard_copy_bit_list_remotes']
|
100
|
+
|
101
|
+
stdout_str = run cmd_bit_list_remotes
|
102
|
+
|
103
|
+
return true if /.*\s+#{scope}\s+.*/m.match? stdout_str
|
104
|
+
|
105
|
+
log.error "No bit remote scope \"#{scope}\" " \
|
106
|
+
'found in local bit workspace'
|
107
|
+
false
|
108
|
+
end
|
109
|
+
|
110
|
+
# bit tag dir
|
111
|
+
def _bit_clipboard_copy_add_dir(id, dir)
|
112
|
+
cmd_bit_add_dir = format(
|
113
|
+
config.active['cmd_bit_clipboard_copy_bit_add_dir'],
|
114
|
+
id: id,
|
115
|
+
dir: dir
|
116
|
+
)
|
117
|
+
|
118
|
+
run cmd_bit_add_dir
|
119
|
+
end
|
120
|
+
|
121
|
+
# bit tag dir
|
122
|
+
def _bit_clipboard_copy_tag_dir(id)
|
123
|
+
cmd_bit_tag_id = format(
|
124
|
+
config.active['cmd_bit_clipboard_copy_bit_tag_id'],
|
125
|
+
id: id
|
126
|
+
)
|
127
|
+
|
128
|
+
run cmd_bit_tag_id
|
129
|
+
end
|
130
|
+
|
131
|
+
# bit export component to bit remote scope
|
132
|
+
def _bit_clipboard_copy_export_to_scope(scope)
|
133
|
+
cmd_bit_export_to_scope = format(
|
134
|
+
config.active['cmd_bit_clipboard_copy_bit_export_to_scope'],
|
135
|
+
scope: scope
|
136
|
+
)
|
137
|
+
|
138
|
+
run cmd_bit_export_to_scope
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage bit clipboard lib
|
4
|
+
module BitClipboardLib
|
5
|
+
private
|
6
|
+
|
7
|
+
# Prepare workspace for bit clipboard.
|
8
|
+
def _bit_clipboard_lib_prepare_workspace
|
9
|
+
unless bit_check_workspace
|
10
|
+
log.error 'No bit workspace'
|
11
|
+
return false
|
12
|
+
end
|
13
|
+
|
14
|
+
return true unless git_check_workspace
|
15
|
+
|
16
|
+
_bit_clipboard_lib_prepare_git_workspace
|
17
|
+
end
|
18
|
+
|
19
|
+
# Prepare git workspace for bit clipboard.
|
20
|
+
def _bit_clipboard_lib_prepare_git_workspace
|
21
|
+
unless git_check_master
|
22
|
+
log.error 'Not on git master branch'
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
unless git_check_clean
|
27
|
+
log.error 'No clean git workspace'
|
28
|
+
return false
|
29
|
+
end
|
30
|
+
|
31
|
+
_bit_clipboard_lib_git_pull
|
32
|
+
end
|
33
|
+
|
34
|
+
# Remove bit artifacts.
|
35
|
+
def _bit_clipbpard_lib_remove_bit_artifacts
|
36
|
+
log.debug 'Removing bit artifacts'
|
37
|
+
|
38
|
+
# Remove node_modules directory.
|
39
|
+
FileUtils.remove_entry_secure('node_modules', force: true)
|
40
|
+
|
41
|
+
# Remove index.bit files recursively.
|
42
|
+
Dir.glob('./**/index.bit').each do |file|
|
43
|
+
FileUtils.remove_entry_secure(file, force: true)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Remove package.json file.
|
47
|
+
FileUtils.remove_entry_secure('package.json', force: true)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Sync workspace with upstream.
|
51
|
+
def _bit_clipboard_lib_sync_workspace
|
52
|
+
log.debug 'Syncing git workspace'
|
53
|
+
|
54
|
+
_rakefile, path = Rake.application.find_rakefile_location
|
55
|
+
bitmap = "#{path}/.bitmap"
|
56
|
+
|
57
|
+
_bit_clipboard_lib_git_add bitmap
|
58
|
+
_bit_clipboard_lib_git_commit bitmap
|
59
|
+
_bit_clipboard_lib_git_push
|
60
|
+
end
|
61
|
+
|
62
|
+
# git add .bitmap
|
63
|
+
def _bit_clipboard_lib_git_add(bitmap)
|
64
|
+
log.debug "Adding \"#{bitmap}\" to git"
|
65
|
+
|
66
|
+
cmd_bit_clipboard_git_add = format(
|
67
|
+
config.active['cmd_bit_clipboard_git_add'],
|
68
|
+
file: bitmap
|
69
|
+
)
|
70
|
+
run cmd_bit_clipboard_git_add
|
71
|
+
end
|
72
|
+
|
73
|
+
# git commit -m "Update .bitmap"
|
74
|
+
def _bit_clipboard_lib_git_commit(bitmap)
|
75
|
+
message = 'Update .bitmap'
|
76
|
+
|
77
|
+
log.debug "Committing \"#{bitmap}\" to git"
|
78
|
+
|
79
|
+
cmd_bit_clipboard_git_commit = format(
|
80
|
+
config.active['cmd_bit_clipboard_git_commit'],
|
81
|
+
message: message
|
82
|
+
)
|
83
|
+
|
84
|
+
run cmd_bit_clipboard_git_commit
|
85
|
+
end
|
86
|
+
|
87
|
+
# git push origin master
|
88
|
+
def _bit_clipboard_lib_git_push
|
89
|
+
log.debug 'Pushing master branch to origin'
|
90
|
+
|
91
|
+
cmd_bit_clipboard_git_push =
|
92
|
+
config.active['cmd_bit_clipboard_git_push']
|
93
|
+
|
94
|
+
run cmd_bit_clipboard_git_push
|
95
|
+
end
|
96
|
+
|
97
|
+
# git pull
|
98
|
+
def _bit_clipboard_lib_git_pull
|
99
|
+
log.debug 'Updating git workspace'
|
100
|
+
cmd_bit_clipboard_git_pull =
|
101
|
+
config.active['cmd_bit_clipboard_git_pull']
|
102
|
+
|
103
|
+
result_git_pull = try cmd_bit_clipboard_git_pull
|
104
|
+
|
105
|
+
return true unless result_git_pull
|
106
|
+
|
107
|
+
log.error 'Unable to update git workspace'
|
108
|
+
false
|
109
|
+
end
|
110
|
+
|
111
|
+
# Genereate .gitignore if bitignore is present
|
112
|
+
def _bit_clipboard_lib_handle_bitignore
|
113
|
+
log.debug 'Handling bitgnore files'
|
114
|
+
|
115
|
+
# find all bitgnore files
|
116
|
+
Dir.glob('./**/bitignore').each do |file|
|
117
|
+
# get directory of bitignore file
|
118
|
+
dir = File.dirname file
|
119
|
+
|
120
|
+
# build gitignore filepath
|
121
|
+
gitignore_file = "#{dir}/.gitignore"
|
122
|
+
|
123
|
+
unless File.exist? gitignore_file
|
124
|
+
log.debug "Creating \".gitignore\" in \"#{dir}\""
|
125
|
+
File.open(gitignore_file, 'w') { |gitignore| gitignore.write('*') }
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Generate bit component ID.
|
131
|
+
def _bit_clipboard_lib_id(name)
|
132
|
+
id = ''
|
133
|
+
|
134
|
+
# bit restrictions:
|
135
|
+
# component names can only contain alphanumeric,
|
136
|
+
# lowercase characters, and the following ["-", "_", "$", "!", "/"]
|
137
|
+
|
138
|
+
# convert directory name to lowercase characters
|
139
|
+
dir_downcase = name.downcase
|
140
|
+
|
141
|
+
# construct array of allowed characters
|
142
|
+
allowed_chars = [*('a'..'z'), *('0'..'9'), '-', '_', '$', '!', '/']
|
143
|
+
|
144
|
+
# iterate over directory or file name
|
145
|
+
# and replace invalid characters with underscore
|
146
|
+
dir_downcase.split('').each do |char|
|
147
|
+
id += allowed_chars.include?(char) ? char : '_'
|
148
|
+
end
|
149
|
+
|
150
|
+
log.debug "Generated bit id \"#{id}\" from \"#{name}\""
|
151
|
+
id
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage bit clipboard paste
|
4
|
+
module BitClipboardPaste
|
5
|
+
# Backend method for bit paste.
|
6
|
+
def bit_clipboard_paste(cid, dir)
|
7
|
+
log.debug "Running bit paste \"#{cid}\" to \"#{dir}\""
|
8
|
+
|
9
|
+
return false unless _bit_clipboard_lib_prepare_workspace
|
10
|
+
|
11
|
+
return false unless _bit_clipboard_paste_cid_exists? cid
|
12
|
+
|
13
|
+
_bit_clipboard_paste_import_cid cid, dir
|
14
|
+
_bit_clipboard_lib_handle_bitignore
|
15
|
+
_bit_clipbpard_lib_remove_bit_artifacts
|
16
|
+
_bit_clipboard_lib_sync_workspace
|
17
|
+
|
18
|
+
log.info "Pasted bit component \"#{cid}\" to directory \"#{dir}\""
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# paste bit component into directory
|
25
|
+
def _bit_clipboard_paste_import_cid(cid, dir)
|
26
|
+
cmd_bit_import_cid = format(
|
27
|
+
config.active['cmd_bit_clipboard_paste_bit_import_cid'],
|
28
|
+
cid: cid,
|
29
|
+
dir: dir
|
30
|
+
)
|
31
|
+
|
32
|
+
run cmd_bit_import_cid
|
33
|
+
end
|
34
|
+
|
35
|
+
def _bit_clipboard_paste_cid_exists?(cid)
|
36
|
+
scope = cid.scan(%r{([^/]*).*}).first.first
|
37
|
+
|
38
|
+
log.debug "Checking if scope \"#{scope}\" " \
|
39
|
+
"contains component id \"#{cid}\""
|
40
|
+
|
41
|
+
bit_list_scope = _bit_clipboard_paste_cid_exists_list_scope scope
|
42
|
+
|
43
|
+
return true if bit_list_scope.include? '"id": "' + cid + '",'
|
44
|
+
|
45
|
+
log.error "No remote component \"#{cid}\""
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
# get components in remote scope
|
50
|
+
def _bit_clipboard_paste_cid_exists_list_scope(scope)
|
51
|
+
cmd_bit_list_scope = format(
|
52
|
+
config.active['cmd_bit_clipboard_paste_bit_list_scope'],
|
53
|
+
scope: scope
|
54
|
+
)
|
55
|
+
|
56
|
+
run cmd_bit_list_scope
|
57
|
+
end
|
58
|
+
end
|