ftpeter 0.1.0 → 0.2.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
  SHA1:
3
- metadata.gz: ecc761a5a1d0acb90260ac556b71f69f1025aa7b
4
- data.tar.gz: c790862e26ba4bc5d70dfd84130c1cf9374442d9
3
+ metadata.gz: c86268cfe83c63b53a5342410956738fbeaef88b
4
+ data.tar.gz: 02fa1e3409a5f3ecbc39378294b0716f886eccbd
5
5
  SHA512:
6
- metadata.gz: 3592f65606899aad4fc279a9966413018e85cdfbd08537ea22d8cbaf3542cc9f8b124b01de2e9642bb7ce471830946bbac06bce97b4f610d45d2359de459689f
7
- data.tar.gz: 4ca49adb7d7b27a490c941375722c4330a5ca675fb69f8be0480627edcf3a5c098bab6ee9ccc649b977d6cc7c9ac014fe5e0566a8d1bb5325deeadcbb10fafce
6
+ metadata.gz: 10bae2b564422d92537198d048d16fbeb5477863e3cfd4a2b6ea4a19842a515eb4ffb6cd2c997c63ef912780fc0b54ac1282233509a27aacfde99d6f1c95d7df
7
+ data.tar.gz: 20fe5332c67d3744ca8c8feea384998406be4e17dc255149d023905aaac368e41767b21f528bbdac1761e69347ae45fc258dfd1d9cf3c4f1e03f12b00a2eebd4
data/.rubocop.yml ADDED
@@ -0,0 +1,33 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ # Style Choices
4
+
5
+ Metrics/LineLength:
6
+ Max: 100
7
+
8
+ Style/BlockDelimiters:
9
+ EnforcedStyle: braces_for_chaining
10
+
11
+ Style/HashSyntax:
12
+ EnforcedStyle: ruby19_no_mixed_keys
13
+
14
+ Style/MultilineMethodCallIndentation:
15
+ EnforcedStyle: indented_relative_to_receiver
16
+
17
+ Style/FrozenStringLiteralComment:
18
+ EnforcedStyle: always
19
+
20
+ Style/PercentLiteralDelimiters:
21
+ PreferredDelimiters:
22
+ '%r': ~~
23
+
24
+ Style/AndOr:
25
+ EnforcedStyle: conditionals
26
+
27
+ # Rejection of nonsensical Rules and things I don't care about
28
+
29
+ Lint/AmbiguousRegexpLiteral:
30
+ Enabled: false
31
+
32
+ Style/RegexpLiteral:
33
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,34 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-09-04 12:22:39 +0200 using RuboCop version 0.42.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ Metrics/AbcSize:
11
+ Max: 25
12
+
13
+ # Offense count: 2
14
+ # Configuration parameters: CountComments.
15
+ Metrics/MethodLength:
16
+ Max: 24
17
+
18
+ # Offense count: 7
19
+ Style/Documentation:
20
+ Exclude:
21
+ - 'spec/**/*'
22
+ - 'test/**/*'
23
+ - 'lib/ftpeter.rb'
24
+ - 'lib/ftpeter/backend.rb'
25
+ - 'lib/ftpeter/backend/git.rb'
26
+ - 'lib/ftpeter/cli.rb'
27
+ - 'lib/ftpeter/transport.rb'
28
+ - 'lib/ftpeter/transport/lftp.rb'
29
+
30
+ # Offense count: 1
31
+ # Configuration parameters: MinBodyLength.
32
+ Style/GuardClause:
33
+ Exclude:
34
+ - 'lib/ftpeter/cli.rb'
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ ftpeter
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.3.1
data/Gemfile CHANGED
@@ -1,4 +1,10 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+ source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in ftpeter.gemspec
4
5
  gemspec
