entangler 1.2.2 → 1.3.0

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: a4f98e12ff87f2be01e5370bc2142b4bed7154535481d33a95c6f43591e47de4
4
- data.tar.gz: 27868bae2c5fd085b4f28466e26934d57c84d37ed1f70aeb44899636fd39e14c
3
+ metadata.gz: 76ca4b85c0742a19215092fb199905604789027d5545d96cea9fea72e330b5aa
4
+ data.tar.gz: 8b77263b425f8deae8c0d32236545797e6a0e473264304112b138f7996ffd459
5
5
  SHA512:
6
- metadata.gz: 8d02e37d871284a999f90a0f93e94a4235317c4adb5d3a222e6c53187d8c2503e32af6aabc3118e95700df768c745e6924ee53672c47f956698b80a52513e6b1
7
- data.tar.gz: ebeccb202a07a95e63160aca13d08e3533a5e92470b7d3b1c14ead7acd405f6a4a6d82b4ee3f7c8d1a7fc60b46bbc8ff5b099f8eabbeca80aaa531e1ce4a9f4d
6
+ metadata.gz: 48dfe981b3a6b59983e543b43f54e9a211743d30889d81321eed3ec846b9533c716177ac8551780f278123ff5622854ef0b7a19c2007451bac2d3d7ac334b920
7
+ data.tar.gz: 6734874d44e9ce19de8b2f50d275fc2ab8ef246b968fcbfffe546b778428b50d6bef2dc1b02eb39ef883578181600a3766a3996623d8e5c5eda0f196631c2620
data/README.md CHANGED
@@ -19,7 +19,7 @@ $ entangler master /some/base/path user@remote:/some/remote/path
19
19
 
20
20
  ```
21
21
  $ entangler -h
22
- Entangler v1.2.2
22
+ Entangler v1.3.0
23
23
 
24
24
  Usage:
25
25
  entangler master <base_dir> <remote_user>@<remote_host>:<remote_base_dir> [options]
@@ -30,6 +30,7 @@ Options:
30
30
  All paths should be relative to the base sync directory.
31
31
  -p, --port PORT Overwrite the SSH port (usually 22)
32
32
  (doesn't do anything in slave mode)
33
+ --no-rvm Skip attempting to load RVM on remote
33
34
  -v, --verbose Log Debug lines
34
35
  -q, --quiet Don't log to stdout in master process
35
36
  --version Show version number
data/exe/entangler CHANGED
@@ -36,6 +36,7 @@ Usage:
36
36
 
37
37
  value_opt(options, opts, :port, '-p', '--port PORT', 'Overwrite the SSH port (usually 22)',
38
38
  "(doesn't do anything in slave mode)")
39
+ bool_opt(options, opts, :no_rvm, '--no-rvm', 'Skip attempting to load RVM on remote')
39
40
  bool_opt(options, opts, :verbose, '-v', '--verbose', 'Log Debug lines')
40
41
  bool_opt(options, opts, :quiet, '-q', '--quiet', "Don't log to stdout in master process")
41
42
 
@@ -112,6 +113,7 @@ if options[:ignore]
112
113
  end
113
114
  end
114
115
 
116
+ opts[:no_rvm] = options[:no_rvm]
115
117
  opts[:quiet] = options[:quiet]
116
118
  opts[:verbose] = options[:verbose]
117
119
 
@@ -4,4 +4,5 @@ module Entangler
4
4
  class EntanglerError < StandardError; end
5
5
  class ValidationError < EntanglerError; end
6
6
  class VersionMismatchError < EntanglerError; end
7
+ class NotInstalledOnRemoteError < EntanglerError; end
7
8
  end
@@ -12,7 +12,7 @@ module Entangler
12
12
  logger.info('Starting - Entangler on remote')
13
13
  ignore_opts = @opts[:ignore].map { |regexp| "-i '#{regexp.inspect}'" }.join(' ')
14
14
  entangler_cmd = "entangler slave #{@opts[:remote_base_dir]} #{ignore_opts}"
15
- ssh_cmd = generate_ssh_command("source ~/.rvm/environments/default && #{entangler_cmd}")
15
+ ssh_cmd = generate_ssh_command(entangler_cmd, source_rvm: true)
16
16
  full_cmd = @opts[:remote_mode] ? ssh_cmd : entangler_cmd
17
17
 
18
18
  @remote_writer, @remote_reader, remote_err, @remote_thread = Open3.popen3(full_cmd)
@@ -57,8 +57,15 @@ module Entangler
57
57
  end.compact.uniq
58
58
  end
59
59
 
60
- def generate_ssh_command(cmd)
61
- "ssh -q #{remote_hostname} -p #{@opts[:remote_port]} -C \"#{cmd}\""
60
+ def generate_ssh_command(cmd, source_rvm: false)
61
+ prefixed_cmd =
62
+ if source_rvm && !@opts[:no_rvm]
63
+ "([[ -f ~/.rvm/environments/default ]] && source ~/.rvm/environments/default || true) && #{cmd}"
64
+ else
65
+ cmd
66
+ end
67
+
68
+ "ssh -q #{remote_hostname} -p #{@opts[:remote_port]} -C \"#{prefixed_cmd}\""
62
69
  end
63
70
 
64
71
  def remote_hostname
@@ -49,13 +49,19 @@ module Entangler
49
49
  def validate_remote_entangler_version
50
50
  return unless @opts[:remote_mode]
51
51
 
52
- res = `#{generate_ssh_command('source ~/.rvm/environments/default && entangler --version')}`
52
+ res = `#{generate_ssh_command('entangler --version', source_rvm: true)}`
53
+ if res.empty?
54
+ msg = 'Entangler is not installed on the remote server.' \
55
+ ' Install Entangler on the remote server (SSH in, then `gem install entangler`), then try again.'
56
+ raise Entangler::NotInstalledOnRemoteError, msg
57
+ end
58
+
53
59
  remote_version = Gem::Version.new(res.strip)
54
60
  local_version = Gem::Version.new(Entangler::VERSION)
55
61
  return unless major_version_mismatch?(local_version, remote_version)
56
62
 
57
63
  msg = 'Entangler version too far apart, please update either local or remote Entangler.' \
58
- " Local version is #{local_version} and remote version is #{remote_version}."
64
+ " Local version is #{local_version} and remote version is #{remote_version}."
59
65
  raise Entangler::VersionMismatchError, msg
60
66
  end
61
67
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Entangler
4
- VERSION = '1.2.2'
4
+ VERSION = '1.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entangler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Allie
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-14 00:00:00.000000000 Z
11
+ date: 2023-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -153,7 +153,7 @@ homepage: https://github.com/daveallie/entangler
153
153
  licenses:
154
154
  - MIT
155
155
  metadata: {}
156
- post_install_message:
156
+ post_install_message:
157
157
  rdoc_options: []
158
158
  require_paths:
159
159
  - lib
@@ -168,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
- rubygems_version: 3.0.3.1
172
- signing_key:
171
+ rubygems_version: 3.4.10
172
+ signing_key:
173
173
  specification_version: 4
174
174
  summary: Two way file syncer using platform native notify.
175
175
  test_files: []