autosftp 0.0.4 → 0.0.5

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
  SHA1:
3
- metadata.gz: fe5f456ba5dfdc5d206c8da6c19d4455a97d1bd4
4
- data.tar.gz: 48acaf854be4a9ed3defedf40722249109e83d90
3
+ metadata.gz: 732e795b1614d34bb2f383007819c836d291038b
4
+ data.tar.gz: 2a8844beba485d36aafebf4445d7106539433bb4
5
5
  SHA512:
6
- metadata.gz: c77d7e999ab097752489aaf41ccc428f612f1aa0e728484ce94c374e8bedb2b863d1cb77c9dc883cfb35995f85ddee3648bf38f7d64b9ac436ec21e023caaae5
7
- data.tar.gz: de21aff9a28914d331843c7d258037eb2f5204316942d228dfc9b31c776b051a24e1aeeedbf8ed700e098da03d17342a822e8030b2e8195b0e208a06868f8e8a
6
+ metadata.gz: 5566552f82b876ab954d038d07a2d6f478d40bf173600a0b145cde7ed384c9da3ecdaa507273dc05bd897cde9bd39ac666d61f7707a786443ef7a8d9b385521a
7
+ data.tar.gz: e891ddd5f542945dec0df654679140f54e58baa0d5358ad0f91d9a9ff9a700fa64cbd560cc781328588beb2e8ae946be25dee14ed60991ead2624ead095e06ed
data/README.md CHANGED
@@ -34,6 +34,13 @@ yaml形式で.autosftpというファイルが作成されます。
34
34
 
35
35
  $ autosftp start [remote name]
36
36
 
37
+ 後ろにディレクトリを渡すことで、監視するディレクトリ先を選択することが出来ます。
38
+ setしたローカルディレクトリ移行のパスを指定して下さい。
39
+
40
+ $ autosftp start [remote name] /app/
41
+ # いくつでも渡すことが出来ます。
42
+ $ autosftp start [remote name] /app/ /vender/
43
+
37
44
  設定したsftpの情報を確認します。
38
45
 
39
46
  $ autosftp list
@@ -42,6 +49,40 @@ yaml形式で.autosftpというファイルが作成されます。
42
49
 
43
50
  $ autosftp delete [remote name]
44
51
 
52
+ ## 設定のサンプル
53
+
54
+ プロジェクトのディレクトリに移動します。
55
+ (プロジェクトが/User/username/projectと仮定する。)
56
+
57
+ $ cd /User/username/project
58
+
59
+ autosftpの設定ファイルを作成します。
60
+
61
+ $ autosftp init
62
+
63
+ SFTPの設定を行います。
64
+ ここで重要なのが、ローカルのパスとリモートのパスを合わせる必要があります。
65
+ [remote name]は自由な名称をつけて下さい。
66
+
67
+ $ autosftp set [remote name]
68
+
69
+ 一度設定ファイル(.autosftp)を確認したほうが良いです。
70
+ 中身が以下のようになっていたら設定完了です。
71
+ `remote_path` と `local_path` のパスは合わせて下さい。
72
+
73
+ ---
74
+ : [remote name]
75
+ :user: username
76
+ :host: test.com
77
+ :port: 22
78
+ :password: password
79
+ :remote_path: /var/www/html/
80
+ :local_path: /User/username/project/
81
+
82
+ 監視をスタートします。
83
+
84
+ $ autosftp start [remote name]
85
+
45
86
  ## これからの予定
46
87
 
47
88
  - 鍵認証出来るようにする。
data/lib/autosftp/cli.rb CHANGED
@@ -8,6 +8,7 @@ module Autosftp
8
8
  class CLI < Thor
9
9
 
10
10
  desc "start [remote name]", "Automatic monitoring start"
11
+ option :chmod
11
12
  def start(*word)
12
13
  if false == Autosftp::FileAccess.exist?
13
14
  puts "is not .autosftp \n $ autosftp init"
@@ -29,7 +30,16 @@ module Autosftp
29
30
  dir = '**/*'
30
31
  end
31
32
 
32
- Autosftp::Monitor.start setting, dir
33
+ permission = {}
34
+ if options[:chmod]
35
+ permission[:dir] = options[:chmod]
36
+ permission[:file] = options[:chmod]
37
+ else
38
+ permission[:dir] = 755
39
+ permission[:file] = 644
40
+ end
41
+
42
+ Autosftp::Monitor.start setting, dir, permission
33
43
  end