6
+
7
+ group :development do
8
+ gem 'guard-rubocop'
9
+ gem 'guard-rspec'
10
+ end
data/Guardfile ADDED
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+ # A sample Guardfile
3
+ # More info at https://github.com/guard/guard#readme
4
+
5
+ ## Uncomment and set this to only include directories you want to watch
6
+ # directories %w(app lib config test spec features) \
7
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
8
+
9
+ ## Note: if you are using the `directories` clause above and you are not
10
+ ## watching the project directory ('.'), then you will want to move
11
+ ## the Guardfile to a watched dir and symlink it back, e.g.
12
+ #
13
+ # $ mkdir config
14
+ # $ mv Guardfile config/
15
+ # $ ln -s config/Guardfile .
16
+ #
17
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
18
+
19
+ guard :rubocop do
20
+ watch(%r~.+\.rb$~)
21
+ watch(%r~.+\.gemspec$~)
22
+ watch(%r~(Rake|Gem)file$~)
23
+ watch(%r~(?:.+/)?\.rubocop\.yml$~) { |m| File.dirname(m[0]) }
24
+ end
25
+
26
+ # Note: The cmd option is now required due to the increasing number of ways
27
+ # rspec may be run, below are examples of the most common uses.
28
+ # * bundler: 'bundle exec rspec'
29
+ # * bundler binstubs: 'bin/rspec'
30
+ # * spring: 'bin/rspec' (This will use spring if running and you have
31
+ # installed the spring binstubs per the docs)
32
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
33
+ # * 'just' rspec: 'rspec'
34
+
35
+ guard :rspec, cmd: 'rspec' do
36
+ require 'guard/rspec/dsl'
37
+ dsl = Guard::RSpec::Dsl.new(self)
38
+
39
+ # Feel free to open issues for suggestions and improvements
40
+
41
+ # RSpec files
42
+ rspec = dsl.rspec
43
+ watch(rspec.spec_helper) { rspec.spec_dir }
44
+ watch(rspec.spec_support) { rspec.spec_dir }
45
+ watch(rspec.spec_files)
46
+
47
+ # Ruby files
48
+ ruby = dsl.ruby
49
+ dsl.watch_spec_files_for(ruby.lib_files)
50
+ end
data/README.md CHANGED
@@ -57,7 +57,7 @@ https://git.lanpartei.de/kronn/ftpeter
57
57
 
58
58
  ## License
59
59
 
60
- "MIT-alike, not no military usage and no sublicensing"
60
+ "MIT-alike, but no military usage and no sublicensing"
61
61
 
62
62
 
63
63
  Copyright (c) 2015 Matthias Viehweger
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "ftpeter"
4
+ require 'bundler/setup'
5
+ require 'ftpeter'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "ftpeter"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start
data/exe/ftpeter CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "ftpeter/cli"
4
+ require 'ftpeter/cli'
4
5
 
5
6
  Ftpeter::CLI.new(ARGV).go
data/ftpeter.gemspec CHANGED
@@ -1,24 +1,32 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+ lib = File.expand_path('../lib', __FILE__)
2
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "ftpeter/version"
4
+ require 'ftpeter/version'
4
5
 
5
6
  Gem::Specification.new do |spec|
6
- spec.name = "ftpeter"
7
+ spec.name = 'ftpeter'
7
8
  spec.version = Ftpeter::VERSION
8
- spec.authors = ["Matthias Viehweger"]
9
- spec.email = ["kronn@kronn.de"]
9
+ spec.authors = ['Matthias Viehweger']
10
+ spec.email = ['kronn@kronn.de']
10
11
 
