takelage 0.22.0 → 0.23.2

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/takelage.rb +8 -15
  4. data/lib/takelage/bit/clipboard/cli.rb +1 -1
  5. data/lib/takelage/bit/clipboard/copy.rb +1 -1
  6. data/lib/takelage/bit/clipboard/lib.rb +12 -8
  7. data/lib/takelage/bit/clipboard/paste.rb +1 -1
  8. data/lib/takelage/bit/require/cli.rb +1 -1
  9. data/lib/takelage/bit/require/import.rb +1 -1
  10. data/lib/takelage/bit/scope/add.rb +2 -2
  11. data/lib/takelage/bit/scope/cli.rb +1 -1
  12. data/lib/takelage/default.yml +9 -7
  13. data/lib/takelage/docker/check/cli.rb +18 -5
  14. data/lib/takelage/docker/check/{running.rb → daemon.rb} +3 -3
  15. data/lib/takelage/docker/check/socat.rb +23 -0
  16. data/lib/takelage/docker/container/check/cli.rb +2 -1
  17. data/lib/takelage/docker/container/check/existing.rb +1 -1
  18. data/lib/takelage/docker/container/check/network.rb +1 -1
  19. data/lib/takelage/docker/container/check/orphaned.rb +1 -1
  20. data/lib/takelage/docker/container/clean.rb +1 -1
  21. data/lib/takelage/docker/container/cli.rb +5 -5
  22. data/lib/takelage/docker/container/command.rb +1 -1
  23. data/lib/takelage/docker/container/daemon.rb +1 -1
  24. data/lib/takelage/docker/container/lib.rb +1 -1
  25. data/lib/takelage/docker/container/login.rb +1 -14
  26. data/lib/takelage/docker/container/prune.rb +1 -1
  27. data/lib/takelage/docker/image/cli.rb +1 -6
  28. data/lib/takelage/docker/image/tag/check.rb +42 -0
  29. data/lib/takelage/docker/image/tag/cli.rb +59 -6
  30. data/lib/takelage/docker/image/tag/latest.rb +20 -0
  31. data/lib/takelage/docker/image/tag/list.rb +19 -0
  32. data/lib/takelage/docker/image/update.rb +4 -10
  33. data/lib/takelage/docker/socket/cli.rb +2 -1
  34. data/lib/takelage/docker/socket/host.rb +14 -5
  35. data/lib/takelage/docker/socket/start.rb +3 -1
  36. data/lib/takelage/docker/socket/stop.rb +4 -3
  37. data/lib/takelage/git/check/cli.rb +7 -7
  38. data/lib/takelage/git/check/main.rb +26 -0
  39. data/lib/takelage/info/project/cli.rb +13 -0
  40. data/lib/takelage/lib/logging.rb +1 -1
  41. data/lib/takelage/lib/project.rb +8 -5
  42. data/lib/takelage/lib/subcmd.rb +2 -0
  43. data/lib/takelage/version +1 -1
  44. metadata +7 -14
  45. data/lib/takelage/docker/image/check/cli.rb +0 -39
  46. data/lib/takelage/docker/image/check/outdated.rb +0 -40
  47. data/lib/takelage/docker/image/tag/check/cli.rb +0 -48
  48. data/lib/takelage/docker/image/tag/check/local.rb +0 -42
  49. data/lib/takelage/docker/image/tag/check/remote.rb +0 -38
  50. data/lib/takelage/docker/image/tag/latest/cli.rb +0 -57
  51. data/lib/takelage/docker/image/tag/latest/local.rb +0 -20
  52. data/lib/takelage/docker/image/tag/latest/remote.rb +0 -25
  53. data/lib/takelage/docker/image/tag/list/cli.rb +0 -53
  54. data/lib/takelage/docker/image/tag/list/local.rb +0 -19
  55. data/lib/takelage/docker/image/tag/list/remote.rb +0 -28
  56. data/lib/takelage/git/check/master.rb +0 -26
@@ -6,7 +6,7 @@ module DockerContainerPrune
6
6
  def docker_container_prune
7
7
  log.debug 'Removing orphaned docker containers'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
10
 
11
11
  networks = _docker_container_prune_kill_orphaned_containers
12
12
  _docker_container_lib_remove_networks networks
