takeltau 0.36.5 → 0.38.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f0384f3e2dd7b515d5943dfc67d59f75c429d56c8fa6473cf2c6fe564181cbf
4
- data.tar.gz: bd538e579d0f138e832e09d3a5656e345a7d43db364bbbf31bcea6526250f6d4
3
+ metadata.gz: 0e8150c32b54f9b2c4e94e2814dbe6b74327f24720ed6f2b8554dfbb39d80f49
4
+ data.tar.gz: 861e643d2b18ff92415383306a1118b68bdd4a9ab59011c5579261c58a9221b1
5
5
  SHA512:
6
- metadata.gz: 36da5dad2130782a8c53bcbdc165b077e85a8d6f7457aff1f64e36f4efcea523a34a010dd63ea44918517e30dfde63f3ea249cc71d8b3e8d9cb39a7f47644112
7
- data.tar.gz: ce7d8a4eccd384f9239037e43e77d419d10cfe1d56d4234eabcf59014c7b4426578cf91a6a43bba9f623ec93b8d7e2d03f94f19b980d3a7131deab91afe66be3
6
+ metadata.gz: 3c10d3e74ef0ed8bf7052884dee6326f0b5ae007708dc5cfc9a2213295ece10f67347154126ecdc5794d01da384e5171f3edffa35d496225ef7dbbd0cf1f093d
7
+ data.tar.gz: 9ebcb11b7bc216d638d9a14cb7b75c49379289e0653a27eda4fae5a1ae5abe8ec8212eb6bd9158a0d82111e7ccbf70d6048bc738eda5466acc27d1693b246ff9
@@ -23,7 +23,6 @@ cmd_git_check_clean_git_status: 'git status --porcelain'
23
23
  cmd_git_check_hg_get_git_branch: 'git symbolic-ref HEAD'
24
24
  cmd_git_check_workspace_git_repo: 'git -C %{dir} rev-parse'
25
25
  cmd_git_check_workspace_pwd: 'pwd'
26
- cmd_git_lib_git_add_all: 'git add --all'
27
26
  cmd_git_lib_git_add_hg_dirs: 'git add \*/.hg/\*'
28
27
  cmd_git_lib_git_commit: 'git commit --message="%{message}"'
29
28
  cmd_git_lib_git_pull_origin: 'git pull origin %{main}'
@@ -38,6 +37,7 @@ cmd_info_status_lib_git_key_available: 'gpg --list-key %{key}'
38
37
  cmd_info_status_gopass_root_store: 'gopass config | grep "path" | cut -d " " -f 2'
39
38
  cmd_info_status_gpg_agent: 'gpg-connect-agent /bye'
40
39
  cmd_info_status_gpg_keys: 'gpg --list-keys'
40
+ cmd_info_status_hg_username: 'hg config ui.username'
41
41
  cmd_info_status_ssh_keys: 'ssh-add -l'
42
42
  cmd_info_status_ssh_socket: 'gpgconf --list-dirs agent-ssh-socket'
43
43
  cmd_init_lib_git_init: 'git init && git checkout -b main'
@@ -65,7 +65,10 @@ git_hg_branch: 'main'
65
65
  info_project_main: 'project.yml'
66
66
  info_project_private: 'private/project.yml'
67
67
  login_wait_for_sockets: '0'
68
- mutagen_socket_path_mutagen: '~/.mutagen/daemon/daemon.sock'
69
- mutagen_socket_path_gpg: '~/.gnupg/S.gpg-agent'
70
- mutagen_socket_path_ssh: '~/.gnupg/S.gpg-agent.ssh'
68
+ mutagen_socket_path_mutagen_container: '~/.mutagen/daemon/daemon.sock'
69
+ mutagen_socket_path_mutagen_host: '~/.mutagen/daemon/daemon.sock'
70
+ mutagen_socket_path_gpg_container: '~/.gnupg/S.gpg-agent'
71
+ mutagen_socket_path_gpg_host: '~/.gnupg/S.gpg-agent'
72
+ mutagen_socket_path_ssh_container: '~/.gnupg/S.gpg-agent.ssh'
73
+ mutagen_socket_path_ssh_host: '~/.gnupg/S.gpg-agent.ssh'
71
74
  mutagen_socket_takelage_label: 'type=takelage'
