takelage 0.3.0 → 0.4.0

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
  SHA256:
3
- metadata.gz: 2fd909364c4dbb82c0c9e8ac1ba6ccfed67e51fe56794b7a6aa36af3ea86e6f2
4
- data.tar.gz: b5343bcba1852c0d56ce454c5ff8ed6172220747087b13a0b24cd8c4748761aa
3
+ metadata.gz: cb5d74447dcfd62750e7edddf49a98b3a4a2565316b5e0fed13342ee6248d24d
4
+ data.tar.gz: 9c6ac4feb670f45dc5e728d7a92114020e7e69f8ac7b37ff158507d0d430cac0
5
5
  SHA512:
6
- metadata.gz: 1565a6d13da908d8fae2f10bcd0e45264945559c32483d90952940a1225fd5c3643579a8f20e9ab3c6d9e0a4e10d2618c0d0e01a027049e8ffcf25b53c19667b
7
- data.tar.gz: d395c04730066c07d2b288913b0353538305e03d5cda5717414f5475357a2b19a7e0286f5f85f3548d69d9ae1ee6d208d85ab63d1de2677643566594a5e782fc
6
+ metadata.gz: 1c2b09725d668cc8c54194dd856dc5ba8411074f6d5aadd935c1f04c8c9fa839cecd0941c270cb2454a54fc2dc0bad6b8d0798579ba3a440c67bf61e25567a95
7
+ data.tar.gz: 1ec42421048df41cc9ce2836ae3df0f19e7023e1ff779efc62e17828f41e888300d926baba3f84bc013c70f450a7c2f4f84227b927e2bfa1c9db312cad95790f
data/README.md CHANGED
@@ -18,7 +18,7 @@ The takelage devops framework consists of these projects:
18
18
  | --- | ----------- |