@@ -6,9 +6,7 @@ module Takelage
6
6
  include LoggingModule
7
7
  include SystemModule
8
8
  include ConfigModule
9
- include DockerCheckRunning
10
- include DockerImageTagListRemote
11
- include DockerImageTagLatestRemote
9
+ include DockerCheckDaemon
12
10
  include DockerImageUpdate
13
11
 
14
12
  # Initialize takelage docker image
@@ -21,9 +19,6 @@ module Takelage
21
19
  @docker_registry = config.active['docker_registry']
22
20
  end
23
21
 
24
- desc 'check [COMMAND]', 'Check docker image'
25
- subcommand 'check', DockerImageCheck
26
-
27
22
  desc 'tag [COMMAND]', 'Handle docker image tags'
28
23
  subcommand 'tag', DockerImageTag
29
24
 
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage docker image tag check
4
+ module DockerImageTagCheck
5
+ # Backend method for docker image tag check.
6
+ # @return [Boolean] does docker image tag exist?
7
+ def docker_image_tag_check(tag)
8
+ log.debug "Check if docker image tag \"#{tag}\" exists"
9
+
10
+ return false unless docker_check_daemon
11
+
12
+ if tag.to_s.strip.empty?
13
+ log.warn 'No docker image tag specified'
14
+ return false
15
+ end
16
+
17
+ image = "#{@docker_user}/#{@docker_repo}:#{tag}"
18
+
19
+ return false unless _docker_image_check_image? image
20
+
21
+ log.debug "Found docker image \"#{image}\""
22
+ true
23
+ end
24
+
25
+ private
26
+
27
+ # Check if image exists.
28
+ def _docker_image_check_image?(image)
29
+ cmd_docker_images =
30
+ format(
31
+ config.active['cmd_docker_image_tag_check_docker_images'],
32
+ image: image
33
+ )
34
+
35
+ if (run cmd_docker_images).to_s.strip.empty?
36
+ log.debug "No docker image \"#{image}\" found"
37
+ return false
38
+ end
39
+
40
+ true
41
+ end
42
+ end
@@ -3,13 +3,66 @@
3
3
  module Takelage
4
4
  # takelage docker image tag
5
5
  class DockerImageTag < SubCommandBase
6
- desc 'check [COMMAND]', 'Check docker image tag'
7
- subcommand 'check', DockerImageTagCheck
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerCheckDaemon
10
+ include DockerImageTagList
11
+ include DockerImageTagList
12
+ include DockerImageTagLatest
13
+ include DockerImageTagCheck
8
14
 
9
- desc 'latest [COMMAND]', 'Print latest local or remote docker image tag'
10
- subcommand 'latest', DockerImageTagLatest
15
+ # Initialize takelage docker image tag check
16
+ def initialize(args = [], local_options = {}, configuration = {})
17
+ # initialize thor parent class
18
+ super args, local_options, configuration
11
19
 
12
- desc 'list [COMMAND]', 'Print local or remote docker image tags'
13
- subcommand 'list', DockerImageTagList
20
+ @docker_user = config.active['docker_user']
21
+ @docker_repo = config.active['docker_repo']
22
+ @docker_registry = config.active['docker_registry']
23
+ end
24
+
25
+ #
26
+ # docker image tag check
27
+ #
28
+ desc 'check [TAG]', 'Check if docker image [TAG] exists'
29
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
30
+ Check if docker image tag exists
31
+ LONGDESC
32
+ # Check if docker image tag exists.
33
+ def check(tag)
34
+ exit docker_image_tag_check tag
35
+ end
36
+
37
+ #
38
+ # docker image tag latest
39
+ #
40
+ desc 'list', 'Print latest docker image tag'
41
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
42
+ Print latest docker image tag
43
+ Print the tag of the docker image with the highest tag.
44
+ LONGDESC
45
+ # Print latest docker image tag.
46
+ def latest
47
+ tag_latest = docker_image_tag_latest
48
+ exit false if tag_latest == false
49
+ say tag_latest
50
+ true
51
+ end
52
+
53
+ #
54
+ # docker image tag list
55
+ #
56
+ desc 'list', 'Print docker image tags'
57
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
58
+ Print docker image tags
59
+ LONGDESC
60
+ # Print docker image tags.
61
+ def list
62
+ tag_list = docker_image_tag_list
63
+ exit false if tag_list == false
64
+ say tag_list
65
+ true
66
+ end
14
67
  end