@@ -40,9 +40,12 @@ module Takeltau
40
40
  @hostname = _docker_container_lib_hostname
41
41
  @hostlabel = "hostname=#{@hostname}"
42
42
  @takellabel = config.active['mutagen_socket_takelage_label']
43
- @mutagensock = config.active['mutagen_socket_path_mutagen']
44
- @gpgsock = config.active['mutagen_socket_path_gpg']
45
- @sshsock = config.active['mutagen_socket_path_ssh']
43
+ @mutagensock_container = config.active['mutagen_socket_path_mutagen_container']
44
+ @mutagensock_host = config.active['mutagen_socket_path_mutagen_host']
45
+ @gpgsock_container = config.active['mutagen_socket_path_gpg_container']
46
+ @gpgsock_host = config.active['mutagen_socket_path_gpg_host']
47
+ @sshsock_container = config.active['mutagen_socket_path_ssh_container']
48
+ @sshsock_host = config.active['mutagen_socket_path_ssh_host']
46
49
  end
47
50
  # rubocop:enable Metrics/MethodLength
48
51
  # rubocop:enable Metrics/AbcSize
@@ -10,9 +10,9 @@ module DockerContainerLib
10
10
  def _docker_container_lib_start_sockets
11
11
  return false unless mutagen_check_daemon
12
12
 
13
- mutagen_socket_create 'mutagen', @mutagensock, @mutagensock
14
- mutagen_socket_create 'gpg', @gpgsock, @gpgsock
15
- mutagen_socket_create 'ssh', @sshsock, @sshsock
13
+ mutagen_socket_create 'mutagen', @mutagensock_container, @mutagensock_host
14
+ mutagen_socket_create 'gpg', @gpgsock_container, @gpgsock_host
15
+ mutagen_socket_create 'ssh', @sshsock_container, @sshsock_host
16
16
  end
17
17
 
18
18
  # Create unique docker hostname
@@ -2,23 +2,29 @@
2
2
 
3
3
  # tau git lib
4
4
  module GitLib
5
- # Pull git workspace.
6
- def git_lib_pull_workspace
7
- log.info 'Pulling git workspace'
5
+ # Prepare git workspace.
6
+ # rubocop:disable Metrics/MethodLength
7
+ def git_lib_prepare_git_workspace
8
+ log.debug 'Prepare git workspace'
8
9
 
9
- _git_lib_git_pull_origin_hg
10
- end
10
+ return false unless configured? %w[project_root_dir]
11
11
 
12
- # Push git workspace.
13
- def git_lib_push_workspace(message)
14
- log.info 'Pushing git workspace'
12
+ unless git_check_hg
13
+ log.error 'Not on git hg branch'
14
+ return false
15
+ end
15
16
 
16
- return false unless _git_lib_git_add_all
17
- return false unless _git_lib_git_commit message
18
- return false unless _git_lib_git_pull_origin_hg
17
+ unless git_check_clean
18
+ log.error 'No clean git workspace'
19
+ return false
20
+ end
19
21
 
20
- _git_lib_git_push_origin_hg
22
+ return true if _git_lib_git_pull_origin_hg
23
+
24
+ log.error 'Unable to pull git workspace'
25
+ false
21
26
  end
27
+ # rubocop:enable Metrics/MethodLength
22
28
 
23
29
  # Push git workspace.
24
30
  def git_lib_push_hg_dirs
@@ -29,30 +35,21 @@ module GitLib
29
35
  return false unless _git_lib_git_add_hg_dirs
30
36
  return false unless _git_lib_git_commit message
31
37
 
32
- _git_lib_git_push_origin_hg
33
- end
34
-
35
- private
36
-
37
- # git add all.
38
- def _git_lib_git_add_all
39
- log.debug 'Adding all files to git'
40
-
41
- cmd_git_add_all = config.active['cmd_git_lib_git_add_all']
38
+ return true if _git_lib_git_push_origin_hg
42
39
 
43
- return true if try cmd_git_add_all
44
-
45
- log.error 'Unable to add all files to git'
40
+ log.error 'Unable to git push .hg mercurial directories'
46
41
  false
47
42
  end
48
43
 
44
+ private
45
+
49
46
  # git add hg dirs.
50
47
  def _git_lib_git_add_hg_dirs
51
48
  log.debug 'Adding all .hg mercurial dirs to git'