19
19
  | *[takelage-dev](https://github.com/geospin-takelage/takelage-dev)* | takelage development environment |
20
20
  | *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
21
- | *[takelage-bit](https://github.com/geospin-takelage/takelage-bit)* | takelage [bit](https://github.com/teambit/bit) server |
21
+ | *[takelage-bit](https://github.com/geospin-takelage/takelage-bit)* | takelage bit server |
22
22
 
23
23
  ## Installation
24
24
 
@@ -57,6 +57,7 @@ tau purge | # Alias for tau [docker container purge](features/takelage/docker/do
57
57
  tau push | # Alias for tau [bit clipboard push](features/takelage/bit/bit.clipboard.push.feature)
58
58
  tau update | # Alias for tau [docker image update](features/takelage/docker/docker.image.update.feature)
59
59
  tau version | # Alias for tau [self version](features/takelage/self/self.version.feature)
60
+ tau [bit check workspace](features/takelage/bit/bit.check.workspace.feature) | # Check if a bit workspace exists
60
61
  tau [bit clipboard copy](features/takelage/bit/bit.clipboard.copy.feature) [DIR] [SCOPE] | # Copy new [DIR] to [SCOPE]
61
62
  tau [bit clipboard paste](features/takelage/bit/bit.clipboard.paste.feature) [COMPONENT] [DIR] | # Paste bit [COMPONENT] into [DIR]
62
63
  tau [bit clipboard pull](features/takelage/bit/bit.clipboard.pull.feature) | # Pull all updates for bit components from bit remote scopes
@@ -113,15 +114,13 @@ or *tau config*.
113
114
 
114
115
  ### Configuration Examples
115
116
 
116
- - You should the following configuration items in your *~/.takelage.yml*:
117
+ - You should the following configuration items in your *~/.takelage.yml*
118
+ if you want to use a private bit remote server:
117
119
 
118
120
  ```yaml
119
121
  ---
120
- bit_remote: 'ssh://bit@bit.example.com:2222:/bit'
121
- bit_ssh: 'ssh -p 2222 bit@bit.example.com'
122
- docker_image: 'takelage'
123
- docker_repo: 'hub.example.com'
124
- docker_tagsurl: 'https://hub.example.com/v2/repositories/library/takelage/tags'
122
+ bit_remote: 'ssh://bit@bit.example.com:222:/bit'
123
+ bit_ssh: 'ssh -p 222 bit@bit.example.com'
125
124
  ```
126
125
 
127
126
  - If you want to pin a specific docker tag for one of your projects
@@ -0,0 +1,23 @@
1
+ module Takelage
2
+
3
+ # takelage bit check
4
+ class BitCheck < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include BitCheckModule
10
+
11
+ #
12
+ # bit check workspace
13
+ #
14
+ desc 'workspace', 'Check if a bit workspace exists'
15
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
16
+ Check if a bit workspace exists
17
+ LONGDESC
18
+ # Check if a bit workspace exists.
19
+ def workspace
20
+ exit bit_check_workspace
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ # takelage bit check module
2
+ module BitCheckModule
3
+
4
+ # Backend method for bit check workspace.
5
+ # @return [Boolean] is this a bit workspace?
6
+ def bit_check_workspace
7
+ log.debug 'Check if this is a bit workspace'
8
+
9
+ cmd_bit_repo = config.active['bit_repo']
10
+ stdout_str_repo, stderr_str_repo, status_repo = run_and_check cmd_bit_repo
11
+
12
+ cmd_pwd = config.active['pwd']
13
+ stdout_str_dir, stderr_str_dir, status_dir = run_and_check cmd_pwd
14
+
15
+ dir = stdout_str_dir.strip
16
+
17
+ unless status_repo.exitstatus.zero?
18
+ log.debug "No bit workspace found in \"#{dir}\""
19
+ return false
20
+ end
21
+
22
+ true
23
+ end
24
+ end
@@ -5,9 +5,8 @@ module Takelage
5
5
  # takelage bit
6
6
  class Bit < SubCommandBase
7
7
 
8
- include LoggingModule
9
- include SystemModule
10
- include ConfigModule
8
+ desc 'check [COMMAND]', 'Check bit state'
9
+ subcommand 'check', BitCheck
11
10
 
12
11
  desc 'clipboard [COMMAND]', 'Manage bit clipboard'
13
12
  subcommand 'clipboard', BitClipboard
@@ -9,6 +9,7 @@ module Takelage
9
9
  include ConfigModule
10
10
  include SystemModule
11
11
  include GitCheckModule
12
+ include BitCheckModule
12
13
  include BitClipboardModule
13
14
 
14
15
  #
@@ -5,6 +5,11 @@ module BitClipboardModule
5
5
  def bit_clipboard_copy(dir, scope)
6
6
  log.debug "Running bit copy \"#{dir}\" to \"#{scope}\""
7
7
 
8
+ unless bit_check_workspace
9
+ log.error 'No bit workspace'
10
+ return
11
+ end
12
+
8
13
  if git_check_workspace
9
14
  unless git_check_master
10
15
  log.error 'Not on git master branch'
@@ -19,12 +24,30 @@ module BitClipboardModule
19
24
 
20
25
  log.debug "Adding the directory \"#{dir}\" as a tagged bit component"
21
26
 
22
- # check if bit remote scope is added to local workspace
23
- cmd_bit_list_remotes = config.active['bit_list_remotes']
24
- stdout_str, stderr_str, status = run_and_check cmd_bit_list_remotes
25
- unless /.*\s+#{scope}\s+.*/m.match? stdout_str
26
- log.error "No bit remote scope \"#{scope}\" found in local bit workspace"
27
- return
27
+ bit_dev = config.active['bit_dev']
28
+
29
+ # check if scope is a candidate for a bit.dev remote scope
30
+ if scope.start_with? bit_dev + '.'
31
+
32
+ # check if bit.dev remote scope exists
33
+ cmd_bit_list_scope = config.active['bit_list_scope'] % {scope: scope}
34
+ stdout_str, stderr_str, status = run_and_check cmd_bit_list_scope
35
+
36
+ unless status.exitstatus.zero?
37
+ log.error "No bit.dev remote scope \"#{scope}\" found"
38
+ return
39
+ end
40
+
41
+ else
42
+
43
+ # check if bit remote scope is added to local workspace
44
+ cmd_bit_list_remotes = config.active['bit_list_remotes']
45
+ stdout_str, stderr_str, status = run_and_check cmd_bit_list_remotes
46
+
47
+ unless /.*\s+#{scope}\s+.*/m.match? stdout_str
48
+ log.error "No bit remote scope \"#{scope}\" found in local bit workspace"
49
+ return
50
+ end
28
51
  end
29
52
 
30
53
  # check if a README.bit file exists in a subdirectory
@@ -73,6 +96,11 @@ module BitClipboardModule
73
96
  def bit_clipboard_paste(cid, dir)
74
97
  log.debug "Running bit paste \"#{cid}\" to \"#{dir}\""
75
98
 
99
+ unless bit_check_workspace
100
+ log.error 'No bit workspace'
101
+ return
102
+ end
103
+
76
104
  if git_check_workspace
77
105
  unless git_check_master
78
106
  log.error 'Not on git master branch'
@@ -97,6 +125,11 @@ module BitClipboardModule
97
125
  def bit_clipboard_pull
98
126
  log.debug "Running bit pull"
99
127
 
128
+ unless bit_check_workspace
129
+ log.error 'No bit workspace'
130
+ return
131
+ end
132
+
100
133
  if git_check_workspace
101
134
  unless git_check_master
102
135
  log.error 'Not on git master branch'
@@ -122,6 +155,11 @@ module BitClipboardModule
122
155
  def bit_clipboard_push
123
156
  log.debug "Running bit push"
124
157
 
158
+ unless bit_check_workspace
159
+ log.error 'No bit workspace'
160
+ return
161
+ end
162
+
125
163
  if git_check_workspace
126
164
  unless git_check_master
127
165
  log.error 'Not on git master branch'
@@ -7,6 +7,7 @@ module Takelage
7
7
  include SystemModule
8
8
  include ConfigModule
9
9
  include GitCheckModule
10
+ include BitCheckModule
10
11
  include BitScopeModule
11
12
 
12
13
  #
@@ -5,6 +5,11 @@ module BitScopeModule
5
5
  def bit_scope_add(scope)
6
6
  log.debug "Adding bit remote scope \"#{scope}\" to local workspace"
7
7
 
8
+ unless bit_check_workspace
9
+ log.error 'No bit workspace'
10
+ return
11
+ end
12
+
8
13
  if git_check_workspace
9
14
  unless git_check_master
10
15
  log.error 'Not on git master branch'
@@ -1,17 +1,24 @@
1
1
  ---
2
2
  bit_add_dir: 'bit add --skip-update --id %{id} --main %{dir}/README.bit %{dir}'
3
3
  bit_checkout_all: 'bit checkout --ignore-package-json --skip-update -i --all latest'
4
+ bit_dev: 'takelage'
4
5
  bit_export_to_scope: 'bit export --skip-update %{scope}'
5
6
  bit_export_all: 'bit export --skip-update'
6
7
  bit_import_cid: 'bit import --ignore-package-json --skip-update -p %{dir} %{cid}'
7
8
  bit_import_all: 'bit import --skip-update --ignore-package-json -m manual'
8
9
  bit_list_remotes: 'bit remote --skip-update'
10
+ bit_list_scope: 'bit list --skip-update --raw %{scope}'
11
+ bit_remote: ''
12
+ bit_repo: 'bit status'
9
13
  bit_scope_root: '/bit'
10
14
  bit_scope_list: 'find %{root} -name scope.json'
11
15
  bit_scope_new: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init -b'
12
16
  bit_scope_remove: 'rm -fr %{root}/%{scope}'
17
+ bit_ssh: ''
13
18
  bit_tag_id: 'bit tag --skip-update --skip-tests %{id}'
14
19
  bit_tag_all: 'bit tag --all'
20
+ docker_image: 'takelage'
21
+ docker_repo: 'takelage'
15
22
  docker_socket_agent_port: 20000
16
23
  docker_socket_agent_ssh_port: 20001
17
24
  docker_socket_agent_extra_port: 20002
@@ -21,10 +28,12 @@ docker_socket_gpgconf: 'gpgconf --list-dirs'
21
28
  docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
22
29
  docker_socket_start: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
23
30
  docker_tag: 'latest'
31
+ docker_tagsurl: 'https://hub.docker.com/v2/repositories/takelage/takelage/tags'
32
+ git_branch: 'git symbolic-ref HEAD'
33
+ git_repo: 'git -C . rev-parse'
34
+ git_status: 'git status --porcelain'
35
+ git_unstaged: 'git diff --exit-code'
36
+ git_uncommitted: 'git diff --cached --exit-code'
24
37
  info_project_main: 'project.yml'
25
38
  info_project_private: 'private/project.yml'
26
- #bit_remote: 'ssh://bit@bit.example.com:2222:/bit'
27
- #bit_ssh: 'ssh -p 2222 bit@bit.example.com'
28
- #docker_image: 'takelage'
29
- #docker_repo: 'hub.docker.com'
30
- #docker_tagsurl: 'https://hub.docker.com/v2/repositories/library/takelage/tags'
39
+ pwd: 'pwd'
@@ -163,7 +163,7 @@ module DockerContainerModule
163
163
 
164
164
  # Get container name by id.
165
165
  def _get_container_name_by_id container
166
- log.debug "Getting name of container #{container}"
166
+ log.debug "Getting name of container \"#{container}\""
167
167
 
168
168
  cmd_get_container_name_by_id = 'docker ps ' +
169
169
  "--filter id=#{container} "+
@@ -171,13 +171,17 @@ module DockerContainerModule
171
171
 
172
172
  stdout_str, stderr_str, status = run_and_check cmd_get_container_name_by_id
173
173
 
174
- stdout_str.chomp
174
+ name = stdout_str.chomp
175
+
176
+ log.debug "Container #{container} has name \"#{name}\""
177
+
178
+ name
175
179
  end
176
180
 
177
181
  # Get all docker containers.
178
182
  # @return [Array] list of docker containers
179
183
  def _get_containers
180
- log.debug "Getting all #{@docker_image} containers"
184
+ log.debug "Getting all containers of image \"#{@docker_image}\""
181
185
 
182
186
  cmd_docker_get = 'docker ps ' +
183
187
  '--all ' +
@@ -1,10 +1,11 @@
1
1
  module Takelage
2
2
 
3
- # takelage docker container check
3
+ # takelage git check
4
4
  class GitCheck < SubCommandBase
5
5
 
6
6
  include LoggingModule
7
7
  include SystemModule
8
+ include ConfigModule
8
9
  include GitCheckModule
9
10
 
10
11
  #
@@ -8,9 +8,9 @@ module GitCheckModule
8
8
 
9
9
  return false unless git_check_workspace
10
10
 
11
- cmd_git_unstaged = 'git diff --exit-code'
12
- cmd_git_uncommitted = 'git diff --cached --exit-code'
13
- cmd_git_status = 'git status --porcelain'
11
+ cmd_git_unstaged = config.active['git_unstaged']
12
+ cmd_git_uncommitted = config.active['git_uncommitted']
13
+ cmd_git_status = config.active['git_status']
14
14
 
15
15
  stdout_str, stderr_str, status_unstaged = run_and_check cmd_git_unstaged
16
16
  stdout_str, stderr_str, status_uncommitted = run_and_check cmd_git_uncommitted
@@ -31,7 +31,7 @@ module GitCheckModule
31
31
 
32
32
  return false unless git_check_workspace
33
33
 
34
- cmd_get_branch = 'git symbolic-ref HEAD'
34
+ cmd_get_branch = config.active['git_branch']
35
35
  stdout_str, stderr_str, status = run_and_check cmd_get_branch
36
36
 
37
37
  branch = stdout_str.strip.split('/')[-1]
@@ -46,10 +46,10 @@ module GitCheckModule
46
46
  def git_check_workspace
47
47
  log.debug 'Check if this is a git workspace'
48
48
 
49
- cmd_check_git_repo = 'git -C . rev-parse'
50
- stdout_str_repo, stderr_str_repo, status_repo = run_and_check cmd_check_git_repo
49
+ cmd_git_repo = config.active['git_repo']
50
+ stdout_str_repo, stderr_str_repo, status_repo = run_and_check cmd_git_repo
51
51
 
52
- cmd_pwd = 'pwd'
52
+ cmd_pwd = config.active['pwd']
53
53
  stdout_str_dir, stderr_str_dir, status_dir = run_and_check cmd_pwd
54
54
 
55
55
  dir = stdout_str_dir.strip
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/lib/takelage.rb CHANGED
@@ -19,6 +19,8 @@ require_relative 'takelage/lib/project'
19
19
  require_relative 'takelage/git/check/module'
20
20
  require_relative 'takelage/git/check/cli'
21
21
  require_relative 'takelage/git/cli'
22
+ require_relative 'takelage/bit/check/module'
23
+ require_relative 'takelage/bit/check/cli'
22
24
  require_relative 'takelage/bit/scope/module'
23
25
  require_relative 'takelage/bit/scope/cli'
24
26
  require_relative 'takelage/bit/clipboard/module'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: takelage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin
@@ -177,6 +177,8 @@ files:
177
177
  - bin/tau
178
178
  - lib/Thorfile
179
179
  - lib/takelage.rb
180
+ - lib/takelage/bit/check/cli.rb
181
+ - lib/takelage/bit/check/module.rb
180
182
  - lib/takelage/bit/cli.rb
181
183
  - lib/takelage/bit/clipboard/cli.rb
182
184
  - lib/takelage/bit/clipboard/module.rb