15
68
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage docker image tag latest
4
+ module DockerImageTagLatest
5
+ # Backend method for docker image tag latest.
6
+ # @return [String] latest docker image tag
7
+ def docker_image_tag_latest
8
+ log.debug 'Getting latest docker image tag'
9
+
10
+ return false unless docker_check_daemon
11
+
12
+ tags = docker_image_tag_list
13
+
14
+ tag_latest = tags[-1]
15
+
16
+ log.debug "Latest docker tag: #{tag_latest}"
17
+
18
+ tag_latest
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage docker image tag list
4
+ module DockerImageTagList
5
+ # Backend method for docker image tag list.
6
+ # @return [Array] docker image tags
7
+ def docker_image_tag_list
8
+ cmd_docker_tags =
9
+ format(
10
+ config.active['cmd_docker_image_tag_list_docker_images'],
11
+ docker_user: @docker_user,
12
+ docker_repo: @docker_repo
13
+ )
14
+
15
+ tags = (run cmd_docker_tags).split("\n")
16
+
17
+ VersionSorter.sort(tags)
18
+ end
19
+ end
@@ -4,14 +4,9 @@
4
4
  module DockerImageUpdate
5
5
  # Backend method for docker image update.
6
6
  def docker_image_update
7
- return false unless docker_check_running
7
+ return false unless docker_check_daemon
8
8
 
9
- tags_remote = docker_image_tag_list_remote
10
-
11
- tag = 'latest'
12
- tag = docker_image_tag_latest_remote unless tags_remote.include?('latest')
13
-
14
- cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest tag
9
+ cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest
15
10
 
16
11
  cmd_docker_remove_dangling =
17
12
  config.active['cmd_docker_image_update_docker_remove_dangling']
@@ -22,12 +17,11 @@ module DockerImageUpdate
22
17
  private
23
18
 
24
19
  # Prepare dpcker pull latest command.
25
- def _docker_image_update_cmd_docker_pull_latest(tag)
20
+ def _docker_image_update_cmd_docker_pull_latest
26
21
  format(
27
22
  config.active['cmd_docker_image_update_docker_pull_latest'],
28
23
  docker_user: @docker_user,
29
- docker_repo: @docker_repo,
30
- tag_latest_remote: tag
24
+ docker_repo: @docker_repo
31
25
  )
32
26
  end
33
27
  end
@@ -6,7 +6,8 @@ module Takelage
6
6
  include LoggingModule
7
7
  include SystemModule
8
8
  include ConfigModule
9
- include DockerCheckRunning
9
+ include DockerCheckDaemon
10
+ include DockerCheckSocat
10
11
  include DockerSocketLib
11
12
  include DockerSocketHost
12
13
  include DockerSocketScheme
@@ -6,6 +6,17 @@ module DockerSocketHost
6
6
  def docker_socket_host
7
7
  log.debug 'Getting docker socket host ip address'
8
8
 
9
+ socket_host = _docker_socket_host_get_socket_host
10
+
11
+ log.debug "Docker socket host ip address is \"#{socket_host}\""
12
+
13
+ socket_host
14
+ end
15
+
16
+ private
17
+
18
+ # Get the socket host, i.e. the ip of the docker host.
19
+ def _docker_socket_host_get_socket_host
9
20
  socket_host = '127.0.0.1'
10
21
 
11
22
  addr_infos = Socket.getifaddrs
@@ -13,12 +24,10 @@ module DockerSocketHost
13
24
  # if interface docker0 exists (== linux host)
14
25
  # then return the ip address
15
26
  addr_infos.each do |addr_info|
16
- if addr_info.name == 'docker0'
17
- socket_host = addr_info.addr.ip_address if addr_info.addr.ipv4?
18
- end
19
- end
27
+ next unless (addr_info.name == 'docker0') && addr_info.addr.ipv4?
20
28
 
21
- log.debug "Docker socket host ip address is \"#{socket_host}\""
29
+ socket_host = addr_info.addr.ip_address
30
+ end
22
31
 
23
32
  socket_host
24
33
  end
@@ -6,7 +6,9 @@ module DockerSocketStart
6
6
  def docker_socket_start
7
7
  log.debug 'Starting sockets for docker container'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
+
11
+ return false unless docker_check_socat
10
12
 
11
13
  cmds_start_socket = _docker_socket_lib_get_socket_start_commands 'start'
12
14
 
@@ -6,12 +6,13 @@ module DockerSocketStop
6
6
  def docker_socket_stop
7
7
  log.debug 'Stopping sockets for docker container'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
+
11
+ return false unless docker_check_socat
10
12
 
11
13
  # get process list
12
14
  # assuming format: "pid command"
13
- cmd_ps =
14
- config.active['cmd_docker_socket_stop_docker_socket_ps']
15
+ cmd_ps = config.active['cmd_docker_socket_stop_docker_socket_ps']
15
16
 
16
17
  stdout_str = run cmd_ps
17
18
 
@@ -7,7 +7,7 @@ module Takelage
7
7
  include SystemModule
8
8
  include ConfigModule
9
9
  include GitCheckClean
10
- include GitCheckMaster
10
+ include GitCheckMain
11
11
  include GitCheckWorkspace
12
12
 
13
13
  #
@@ -23,15 +23,15 @@ module Takelage
23
23
  end
24
24
 
25
25
  #
26
- # git check master
26
+ # git check main
27
27
  #
28
- desc 'master', 'Check if we are on the git master branch'
28
+ desc 'main', 'Check if we are on the git main branch'
29
29
  long_desc <<-LONGDESC.gsub("\n", "\x5")
30
- Check if we are on the git master branch
30
+ Check if we are on the git main branch
31
31
  LONGDESC
32
- # Check if we are on the git master branch.
33
- def master
34
- exit git_check_master
32
+ # Check if we are on the git main branch.
33
+ def main
34
+ exit git_check_main
35
35
  end
36
36
 
37
37
  #
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage git check main
4
+ module GitCheckMain
5
+ # Backend method for git check main.
6
+ # @return [Boolean] are we on the git main branch?
7
+ def git_check_main
8
+ log.debug 'Check if we are on the git main branch'
9
+
10
+ return false unless git_check_workspace
11
+
12
+ branch = _git_check_main_get_branch
13
+ log.debug "We are on git branch \"#{branch}\""
14
+
15
+ branch == config.active['git_main_branch']
16
+ end
17
+
18
+ private
19
+
20
+ # Get git branch.
21
+ def _git_check_main_get_branch
22
+ cmd_get_branch =
23
+ config.active['cmd_git_check_main_git_branch']
24
+ (run cmd_get_branch).strip.split('/')[-1]
25
+ end
26
+ end
@@ -52,5 +52,18 @@ module Takelage
52
52
  say project_main_yaml
53
53
  true
54
54
  end
55
+
56
+ #
57
+ # info project dir
58
+ #
59
+ desc 'dir', 'Print project root directory'
60
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
61
+ Print project root directory
62
+ LONGDESC
63
+ # Print project root directory.
64
+ def dir
65
+ say project.dir
66
+ true
67
+ end
55
68
  end
56
69
  end
@@ -9,7 +9,7 @@ module LoggingModule
9
9
  attr_accessor :logger
10
10
 
11
11
  def initialize
12
- @logger = Logger.new(STDOUT)
12
+ @logger = Logger.new($stdout)
13
13
  end
14
14
  end
15
15
 
@@ -9,12 +9,13 @@ module ProjectModule
9
9
  include SystemModule
10
10
  include ConfigModule
11
11
 
12
- attr_accessor :active, :private, :main
12
+ attr_accessor :active, :private, :main, :dir
13
13
 
14
14
  def initialize
15
15
  @active = {}
16
16
  @private = {}
17
17
  @main = {}
18
+ @dir = {}
18
19
  end
19
20
  end
20
21
 
@@ -23,6 +24,8 @@ module ProjectModule
23
24
  TakelageProject.instance.main = _project_read_main
24
25
  TakelageProject.instance.private = _project_read_private
25
26
  TakelageProject.instance.active = _project_merge_active
27
+ TakelageProject.instance.dir =
28
+ TakelageProject.instance.config.active['project_root_dir']
26
29
  end
27
30
 
28
31
  # @return [Object] global singleton project