11
- spec.summary = %q{Deployments via FTP}
12
- spec.description = %q{Upload or delete files that have changed in git using lftp. lftp supports ftp, ftps, sftp and more.}
13
- spec.homepage = "https://git.lanpartei.de/kronn/ftpeter"
14
- spec.license = "MIT"
12
+ spec.summary = 'Deployments via FTP'
13
+ spec.description = <<-EODESC
14
+ Upload or delete files that have changed in git using lftp.
15
+ lftp supports ftp, ftps, sftp and more.
16
+ EODESC
17
+ spec.homepage = 'https://git.lanpartei.de/kronn/ftpeter'
18
+ spec.license = 'MIT'
15
19
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
+ spec.files = `git ls-files -z`
21
+ .split("\x0")
22
+ .reject { |f| f.match(%r~^(test|spec|features)/~) }
23
+ spec.bindir = 'exe'
24
+ spec.executables = spec.files.grep(%r~^exe/~) { |f| File.basename(f) }
25
+ spec.require_paths = ['lib']
20
26
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency 'bundler', '~> 1.10'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rspec'
30
+ spec.add_development_dependency 'fakefs'
31
+ spec.add_development_dependency 'rubocop'
24
32
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ module Ftpeter
3
+ module Backend
4
+ class Git
5
+ attr_reader :changes
6
+
7
+ def initialize(last)
8
+ # build up diff since last version
9
+ files = `git log #{last}... --name-status --oneline`.split("\n")
10
+ deleted = files.grep(/^[RD]/).map { |l| l.gsub(/^[RD]\s+/, '') }.uniq
11
+ changed = files.grep(/^[ACMR]/).map { |l| l.gsub(/^[ACMR]\s+/, '') }.uniq
12
+ added = files.grep(/^[A]/).map { |l| l.gsub(/^[A]\s+/, '') }.uniq
13
+
14
+ @changes = Ftpeter::Changes.new(deleted, changed, added)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ module Ftpeter
3
+ module Backend
4
+ autoload :Git, 'ftpeter/backend/git'
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ module Ftpeter
3
+ Changes = Struct.new(:deleted, :changed, :added) do
4
+ def newdirs
5
+ @newdirs ||= added
6
+ .map { |fn| Pathname.new(fn).dirname.to_s }
7
+ .uniq
8
+ .reject { |fn| fn == '.' }
9
+ end
10
+ end
11
+ end
data/lib/ftpeter/cli.rb CHANGED
@@ -1,94 +1,65 @@
1
- require "pathname"
1
+ # frozen_string_literal: true
2
+ require 'pathname'
2
3
 
3
4
  module Ftpeter
4
5
  class CLI
5
6
  def initialize(args)
6
- raise ArgumentError, "Please specify a host to deploy to" unless args[0]
7
+ raise ArgumentError, 'Please specify a host to deploy to' unless args[0]
7
8
 
8
9
  @host = args[0]
9
- @dir = args[1] || "/" # the directory to change into
10
- @last = args[2] || "origin/master" # get the last deployed version and current version
10
+ @dir = args[1] || '/' # the directory to change into
11
+ @last = args[2] || 'origin/master' # get the last deployed version
11
12
 
12
13
  configure
13
14
  end
14
15
 
16
+ # TODO: extract code into Connection-class
15
17
  def configure
16
- cleaned_host = if @host =~ %r!//!
17
- require "uri"
18
- URI(@host).host
19
- else
20
- @host
21
- end
18
+ cleaned_host = if @host =~ %r~//~
19
+ require 'uri'
20
+ URI(@host).host
21
+ else
22
+ @host
23
+ end
22
24
 
23
25
  @credentials = begin
24
26
  `grep #{cleaned_host} ~/.netrc`.chomp
25
27
  .split("\n").first
26
28
  .match(/login (?<user>\S+) password (?<pass>\S+)/)
27
- rescue NoMethodError => e
29
+ rescue NoMethodError
28
30
  nil
29
31
  end
30
32
 
31
33
  @commands = begin
32
- Pathname.new("./.ftpeterrc").read.chomp
33
- rescue Errno::ENOENT=> e
34
+ Pathname.new('./.ftpeterrc').read.chomp
35
+ rescue Errno::ENOENT
34
36
  nil
35
37
  end
38
+
39
+ @connection = Ftpeter::Connection.new(
40
+ @host,
41
+ @credentials,
42
+ @dir,
43
+ @commands
44
+ )
36
45
  end
37
46
 
38
47
  def go
39
- # internal vars
40
- lftp_script = []
41
- lftp_fn = Pathname.new("./lftp_script").expand_path
42
-
43
- # build up diff since last version
44
- files = `git log #{@last}... --name-status --oneline`.split("\n")
45
- deleted = files.grep(/^[RD]/).map { |l| l.gsub(/^[RD]\s+/, "") }.uniq
46
- changed = files.grep(/^[ACMR]/).map { |l| l.gsub(/^[ACMR]\s+/, "") }.uniq
47
- added = files.grep(/^[A]/).map { |l| l.gsub(/^[A]\s+/, "") }.uniq
48
- newdirs = added.map { |fn| Pathname.new(fn).dirname.to_s }.uniq.reject { |fn| fn == "." }
49
-
50
- # lftp connection header
51
- lftp_script << "open #{@host}"
52
- lftp_script << "user #{@credentials["user"]} #{@credentials["pass"]}" if @credentials
53
- lftp_script << "cd #{@dir}"
54
-
55
- # lftp file commands
56
- lftp_script << deleted.map do |fn|
57
- "rm #{fn}"
58
- end
59
- lftp_script << newdirs.map do |fn|
60
- "mkdir -p #{fn}"
61
- end
62
- lftp_script << changed.map do |fn|
63
- "put #{fn} -o #{fn}"
64
- end
65
- lftp_script << @commands.split("\n").map do |cmd|
66
- "!#{cmd}"
67
- end if @commands
68
- lftp_script << '!echo ""'
69
- lftp_script << '!echo "Deployment complete"'
70
-
71
- # write script to file
72
- lftp_fn.open("w") do |f|
73
- f << lftp_script.flatten.join("\n")
74
- f << "\n"
75
- end
48
+ changes = get_changes_from(:git)
49
+ upload = transport(changes).via(@connection, :lftp)
76
50
 
77
- puts "="*80
78
- puts lftp_fn.read
79
- puts "="*80
80
- puts
51
+ $stdout.puts '=' * 80, upload.inform, '=' * 80, nil
52
+ upload.persist
81
53
 
82
54
  if okay?
83
- `lftp -f #{lftp_fn}`
84
- lftp_fn.delete
55
+ upload.execute and upload.cleanup
85
56
  else
86
- puts "#{lftp_fn} is left for your editing pleasure"
57
+ $stdout.puts "#{upload.script} is left for your editing pleasure"
87
58
  end
88
59
  end
89
60
 
90
- def confirm(confirmation = "yes")
91
- $stderr.print "[yes, No] > "
61
+ def confirm(confirmation = 'yes')
62
+ $stderr.print '[yes, No] > '
92
63
 
93
64
  if $stdin.gets.chomp != confirmation
94
65
  raise "you did not enter '#{confirmation}', aborting"
@@ -98,12 +69,22 @@ module Ftpeter
98
69
  end
99
70
 
100
71
  def okay?
101
- $stderr.puts "is this script okay?"
72
+ $stdout.puts 'is this script okay?'
102
73
  begin
103
- confirm("yes")
74
+ confirm('yes')
104
75
  rescue RuntimeError
105
76
  false
106
77
  end
107
78
  end
79
+
80
+ def get_changes_from(vcs)
81
+ raise ArgumentError, "There's only git-support for now" unless vcs == :git
82
+
83
+ Ftpeter::Backend::Git.new(@last).changes
84
+ end
85
+
86
+ def transport(changes)
87
+ Ftpeter::Transport.new(changes)
88
+ end
108
89
  end
109
90
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+ module Ftpeter
3
+ Connection = Struct.new(:host, :credentials, :dir, :commands)
4
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+ require 'pathname'
3
+
4
+ module Ftpeter
5
+ class Transport
6
+ class Lftp
7
+ attr_reader :script
8
+
9
+ def initialize(connection, changes)
10
+ @changes = changes
11
+ @lftp_script = []
12
+ @script = Pathname.new('./lftp_script').expand_path
13
+
14
+ @host = connection.host
15
+ @credentials = connection.credentials
16
+ @dir = connection.dir
17
+ @commands = connection.commands
18
+
19
+ prepare
20
+ end
21
+
22
+ def prepare
23
+ # lftp connection header
24
+ @lftp_script << "open #{@host}"
25
+ if @credentials
26
+ @lftp_script << "user #{@credentials['user']} #{@credentials['pass']}"
27
+ end
28
+ @lftp_script << "cd #{@dir}"
29
+
30
+ # lftp file commands
31
+ @lftp_script << @changes.deleted.map do |fn|
32
+ "rm #{fn}"
33
+ end
34
+ @lftp_script << @changes.newdirs.map do |fn|
35
+ "mkdir -p #{fn}"
36
+ end
37
+ @lftp_script << @changes.added.map do |fn|
38
+ "put #{fn} -o #{fn}"
39
+ end
40
+ @lftp_script << @changes.changed.map do |fn|
41
+ "put #{fn} -o #{fn}"
42
+ end
43
+ @lftp_script << @commands.split("\n").map do |cmd|
44
+ "!#{cmd}"
45
+ end if @commands
46
+ @lftp_script << '!echo ""'
47
+ @lftp_script << '!echo "Deployment complete"'
48
+
49
+ @lftp_script.flatten!.compact!
50
+
51
+ @lftp_script
52
+ end
53
+
54
+ def commands
55
+ @lftp_script
56
+ end
57
+
58
+ def inform
59
+ @lftp_script.join("\n")
60
+ end
61
+
62
+ def persist
63
+ script.open('w') do |f|
64
+ f << @lftp_script.flatten.join("\n")
65
+ f << "\n"
66
+ end
67
+ end
68
+
69
+ def execute
70
+ system("lftp -f #{script}")
71
+ end
72
+
73
+ def cleanup
74
+ script.delete
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ module Ftpeter
3
+ class Transport
4
+ class Unsupported < ArgumentError
5
+ def message
6
+ 'There is only lftp-support for now'
7
+ end
8
+ end
9
+
10
+ autoload :Lftp, 'ftpeter/transport/lftp'
11
+
12
+ def initialize(changes)
13
+ @changes = changes
14
+ end
15
+
16
+ def via(connection, uploader)
17
+ raise Unsupported unless uploader == :lftp
18
+
19
+ Ftpeter::Transport::Lftp.new(connection, @changes)
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Ftpeter
2
- VERSION = "0.1.0"
3
+ VERSION = '0.2.0'
3
4
  end
data/lib/ftpeter.rb CHANGED
@@ -1,9 +1,17 @@
1
- require "ftpeter/version"
2
- require "pathname"
1
+ # frozen_string_literal: true
2
+ # TODO: check if needed here (they shouldn't be)
3
+ require 'pathname'
3
4
 
4
- # TODO extract git-backend to detect changes
5
- # TODO extract lftp-backend to deploy files
6
- # TODO setup help and option-parsing
5
+ # TODO: setup help and option-parsing
7
6
  module Ftpeter
8
- autoload :CLI, "ftpeter/cli"
7
+ autoload :CLI, 'ftpeter/cli'
8
+ autoload :VERSION, 'ftpeter/version'
9
+
10
+ # value classes
11
+ autoload :Changes, 'ftpeter/changes'
12
+ autoload :Connection, 'ftpeter/connection'
13
+
14
+ # collection of plugable components
15
+ autoload :Transport, 'ftpeter/transport'
16
+ autoload :Backend, 'ftpeter/backend'
9
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ftpeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Viehweger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-01 00:00:00.000000000 Z
11
+ date: 2016-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,8 +52,37 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: Upload or delete files that have changed in git using lftp. lftp supports
56
- ftp, ftps, sftp and more.
55
+ - !ruby/object:Gem::Dependency
56
+ name: fakefs
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: |
84
+ Upload or delete files that have changed in git using lftp.
85
+ lftp supports ftp, ftps, sftp and more.
57
86
  email:
58
87
  - kronn@kronn.de
59
88
  executables:
@@ -63,8 +92,13 @@ extra_rdoc_files: []
63
92
  files:
64
93
  - ".gitignore"
65
94
  - ".rspec"
95
+ - ".rubocop.yml"
96
+ - ".rubocop_todo.yml"
97
+ - ".ruby-gemset"
98
+ - ".ruby-version"
66
99
  - ".travis.yml"
67
100
  - Gemfile
101
+ - Guardfile
68
102
  - README.md
69
103
  - Rakefile
70
104
  - bin/console
@@ -72,7 +106,13 @@ files:
72
106
  - exe/ftpeter
73
107
  - ftpeter.gemspec
74
108
  - lib/ftpeter.rb
109
+ - lib/ftpeter/backend.rb
110
+ - lib/ftpeter/backend/git.rb
111
+ - lib/ftpeter/changes.rb
75
112
  - lib/ftpeter/cli.rb
113
+ - lib/ftpeter/connection.rb
114
+ - lib/ftpeter/transport.rb
115
+ - lib/ftpeter/transport/lftp.rb
76
116
  - lib/ftpeter/version.rb
77
117
  homepage: https://git.lanpartei.de/kronn/ftpeter
78
118
  licenses:
@@ -94,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
134
  version: '0'
95
135
  requirements: []
96
136
  rubyforge_project:
97
- rubygems_version: 2.6.4
137
+ rubygems_version: 2.5.1
98
138
  signing_key:
99
139
  specification_version: 4
100
140
  summary: Deployments via FTP