tgfa-glynn 1.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/glynn +59 -0
- data/lib/glynn/file.rb +13 -0
- data/lib/glynn/ftp.rb +67 -0
- data/lib/glynn/jekyll.rb +18 -0
- data/lib/glynn/version.rb +3 -0
- data/lib/glynn.rb +6 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8820a08b0fa2b4b3883d99430f20e81a6411cad
|
4
|
+
data.tar.gz: fa61e4bbff8927aa2110caed2937f2860dd08c14
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c6316c26b9eee07f1a2820e11761e9dbb155e111adb5175028461d6363060503cec7c096e0e7c03ec4fae9fcbc747714ce2b015efe1e4744dfb8f4d0415d9121
|
7
|
+
data.tar.gz: b314028630fb32221c422aa42d538fc684e9258adcc27c334e12aee5442b35c0cb27cdd2cbfef98b40200a6262fd1104d9bdf6fc7068b0838c55dd310b7cf420
|
data/bin/glynn
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'jekyll'
|
4
|
+
require 'glynn'
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
6
|
+
|
7
|
+
|
8
|
+
options = {}
|
9
|
+
case ARGV.size
|
10
|
+
when 0
|
11
|
+
when 1
|
12
|
+
options['destination'] = ARGV[0]
|
13
|
+
when 2
|
14
|
+
options['source'] = ARGV[0]
|
15
|
+
options['destination'] = ARGV[1]
|
16
|
+
when 4
|
17
|
+
options['source'] = ARGV[0]
|
18
|
+
options['destination'] = ARGV[1]
|
19
|
+
options['ftp_username'] = ARGV[2]
|
20
|
+
options['ftp_password'] = ARGV[3]
|
21
|
+
end
|
22
|
+
options = Jekyll.configuration(options)
|
23
|
+
ftp_port = (options['ftp_port'] || 21).to_i
|
24
|
+
passive = options['ftp_passive'] || true
|
25
|
+
|
26
|
+
puts "Building site: #{options['source']} -> #{options['destination']}"
|
27
|
+
jekyll = Glynn::Jekyll.new
|
28
|
+
jekyll.build
|
29
|
+
puts "Successfully generated site"
|
30
|
+
|
31
|
+
puts "Sending site over FTP (host: #{options['ftp_host']}, port: #{ftp_port})"
|
32
|
+
begin
|
33
|
+
if options['ftp_username'].nil?
|
34
|
+
print "FTP Username: "
|
35
|
+
username = $stdin.gets.chomp
|
36
|
+
else
|
37
|
+
username = options['ftp_username']
|
38
|
+
end
|
39
|
+
|
40
|
+
if options['ftp_password'].nil?
|
41
|
+
print "FTP Password: "
|
42
|
+
# We hide the entered characters before to ask for the password
|
43
|
+
system "stty -echo"
|
44
|
+
password = $stdin.gets.chomp
|
45
|
+
system "stty echo"
|
46
|
+
else
|
47
|
+
password = options['ftp_password']
|
48
|
+
end
|
49
|
+
rescue NoMethodError, Interrupt
|
50
|
+
# When the process is exited, we display the characters again
|
51
|
+
# And we exit
|
52
|
+
system "stty echo"
|
53
|
+
exit
|
54
|
+
end
|
55
|
+
|
56
|
+
ftp = Glynn::Ftp.new(options['ftp_host'], ftp_port, {:username => username, :password => password, :passive => passive})
|
57
|
+
puts "\r\nConnected to server. Sending site"
|
58
|
+
ftp.sync(options['destination'], options['ftp_dir'])
|
59
|
+
puts "Successfully sent site"
|
data/lib/glynn/file.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Glynn
|
2
|
+
class File
|
3
|
+
|
4
|
+
def self.is_bin?(f)
|
5
|
+
file_test = %x(file #{f})
|
6
|
+
|
7
|
+
# http://stackoverflow.com/a/8873922
|
8
|
+
file_test = file_test.encode('UTF-16', 'UTF-8', :invalid => :replace, :replace => '').encode('UTF-8', 'UTF-16')
|
9
|
+
|
10
|
+
file_test !~ /text/
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/glynn/ftp.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
|
3
|
+
module Glynn
|
4
|
+
class Ftp
|
5
|
+
attr_reader :host, :port, :username, :password, :passive
|
6
|
+
|
7
|
+
def initialize(host, port = 21, options = Hash.new)
|
8
|
+
options = {:username => nil, :password => nil}.merge(options)
|
9
|
+
@host, @port = host, port
|
10
|
+
@username, @password = options[:username], options[:password]
|
11
|
+
@passive = options[:passive]
|
12
|
+
end
|
13
|
+
|
14
|
+
def sync(local, distant)
|
15
|
+
connect do |ftp|
|
16
|
+
send_dir(ftp, local, distant)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def connect
|
22
|
+
Net::FTP.open(host) do |ftp|
|
23
|
+
ftp.passive = @passive
|
24
|
+
ftp.connect(host, port)
|
25
|
+
ftp.login(username, password)
|
26
|
+
yield ftp
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def send_dir(ftp, local, distant)
|
31
|
+
begin
|
32
|
+
ftp.mkdir(distant)
|
33
|
+
rescue Net::FTPPermError
|
34
|
+
# We don't do anything. The directory already exists.
|
35
|
+
# TODO : this is also risen if we don't have write access. Then, we need to raise.
|
36
|
+
end
|
37
|
+
Dir.foreach(local) do |file_name|
|
38
|
+
# If the file/directory is hidden (first character is a dot), we ignore it
|
39
|
+
next if file_name =~ /^(\.|\.\.)$/
|
40
|
+
|
41
|
+
puts " -> " + file_name
|
42
|
+
if ::File.stat(local + "/" + file_name).directory?
|
43
|
+
# It is a directory, we recursively send it
|
44
|
+
begin
|
45
|
+
ftp.mkdir(distant + "/" + file_name)
|
46
|
+
rescue Net::FTPPermError
|
47
|
+
# We don't do anything. The directory already exists.
|
48
|
+
# TODO : this is also risen if we don't have write access. Then, we need to raise.
|
49
|
+
end
|
50
|
+
send_dir(ftp, local + "/" + file_name, distant + "/" + file_name)
|
51
|
+
else
|
52
|
+
# It's a file, we just send it
|
53
|
+
if Glynn::File.is_bin?(local + "/" + file_name)
|
54
|
+
ftp.putbinaryfile(local + "/" + file_name, distant + "/" + file_name)
|
55
|
+
else
|
56
|
+
ftp.puttextfile(local + "/" + file_name, distant + "/" + file_name)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
def host_with_port
|
64
|
+
"#{host}:#{port}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/glynn/jekyll.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
|
3
|
+
module Glynn
|
4
|
+
class Jekyll
|
5
|
+
attr_reader :site
|
6
|
+
|
7
|
+
def initialize(options = {})
|
8
|
+
@site = ::Jekyll::Site.new(::Jekyll.configuration(options))
|
9
|
+
end
|
10
|
+
|
11
|
+
#
|
12
|
+
# Builds the website in the ./_site directory.
|
13
|
+
#
|
14
|
+
def build
|
15
|
+
site.process
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/glynn.rb
ADDED
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tgfa-glynn
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.11
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- sugeng tigefa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jekyll
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.2.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.2.1
|
55
|
+
description: Deploy a jekyll weblog through ftp
|
56
|
+
email: sugeng@tigefa.org
|
57
|
+
executables:
|
58
|
+
- glynn
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- lib/glynn.rb
|
63
|
+
- lib/glynn/file.rb
|
64
|
+
- lib/glynn/ftp.rb
|
65
|
+
- lib/glynn/jekyll.rb
|
66
|
+
- lib/glynn/version.rb
|
67
|
+
- bin/glynn
|
68
|
+
homepage: https://github.com/tgfa/tgfa-glynn
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.0.2
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Deploy a jekyll weblog through ftp and ftps or sftp
|
92
|
+
test_files: []
|