@@ -34,8 +37,8 @@ module ProjectModule
34
37
 
35
38
  # Read main YAML file.
36
39
  def _project_read_main
37
- path = TakelageProject.instance.config.active['project_root_dir']
38
- main_file = "#{path}/" \
40
+ dir = TakelageProject.instance.config.active['project_root_dir']
41
+ main_file = "#{dir}/" \
39
42
  "#{TakelageProject.instance.config.active['info_project_main']}"
40
43
 
41
44
  return {} unless File.exist? main_file
@@ -45,8 +48,8 @@ module ProjectModule
45
48
 
46
49
  # Read private YAML file.
47
50
  def _project_read_private
48
- path = TakelageProject.instance.config.active['project_root_dir']
49
- private_file = "#{path}/" \
51
+ dir = TakelageProject.instance.config.active['project_root_dir']
52
+ private_file = "#{dir}/" \
50
53
  "#{TakelageProject.instance.config.active['info_project_private']}"
51
54
 
52
55
  return {} unless File.exist? private_file
@@ -3,9 +3,11 @@
3
3
  # Thor with subcommands that work correctly with help
4
4
  class SubCommandBase < Thor
5
5
  # Set the subcommand banner.
6
+ # rubocop:disable Style/OptionalBooleanParameter
6
7
  def self.banner(command, _namespace = nil, _subcommand = false)
7
8
  "#{basename} #{subcommand_prefix} #{command.usage}"
8
9
  end
10
+ # rubocop:enable Style/OptionalBooleanParameter
9
11
 
10
12
  # Set the subcommand prefix.
11
13
  def self.subcommand_prefix
@@ -1 +1 @@
1
- 0.22.0
1
+ 0.23.2
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.22.0
4
+ version: 0.23.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin
@@ -226,7 +226,8 @@ files:
226
226
  - lib/takelage/completion/cli.rb
227
227
  - lib/takelage/default.yml
228
228
  - lib/takelage/docker/check/cli.rb
229
- - lib/takelage/docker/check/running.rb
229
+ - lib/takelage/docker/check/daemon.rb
230
+ - lib/takelage/docker/check/socat.rb
230
231
  - lib/takelage/docker/cli.rb
231
232
  - lib/takelage/docker/container/check/cli.rb
232
233
  - lib/takelage/docker/container/check/existing.rb
@@ -239,19 +240,11 @@ files:
239
240
  - lib/takelage/docker/container/lib.rb
240
241
  - lib/takelage/docker/container/login.rb
241
242
  - lib/takelage/docker/container/prune.rb
242
- - lib/takelage/docker/image/check/cli.rb
243
- - lib/takelage/docker/image/check/outdated.rb
244
243
  - lib/takelage/docker/image/cli.rb
245
- - lib/takelage/docker/image/tag/check/cli.rb
246
- - lib/takelage/docker/image/tag/check/local.rb
247
- - lib/takelage/docker/image/tag/check/remote.rb
244
+ - lib/takelage/docker/image/tag/check.rb
248
245
  - lib/takelage/docker/image/tag/cli.rb
249
- - lib/takelage/docker/image/tag/latest/cli.rb
250
- - lib/takelage/docker/image/tag/latest/local.rb
251
- - lib/takelage/docker/image/tag/latest/remote.rb
252
- - lib/takelage/docker/image/tag/list/cli.rb
253
- - lib/takelage/docker/image/tag/list/local.rb
254
- - lib/takelage/docker/image/tag/list/remote.rb
246
+ - lib/takelage/docker/image/tag/latest.rb
247
+ - lib/takelage/docker/image/tag/list.rb
255
248
  - lib/takelage/docker/image/update.rb
256
249
  - lib/takelage/docker/socket/cli.rb
257
250
  - lib/takelage/docker/socket/host.rb
@@ -261,7 +254,7 @@ files:
261
254
  - lib/takelage/docker/socket/stop.rb
262
255
  - lib/takelage/git/check/clean.rb
263
256
  - lib/takelage/git/check/cli.rb
264
- - lib/takelage/git/check/master.rb
257
+ - lib/takelage/git/check/main.rb
265
258
  - lib/takelage/git/check/workspace.rb
266
259
  - lib/takelage/git/cli.rb
267
260
  - lib/takelage/info/cli.rb