takelage 0.23.0 → 0.25.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be86ab05e3007ca479cf08765723c1dd3f28c229a78de2be07618a7e30278577
4
- data.tar.gz: 03037ef870580fa492323163cfb1754a1059329d6cb5ed1d384bfe7a690be21e
3
+ metadata.gz: f487182c0abf575811a00e8ae6e1a0c3a01a30eb684fd4c76783b1b05a63bd21
4
+ data.tar.gz: a72b1c9b40c4495af1a333924dd586acbda0e18f4b94d4b5d269923525eb91c8
5
5
  SHA512:
6
- metadata.gz: f3dbb9cd02e027bffafc7e0d5e9060746bf1164e7a394810f0b010298db8039923bad224a01c4b625294a1618dd326d477478a3c24e3067a79edbb9474eba6c5
7
- data.tar.gz: a6c473fabe3c219a3a10f1c7102b7f37bb605ec5ec30791aaef2470eee31f5004f19695f913658168ed7f7c2a6c30ce8ed17f4b8f7b560c900c20c6b7770e621
6
+ metadata.gz: 816965c2beac2f149a10257a62e64b9a7697ce8ab4883fabfe090bf139242484c6a8b0b244fe3f0e67856285e944699cbe8d7c0a14ec8d6da0958e4ab7b0cfe2
7
+ data.tar.gz: 5003ad31e12a7247eee338a6b29dd0e1d44deaec11946c4269e3b5c4e23985f1555e72635678690821e968cb2cc28823899fadfa3068dceb6575b586d8b14611
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ![takelage image](https://github.com/geospin-takelage/takelage-cli/actions/workflows/test_project_nightly.yml/badge.svg)
2
+
1
3
  # takelage-cli
2
4
 
3
5
  *takelage-cli* is a command line interface
@@ -59,22 +61,19 @@ tau [bit scope inbit](features/cucumber/features/bit/bit.scope.inbit.feature) |
59
61
  tau [bit scope list](features/cucumber/features/bit/bit.scope.list.feature) | List bit remote scopes
60
62
  tau [bit scope new](features/cucumber/features/bit/bit.scope.new.feature) [SCOPE] | Init a new bit [SCOPE]
61
63
  tau [completion bash](features/cucumber/features/completion/completion.bash.feature) | Print bash completion code
62
- tau [docker check running](features/cucumber/features/docker/docker.check.running.feature) | Check if docker daemon is running
64
+ tau [docker check daemon](features/cucumber/features/docker/docker.check.daemon.feature) | Check if docker daemon is running
65
+ tau [docker check socat](features/cucumber/features/docker/docker.check.socat.feature) | Check if socat command is available
63
66
  tau [docker container check existing](features/cucumber/features/docker/docker.container.check.existing.feature) [CONTAINER] | Check if docker [CONTAINER] is existing
64
67
  tau [docker container check network](features/cucumber/features/docker/docker.container.check.network.feature) [NETWORK] | Check if docker [NETWORK] is existing
65
68
  tau [docker container check orphaned](features/cucumber/features/docker/docker.container.check.orphaned.feature) [CONTAINER] | Check if docker [CONTAINER] is orphaned
69
+ tau [docker container clean](features/cucumber/features/docker/docker.container.clean.feature) | Remove all docker containers
66
70
  tau [docker container command](features/cucumber/features/docker/docker.container.command.feature) [CMD] | Run [CMD] in a docker container
67
71
  tau [docker container daemon](features/cucumber/features/docker/docker.container.daemon.feature) | Run docker container in daemon mode
68
72
  tau [docker container login](features/cucumber/features/docker/docker.container.login.feature) | Log in to latest local docker container
69
- tau [docker container clean](features/cucumber/features/docker/docker.container.clean.feature) | Remove all docker containers
70
73
  tau [docker container prune](features/cucumber/features/docker/docker.container.prune.feature) | Remove orphaned docker containers
71
- tau [docker image check outdated](features/cucumber/features/docker/docker.image.check.outdated.feature) | Check if a docker image is outdated
72
- tau [docker image tag check local](features/cucumber/features/docker/docker.image.tag.check.local.feature) [TAG] | Check if local docker image [TAG] exists
73
- tau [docker image tag check remote](features/cucumber/features/docker/docker.image.tag.check.remote.feature) [TAG] | Check if remote docker image [TAG] exists
74
- tau [docker image tag latest local](features/cucumber/features/docker/docker.image.tag.latest.local.feature) | Print latest local docker image tag
75
- tau [docker image tag latest remote](features/cucumber/features/docker/docker.image.tag.latest.remote.feature) | Print latest remote docker image tag
76
- tau [docker image tag list local](features/cucumber/features/docker/docker.image.tag.list.local.feature) | Print local docker image tags
77
- tau [docker image tag list remote](features/cucumber/features/docker/docker.image.tag.list.remote.feature) | Print remote docker image tags
74
+ tau [docker image tag check](features/cucumber/features/docker/docker.image.tag.check.feature) [TAG] | Check if local docker image [TAG] exists
75
+ tau [docker image tag latest](features/cucumber/features/docker/docker.image.tag.latest.feature) | Print latest local docker image tag
76
+ tau [docker image tag list](features/cucumber/features/docker/docker.image.tag.list.feature) | Print local docker image tags
78
77
  tau [docker image update](features/cucumber/features/docker/docker.image.update.feature) | Get latest remote docker container
79
78
  tau [docker socket host](features/cucumber/features/docker/docker.socket.host.feature) | Print docker socket host ip address
80
79
  tau [docker socket scheme](features/cucumber/features/docker/docker.socket.scheme.feature) | Print docker socket scheme
@@ -93,15 +92,15 @@ tau [self config home](features/cucumber/features/self/self.config.home.feature)
93
92
  tau [self config project](features/cucumber/features/self/self.config.project.feature) | Print takelage project config file configuration
94
93
  tau [self list](features/cucumber/features/self/self.list.feature) | List all commands
95
94
  tau [self version](features/cucumber/features/self/self.version.feature) | Print tau semantic version number
95
+ tau clean | Alias for tau [docker container clean](features/cucumber/features/docker/docker.container.clean.feature)
96
96
  tau config | Alias for tau [self config active](features/cucumber/features/self/self.config.active.feature)
97
97
  tau copy [DIR] [SCOPE] | Alias for tau [bit clipboard copy](features/cucumber/features/bit/bit.clipboard.copy.feature)
98
98
  tau list | Alias for tau [self list](features/cucumber/features/self/self.list.feature)
99
99
  tau login | Alias for tau [docker container login](features/cucumber/features/docker/docker.container.login.feature)
100
- tau clean | Alias for tau [docker container clean](features/cucumber/features/docker/docker.container.clean.feature)
101
100
  tau paste [COMPONENT] [DIR] | Alias for tau [bit clipboard paste](features/cucumber/features/bit/bit.clipboard.paste.feature)
102
101
  tau project | Alias for tau [info project active](features/cucumber/features/info/info.project.active.feature)
103
- tau pull | Alias for tau [bit clipboard pull](features/cucumber/features/bit/bit.clipboard.pull.feature)
104
102
  tau prune | Alias for tau [docker container prune](features/cucumber/features/docker/docker.container.prune.feature)
103
+ tau pull | Alias for tau [bit clipboard pull](features/cucumber/features/bit/bit.clipboard.pull.feature)
105
104
  tau push | Alias for tau [bit clipboard push](features/cucumber/features/bit/bit.clipboard.push.feature)
106
105
  tau update | Alias for tau [docker image update](features/cucumber/features/docker/docker.image.update.feature)
107
106
  tau version | Alias for tau [self version](features/cucumber/features/self/self.version.feature)
@@ -125,6 +124,9 @@ or *tau config*.
125
124
  | *~/.takelage.yml* | normal | User-wide configuration file in your home directory. This is your normal custom configuration file. |
126
125
  | *takelage.yml* | highest | Project-specific configuration file next to your main Rakefile. Some projects need special configuration. |
127
126
 
127
+ Please remember that a project directory is identified by the main
128
+ [Rakefile](Rakefile).
129
+
128
130
  ### Configuration Examples
129
131
 
130
132
  - You should add the following configuration items in your *~/.takelage.yml*
data/lib/takelage.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'etc'
4
+ require 'digest/bubblebabble'
4
5
  require 'fileutils'
5
6
  require 'fylla'
6
7
  require 'json'
@@ -43,7 +44,8 @@ require_relative 'takelage/bit/require/import'
43
44
  require_relative 'takelage/bit/require/cli'
44
45
  require_relative 'takelage/bit/cli'
45
46
  require_relative 'takelage/completion/cli'
46
- require_relative 'takelage/docker/check/running'
47
+ require_relative 'takelage/docker/check/daemon'
48
+ require_relative 'takelage/docker/check/socat'
47
49
  require_relative 'takelage/docker/check/cli'
48
50
  require_relative 'takelage/docker/socket/lib'
49
51
  require_relative 'takelage/docker/socket/host'
@@ -107,8 +109,9 @@ module Takelage
107
109
  # Initialize global singleton project
108
110
  initialize_project
109
111
 
110
- # Prepare for the worst
112
+ # Set defaults
111
113
  @docker_daemon_running = false
114
+ @socat_command_available = false
112
115
 
113
116
  # fylla bash completion code
114
117
  @bash_fylla = Fylla.bash_completion self
@@ -29,7 +29,8 @@ cmd_bit_scope_add_scope: 'bit remote add %{remote}/%{scope}'
29
29
  cmd_bit_scope_list_find_scopes: 'find -L %{root} -name scope.json'
30
30
  cmd_bit_scope_new_bit_init: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init --bare'
31
31
  cmd_bit_scope_remove_scope: 'rm --force --recursive %{root}/%{scope}'
32
- cmd_docker_check_running_docker_info: 'docker info'
32
+ cmd_docker_check_daemon_docker_info: 'docker info'
33
+ cmd_docker_check_socat_which_socat: 'which socat'
33
34
  cmd_docker_container_check_existing_docker_ps: 'docker ps --filter name=^%{container}$ --quiet'
34
35
  cmd_docker_container_check_network_docker_network: 'docker network ls --quiet --filter name=^%{network}$'
35
36
  cmd_docker_container_check_orphaned_docker_exec: 'docker exec --interactive %{container} ps a'
@@ -6,18 +6,31 @@ 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
 
11
12
  #
12
- # docker check running
13
+ # docker check daemon
13
14
  #
14
- desc 'running', 'Check if docker daemon is running'
15
+ desc 'daemon', 'Check if docker daemon is running'
15
16
  long_desc <<-LONGDESC.gsub("\n", "\x5")
16
17
  Check if docker daemon is running
17
18
  LONGDESC
18
19
  # Check if docker daemon is running.
19
- def running
20
- exit docker_check_running
20
+ def daemon
21
+ exit docker_check_daemon
22
+ end
23
+
24
+ #
25
+ # docker check socat
26
+ #
27
+ desc 'socat', 'Check if socat command is available'
28
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
29
+ Check if socat command is available
30
+ LONGDESC
31
+ # Check if socat command is available.
32
+ def socat
33
+ exit docker_check_socat
21
34
  end
22
35
  end
23
36
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # takelage docker check running
4
- module DockerCheckRunning
4
+ module DockerCheckDaemon
5
5
  # Backend method for docker check running.
6
6
  # @return [Boolean] is the docker daemon running?
7
- def docker_check_running
7
+ def docker_check_daemon
8
8
  return true if @docker_daemon_running
9
9
 
10
10
  log.debug 'Check if the docker daemon is running'
11
11
 
12
- status = try config.active['cmd_docker_check_running_docker_info']
12
+ status = try config.active['cmd_docker_check_daemon_docker_info']
13
13
 
14
14
  unless status.exitstatus.zero?
15
15
  log.error 'The docker daemon is not running'
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage docker check running
4
+ module DockerCheckSocat
5
+ # Backend method for docker check socat.
6
+ # @return [Boolean] is the socat command available?
7
+ def docker_check_socat
8
+ return true if @socat_command_available
9
+
10
+ log.debug 'Check if the socat command is available'
11
+
12
+ status = try config.active['cmd_docker_check_socat_which_socat']
13
+
14
+ unless status.exitstatus.zero?
15
+ log.debug 'The socat command is not available'
16
+ return false
17
+ end
18
+
19
+ log.debug 'The socat command is available'
20
+ @socat_command_available = true
21
+ true
22
+ end
23
+ 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 DockerContainerCheckExisting
11
12
  include DockerContainerCheckNetwork
12
13
  include DockerContainerCheckOrphaned
@@ -7,7 +7,7 @@ module DockerContainerCheckExisting
7
7
  def docker_container_check_existing(container)
8
8
  log.debug "Checking if container \"#{container}\" is existing"
9
9
 
10
- return false unless docker_check_running
10
+ return false unless docker_check_daemon
11
11
 
12
12
  stdout_str = run _docker_container_cmd_check_existing container
13
13
 
@@ -7,7 +7,7 @@ module DockerContainerCheckNetwork
7
7
  def docker_container_check_network(network)
8
8
  log.debug "Checking if network \"#{network}\" is existing"
9
9
 
10
- return false unless docker_check_running
10
+ return false unless docker_check_daemon
11
11
 
12
12
  stdout_str = run _docker_container_cmd_check_network network
13
13
 
@@ -7,7 +7,7 @@ module DockerContainerCheckOrphaned
7
7
  def docker_container_check_orphaned(container)
8
8
  log.debug "Check if container \"#{container}\" is orphaned"
9
9
 
10
- return false unless docker_check_running
10
+ return false unless docker_check_daemon
11
11
 
12
12
  stdout_str = run _docker_container_cmd_check_orphaned container
13
13
 
@@ -6,7 +6,7 @@ module DockerContainerClean
6
6
  def docker_container_clean
7
7
  log.debug 'Removing all docker containers'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
10
 
11
11
  return false if _docker_container_clean_harakiri?
12
12
 
@@ -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 DockerContainerCheckExisting
11
12
  include DockerContainerCheckNetwork
12
13
  include DockerContainerCheckOrphaned
@@ -36,7 +37,7 @@ module Takelage
36
37
  @docker_registry = config.active['docker_registry']
37
38
  @username = ENV['USER'] || 'noname'
38
39
  @workdir = Dir.getwd
39
- @hostname = "#{@docker_repo}_#{File.basename(@workdir)}"
40
+ @hostname = _docker_container_lib_hostname
40
41
  @socket_host = docker_socket_host
41
42
  @sockets = docker_socket_scheme
42
43
  end
@@ -6,7 +6,7 @@ module DockerContainerCommand
6
6
  def docker_container_command(command)
7
7
  log.debug 'Running command in container'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
10
 
11
11
  docker_socket_start
12
12
  return false unless _docker_container_lib_create_net_and_ctr @hostname
@@ -6,7 +6,7 @@ module DockerContainerDaemon
6
6
  def docker_container_daemon
7
7
  log.debug 'Starting docker container as daemon'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
10
 
11
11
  _docker_container_lib_create_net_and_ctr @hostname
12
12
  end
@@ -6,6 +6,14 @@
6
6
  module DockerContainerLib
7
7
  private
8
8
 
9
+ # Create unique docker hostname
10
+ def _docker_container_lib_hostname
11
+ relative_name = "#{@docker_repo}_#{File.basename(@workdir)}"
12
+ absolute_name = "#{@docker_repo}_#{@workdir}"
13
+ digest = Digest::SHA256.bubblebabble absolute_name
14
+ "#{relative_name}_#{digest[0..10]}"
15
+ end
16
+
9
17
  # Create docker container and network.
10
18
  def _docker_container_lib_create_net_and_ctr(name)
11
19
  return false if _docker_container_lib_check_matrjoschka
@@ -110,6 +118,10 @@ module DockerContainerLib
110
118
  return false unless ENV.keys.include? 'TAKELAGE_PROJECT_BASE_DIR'
111
119
 
112
120
  log.error 'You cannot log in to takelage from within takelage'
121
+
122
+ # wait or the github workflow will fail
123
+ sleep 1
124
+
113
125
  true
114
126
  end
115
127
 
@@ -6,7 +6,7 @@ module DockerContainerLogin
6
6
  def docker_container_login
7
7
  log.debug 'Logging in to docker container'
8
8
 
9
- return false unless docker_check_running
9
+ return false unless docker_check_daemon
10
10
 
11
11
  docker_socket_start
12
12
  return false unless _docker_container_lib_create_net_and_ctr @hostname
@@ -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,7 +6,7 @@ module Takelage
6
6
  include LoggingModule
7
7
  include SystemModule
8
8
  include ConfigModule
9
- include DockerCheckRunning
9
+ include DockerCheckDaemon
10
10
  include DockerImageUpdate
11
11
 
12
12
  # Initialize takelage docker image
@@ -7,7 +7,7 @@ module DockerImageTagCheck
7
7
  def docker_image_tag_check(tag)
8
8
  log.debug "Check if docker image tag \"#{tag}\" exists"
9
9
 
10
- return false unless docker_check_running
10
+ return false unless docker_check_daemon
11
11
 
12
12
  if tag.to_s.strip.empty?
13
13
  log.warn 'No docker image tag specified'
@@ -6,7 +6,7 @@ module Takelage
6
6
  include LoggingModule
7
7
  include SystemModule
8
8
  include ConfigModule
9
- include DockerCheckRunning
9
+ include DockerCheckDaemon
10
10
  include DockerImageTagList
11
11
  include DockerImageTagList
12
12
  include DockerImageTagLatest
@@ -37,7 +37,7 @@ module Takelage
37
37
  #
38
38
  # docker image tag latest
39
39
  #
40
- desc 'list', 'Print latest docker image tag'
40
+ desc 'latest', 'Print latest docker image tag'
41
41
  long_desc <<-LONGDESC.gsub("\n", "\x5")
42
42
  Print latest docker image tag
43
43
  Print the tag of the docker image with the highest tag.
@@ -7,11 +7,15 @@ module DockerImageTagLatest
7
7
  def docker_image_tag_latest
8
8
  log.debug 'Getting latest docker image tag'
9
9
 
10
- return false unless docker_check_running
10
+ return false unless docker_check_daemon
11
11
 
12
12
  tags = docker_image_tag_list
13
13
 
14
- tag_latest = tags[-1]
14
+ tag_latest = if tags.include? 'latest'
15
+ 'latest'
16
+ else
17
+ tags[-1]
18
+ end
15
19
 
16
20
  log.debug "Latest docker tag: #{tag_latest}"
17
21
 
@@ -4,7 +4,7 @@
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
9
  cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest
10
10
 
@@ -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,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
 
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.23.0
1
+ 0.25.8
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.23.0
4
+ version: 0.25.8
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
@@ -287,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
288
  - !ruby/object:Gem::Version
288
289
  version: '0'
289
290
  requirements: []
290
- rubygems_version: 3.0.8
291
+ rubygems_version: 3.2.3
291
292
  signing_key:
292
293
  specification_version: 4
293
294
  summary: takelage devops workflow cli