52
49
 
53
50
  cmd_git_add_hg_dirs = config.active['cmd_git_lib_git_add_hg_dirs']
54
51
 
55
- return true if try cmd_git_add_hg_dirs
52
+ return true if (try cmd_git_add_hg_dirs).exitstatus.zero?
56
53
 
57
54
  log.error 'Unable to add all .hg mercurial dirs to git'
58
55
  false
@@ -67,7 +64,7 @@ module GitLib
67
64
  message: message
68
65
  )
69
66
 
70
- return true if try cmd_git_commit
67
+ return true if (try cmd_git_commit).exitstatus.zero?
71
68
 
72
69
  log.error 'Unable to commit to git'
73
70
  false
@@ -3,37 +3,18 @@
3
3
  # tau hg pull
4
4
  module HgPull
5
5
  # Backend method for hg pull.
6
- # rubocop:disable Metrics/AbcSize
7
- # rubocop:disable Metrics/MethodLength
8
6
  def hg_pull
9
7
  log.debug 'Pull hg repos'
10
8
 
11
- return false unless configured? %w[project_root_dir]
9
+ return false unless git_lib_prepare_git_workspace
12
10
 
13
- unless git_check_hg
14
- log.error 'Not on git hg branch'
11
+ unless _hg_pull_hg_pull_repos
12
+ log.error 'Unable to tau hg pull'
15
13
  return false
16
14
  end
17
15
 
18
- unless git_check_clean
19
- log.error 'No clean git workspace'
20
- return false
21
- end
22
-
23
- unless git_lib_pull_workspace
24
- log.error 'Unable to pull git workspace'
25
- return false
26
- end
27
-
28
- log.info _hg_pull_hg_pull_repos
29
-
30
- return true if git_lib_push_hg_dirs
31
-
32
- log.error 'Unable to push .hg mercurial directories'
33
- false
16
+ git_lib_push_hg_dirs
34
17
  end
35
- # rubocop:enable Metrics/MethodLength
36
- # rubocop:enable Metrics/AbcSize
37
18
 
38
19
  private
39
20
 
@@ -44,6 +25,8 @@ module HgPull
44
25
  root: config.active['project_root_dir']
45
26
  )
46
27
 
47
- run cmd_hg_pull_repos
28
+ stdout, _, exitstatus = run_and_capture cmd_hg_pull_repos
29
+ log.info stdout
30
+ exitstatus.zero?
48
31
  end
49
32
  end
@@ -3,30 +3,18 @@
3
3
  # tau hg push
4
4
  module HgPush
5
5
  # Backend method for hg push.
6
- # rubocop:disable Metrics/MethodLength
7
6
  def hg_push
8
7
  log.debug 'Push hg repos'
9
8
 
10
- return false unless configured? %w[project_root_dir]
9
+ return false unless git_lib_prepare_git_workspace
11
10
 
12
- unless git_check_hg
13
- log.error 'Not on git hg branch'
11
+ unless _hg_push_hg_push_repos
12
+ log.error 'Unable to tau hg push'
14
13
  return false
15
14
  end
16
15
 
17
- unless git_check_clean
18
- log.error 'No clean git workspace'
19
- return false
20
- end
21
-
22
- log.info _hg_push_hg_push_repos
23
-
24
- return true if git_lib_push_workspace 'tau hg push'
25
-
26
- log.error 'Unable to push git workspace'
27
- false
16
+ git_lib_push_hg_dirs
28
17
  end
29
- # rubocop:enable Metrics/MethodLength
30
18
 
31
19
  private
32
20
 
@@ -37,6 +25,8 @@ module HgPush
37
25
  root: config.active['project_root_dir']
38
26
  )
39
27
 
40
- run cmd_hg_push_repos
28
+ stdout, _, exitstatus = run_and_capture cmd_hg_push_repos
29
+ log.info stdout
30
+ exitstatus.zero?
41
31
  end
42
32
  end
@@ -9,18 +9,19 @@ module InfoStatusBar
9
9
  log.debug 'Get status info bar'
10
10
 
11
11
  @bar_list = []
12
+ @bar_status = true
12
13
 
13
14
  _info_status_bar_takelage
14
15
  _info_status_bar_tau
15
16
  _info_status_bar_git
16
17
  _info_status_bar_gopass
17
18
  _info_status_bar_gpg
19
+ _info_status_bar_hg
18
20
  _info_status_bar_mutagen
19
21
  _info_status_bar_ssh
20
22
 
21
- bar = @bar_list.join(' | ')
22
- log.debug "status info bar: #{bar}"
23
- bar
23
+ say @bar_list.join(' | ')
24
+ @bar_status
24
25
  end
25
26
  # rubocop:enable Metrics/MethodLength
26
27
 
@@ -29,7 +30,10 @@ module InfoStatusBar
29
30
  # Add takelage version info to bar.
30
31
  def _info_status_bar_takelage
31
32
  takelage_version_file = '/etc/takelage_version'
32
- return unless _file_exists? takelage_version_file
33
+ unless _file_exists? takelage_version_file
34
+ @bar_status = false
35
+ return false
36
+ end
33
37
 
34
38
  _file_read takelage_version_file
35
39
  @bar_list << "#{config.active['docker_repo']}: #{@content_file.chomp.green}"
@@ -43,12 +47,14 @@ module InfoStatusBar
43
47
  # Add git status info to bar.
44
48
  def _info_status_bar_git
45
49
  @status_git = info_status_git
50
+ @bar_status &&= @status_git
46
51
  @bar_list << ("git: #{@status_git ? 'ok'.green : 'no'.red}")
47
52
  end
48
53
 
49
54
  # Add gopass status info to bar.
50
55
  def _info_status_bar_gopass
51
56
  @status_gopass = info_status_gopass
57
+ @bar_status &&= @status_gopass
52
58
  @bar_list << ("gopass: #{@status_gopass ? 'ok'.green : 'no'.red}")
53
59
  end
54
60
 
@@ -59,17 +65,30 @@ module InfoStatusBar
59
65
  return
60
66
  end
61
67
 
62
- @bar_list << ("gpg: #{info_status_gpg ? 'ok'.green : 'no'.red}")
68
+ status_gpg = info_status_gpg
69
+ @bar_status &&= status_gpg
70
+ @bar_list << ("gpg: #{status_gpg ? 'ok'.green : 'no'.red}")
71
+ end
72
+
73
+ # Add git status info to bar.
74
+ def _info_status_bar_hg
75
+ @status_hg = info_status_hg
76
+ @bar_status &&= @status_hg
77
+ @bar_list << ("hg: #{@status_hg ? 'ok'.green : 'no'.red}")
63
78
  end
64
79
 
65
80
  # Add mutagen status info to bar.
66
81
  def _info_status_bar_mutagen
67
- @bar_list << ("mutagen: #{mutagen_check_daemon ? 'ok'.green : 'no'.red}")
82
+ status_mutagen = mutagen_check_daemon
83
+ @bar_status &&= status_mutagen
84
+ @bar_list << ("mutagen: #{status_mutagen ? 'ok'.green : 'no'.red}")
68
85
  end
69
86
 
70
87
  # Add ssh status info to bar.
71
88
  def _info_status_bar_ssh
72
- @bar_list << ("ssh: #{info_status_ssh ? 'ok'.green : 'no'.red}")
89
+ status_ssh = info_status_ssh
90
+ @bar_status &&= status_ssh
91
+ @bar_list << ("ssh: #{status_ssh ? 'ok'.green : 'no'.red}")
73
92
  end
74
93
  end
75
94
 
@@ -16,6 +16,7 @@ module Takeltau
16
16
  include InfoStatusGit
17
17
  include InfoStatusGopass
18
18
  include InfoStatusGPG
19
+ include InfoStatusHg
19
20
  include InfoStatusSSH
20
21
  include InfoStatusBar
21
22
  include MutagenCheckDaemon
@@ -41,7 +42,7 @@ module Takeltau
41
42
  LONGDESC
42
43
  # Print status info bar.
43
44
  def bar
44
- say info_status_bar
45
+ exit info_status_bar
45
46
  end
46
47
 
47
48
  #
@@ -80,6 +81,18 @@ module Takeltau
80
81
  exit info_status_gpg
81
82
  end
82
83
 
84
+ #
85
+ # info status hg
86
+ #
87
+ desc 'hg', 'Check hg status info'
88
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
89
+ Check hg status info
90
+ LONGDESC
91
+ # Check hg status info.
92
+ def hg
93
+ exit info_status_hg
94
+ end
95
+
83
96
  #
84
97
  # info status mutagen
85
98
  #
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # tau info status hg
4
+ module InfoStatusHg
5
+ # Backend method for info status hg.
6
+ # @return [Boolean] has mercurial been configured?
7
+ def info_status_hg
8
+ log.debug 'Check hg status'
9
+
10
+ unless _info_status_hg_username
11
+ log.error 'hg ui.username is not configured'
12
+ return false
13
+ end
14
+
15
+ log.debug 'hg config is available'
16
+ true
17
+ end
18
+
19
+ private
20
+
21
+ # Check hg username
22
+ def _info_status_hg_username
23
+ status_username = try config.active['cmd_info_status_hg_username']
24
+ status_username.exitstatus.zero?
25
+ end
26
+ end
@@ -5,14 +5,13 @@ module MutagenCheckDaemon
5
5
  # Backend method for mutagen check daemon.
6
6
  # @return [Boolean] is mutagen available?
7
7
  # rubocop:disable Metrics/MethodLength
8
- # rubocop:disable Metrics/AbcSize
9
8
  def mutagen_check_daemon
10
9
  return true if @mutagen_daemon_available
11
10
 
12
- return false unless command_available_else_warn? config.active['cmd_mutagen']
13
-
14
11
  log.debug 'Check mutagen status'
15
12
 
13
+ return false unless _mutagen_check_check_prerequisites
14
+
16
15
  # are we outside of a takelage container?
17
16
  unless _docker_container_lib_check_matrjoschka
18
17
  unless _mutagen_check_daemon_version
@@ -25,11 +24,6 @@ module MutagenCheckDaemon
25
24
  return true
26
25
  end
27
26
 
28
- unless _file_exists? config.active['mutagen_socket_path_mutagen']
29
- log.error 'The mutagen socket is not available'
30
- return false
31
- end
32
-
33
27
  unless _mutagen_check_daemon_host_connection
34
28
  log.error 'A mutagen host connection is not available'
35
29
  return false
@@ -39,11 +33,25 @@ module MutagenCheckDaemon
39
33
  @mutagen_daemon_available = true
40
34
  true
41
35
  end
42
- # rubocop:enable Metrics/AbcSize
43
36
  # rubocop:enable Metrics/MethodLength
44
37
 
45
38
  private
46
39
 
40
+ # Check mutagen prerequisites
41
+ def _mutagen_check_check_prerequisites
42
+ unless _file_exists? config.active['mutagen_socket_path_mutagen_container']
43
+ log.error 'The mutagen socket path in the container is not available'
44
+ return false
45
+ end
46
+
47
+ unless _file_exists? config.active['mutagen_socket_path_mutagen_host']
48
+ log.error 'The mutagen socket path on the host is not available'
49
+ return false
50
+ end
51
+
52
+ command_available_else_error? config.active['cmd_mutagen']
53
+ end
54
+
47
55
  # Check mutagen host connection
48
56
  # rubocop:disable Metrics/MethodLength
49
57
  def _mutagen_check_daemon_host_connection
data/lib/takeltau/version CHANGED
@@ -1 +1 @@
1
- 0.36.5
1
+ 0.38.1
data/lib/takeltau.rb CHANGED
@@ -70,6 +70,7 @@ require_relative 'takeltau/info/status/lib'
70
70
  require_relative 'takeltau/info/status/git'
71
71
  require_relative 'takeltau/info/status/gopass'
72
72
  require_relative 'takeltau/info/status/gpg'
73
+ require_relative 'takeltau/info/status/hg'
73
74
  require_relative 'takeltau/info/status/ssh'
74
75
  require_relative 'takeltau/info/status/bar'
75
76
  require_relative 'takeltau/info/status/cli'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: takeltau
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.36.5
4
+ version: 0.38.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takelwerk
@@ -244,6 +244,7 @@ files:
244
244
  - lib/takeltau/info/status/git.rb
245
245
  - lib/takeltau/info/status/gopass.rb
246
246
  - lib/takeltau/info/status/gpg.rb
247
+ - lib/takeltau/info/status/hg.rb
247
248
  - lib/takeltau/info/status/lib.rb
248
249
  - lib/takeltau/info/status/ssh.rb
249
250
  - lib/takeltau/init/cli.rb