34
44
 
35
45
  desc "set [remote name]", "add information to the '.autosftp'. Please put the name of any [remote name]"
@@ -33,23 +33,12 @@ module Autosftp
33
33
  end
34
34
 
35
35
  # ファイルの新規作成+更新
36
- def self.create ssh_hash, local_file, remote_file
36
+ def self.create ssh_hash, local_file, remote_file, permission
37
37
  Net::SSH.start(ssh_hash[:host], ssh_hash[:user], {:password => ssh_hash[:password], :port => ssh_hash[:port]}) do |ssh|
38
- ssh.sftp.connect do |sftp|
39
-
40
- ssh_dir(sftp, File.dirname(remote_file))
41
- begin
42
- if File.exist? local_file
43
- sftp.upload!(local_file, remote_file)
44
- end
45
- rescue Net::SFTP::StatusException => e
46
- raise unless e.code == 2
47
- if File.exist? local_file
48
- sftp.upload!(local_file, remote_file)
49
- sftp.setstat(remote_file, :permissions => 0644)
50
- end
51
- end
52
-
38
+ ssh_dir(ssh, File.dirname(remote_file), permission)
39
+ if File.exist? local_file
40
+ ssh.sftp.upload!(local_file, remote_file)
41
+ ssh.exec! "chmod #{permission[:file]} #{remote_file}"
53
42
  end
54
43
  end
55
44
  end
@@ -57,20 +46,17 @@ module Autosftp
57
46
  # ファイルの削除
58
47
  def self.delete ssh_hash, remote_file
59
48
  Net::SSH.start(ssh_hash[:host], ssh_hash[:user], {:password => ssh_hash[:password], :port => ssh_hash[:port]}) do |ssh|
60
- ssh.sftp.connect do |sftp|
61
- sftp.remove!(remote_file)
62
- end
49
+ ssh.sftp.remove!(remote_file)
63
50
  end
64
- rescue
65
51
  end
66
52
 
67
53
  # ディレクトリの作成
68
- def self.ssh_dir sftp, path
69
- sftp.stat!(path)
70
- rescue Net::SFTP::StatusException => e
54
+ def self.ssh_dir ssh, path, permission
55
+ ssh.sftp.stat!(path)
56
+ rescue
71
57
  parent = File::dirname(path);
72
- ssh_dir(sftp, parent)
73
- sftp.mkdir!(path, :permissions => 0755)
58
+ ssh_dir(ssh, parent)
59
+ ssh.sftp.mkdir!(path, :permissions => permission[:dir])
74
60
  end
75
61
 
76
62
  end
@@ -4,7 +4,7 @@ require 'autosftp/connection'
4
4
 
5
5
  module Autosftp
6
6
  class Monitor
7
- def self.start setting, dir
7
+ def self.start setting, dir, permission
8
8
  FSSM.monitor(setting[:local_path], dir) do
9
9
  puts "C: create U: update D: delete E: error"
10
10
  puts ""
@@ -14,7 +14,7 @@ module Autosftp
14
14
 
15
15
  update do |base, file|
16
16
  begin
17
- Autosftp::Connection.create setting, "#{base}/#{file}", "#{setting[:remote_path]}/#{file}"
17
+ Autosftp::Connection.create setting, "#{base}/#{file}", "#{setting[:remote_path]}/#{file}", permission
18
18
  puts "U: #{Time.now} #{setting[:remote_path]}/#{file}"
19
19
  rescue
20
20
  puts "EU: #{Time.now} #{setting[:remote_path]}/#{file}"
@@ -23,7 +23,7 @@ module Autosftp
23
23
 
24
24
  create do |base, file|
25
25
  begin
26
- Autosftp::Connection.create setting, "#{base}/#{file}", "#{setting[:remote_path]}/#{file}"
26
+ Autosftp::Connection.create setting, "#{base}/#{file}", "#{setting[:remote_path]}/#{file}", permission
27
27
  puts "C: #{Time.now} #{setting[:remote_path]}/#{file}"
28
28
  rescue
29
29
  puts "EC: #{Time.now} #{setting[:remote_path]}/#{file}"
@@ -1,3 +1,3 @@
1
1
  module Autosftp
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autosftp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirabaru
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-21 00:00:00.000000000 Z
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh