dokkufy 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f74401947f66111ab2705285fc3aa7c503e260c0
4
- data.tar.gz: d7a081974f613589e716197da80c964fe5589651
3
+ metadata.gz: ceb50dc113332ec5b965ad73c745b0e7753f7e3d
4
+ data.tar.gz: 41047fe98e3d4f7d3c92f90ff6ec3029cd62e4c0
5
5
  SHA512:
6
- metadata.gz: b15b698b573abb9d3dcba4018dd1c699796841ed564aea9137d0190f92b28565e083e8dc8b59ba90fb128974e878a76939d8841cf42edb0b45ed2bd4453bb77a
7
- data.tar.gz: 434a8f9dcab71927465f32c6598f85cc1358c17a0d297668c8fee7d38efd241b0b34f10b3347dde76a41ce06c44eeb0a00d17f241bdf63b56225e6de757497d6
6
+ metadata.gz: 169e372670a094818b49d502f759144e7337df7bcd1a0816c1fb335f12d1f3df1cee2b2524b36ce0e1ce457141f2d1ed6b6a4ad5c47491dc5769e33691458eb3
7
+ data.tar.gz: de1cb36a4a7921b847334bb97c44ac2592a19a772725fd1b8dfd2ea7e20466b3a423c38830fa98ab306eb5f6358fc01402c10783fb9812010de6796c4c547a6d
data/Gemfile.lock CHANGED
@@ -1,8 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dokkufy (0.0.1)
4
+ dokkufy (0.0.3)
5
5
  commander
6
+ hpricot
7
+ terminal-table
6
8
 
7
9
  GEM
8
10
  remote: https://rubygems.org/
@@ -10,6 +12,8 @@ GEM
10
12
  commander (4.2.0)
11
13
  highline (~> 1.6.11)
12
14
  highline (1.6.21)
15
+ hpricot (0.8.6)
16
+ terminal-table (1.4.5)
13
17
 
14
18
  PLATFORMS
15
19
  ruby
data/README.md CHANGED
@@ -9,8 +9,8 @@ dokkufy <command>
9
9
  help shows this list
10
10
  server installs Dokku on a Ubuntu 12.04 or 14.04 server
11
11
  server:upgrade upgrades a Dokku server
12
- plugins shows a list of Dokku plugins
13
- plugins:install installs a plugin on the server
12
+ plugin shows a list of Dokku plugins
13
+ plugin:install installs a plugin on the server
14
14
  app adds a dokku remote for a server to an app
15
15
 
16
16
  dokku <command> runs dokku commands on the server attached to this app
data/bin/dokkufy CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'dokkufy'
3
3
  require 'commander'
4
+ require 'terminal-table'
4
5
 
5
6
  Commander.configure do
6
7
  program :name, 'Dokkufy'
@@ -9,7 +10,7 @@ Commander.configure do
9
10
  program :help, 'Author', 'Cristiano Betta <cbetta@gmail.com>'
10
11
 
11
12
  command :'server' do |c|
12
- c.syntax = 'dokkufy server <hostname> <username> <domain>'
13
+ c.syntax = 'dokkufy server [<hostname> <username> <domain>]'
13
14
  c.description = "Installs Dokku on a Ubuntu 12.04 or 14.04 server"
14
15
  c.option '--version', Float, 'Dokku version'
15
16
  c.action do |args, options|
@@ -26,5 +27,26 @@ Commander.configure do
26
27
  end
27
28
  end
28
29
 
30
+ command :'plugin:list' do |c|
31
+ c.syntax = 'dokkufy plugin:list'
32
+ c.description = "Lists known Dokku plugins"
33
+ c.option('--with-notes'){ $with_notes = true }
34
+ c.action do |args, options|
35
+ plugins = Dokkufy::Plugin.all($with_notes)
36
+ puts Terminal::Table.new rows: plugins, headings: ["ID", "Name", "Description"]
37
+ end
38
+ end
39
+
40
+ command :'plugin:install' do |c|
41
+ c.syntax = 'dokkufy plugin:install <plugin_name_or_id> [<hostname> <username>]'
42
+ c.description = "Installs a known Dokku plugin"
43
+ c.action do |args, options|
44
+ id_or_name = args[0] || ask('Plugin ID or Name: ')
45
+ hostname = args[1] || ask('Server hostname or IP: ')
46
+ username = args[2] || ask('Username on server: ')
47
+ Dokkufy::Plugin.new(hostname, username).install(id_or_name)
48
+ end
49
+ end
50
+
29
51
  default_command :help
30
52
  end
data/dokkufy.gemspec CHANGED
@@ -18,4 +18,6 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ["lib"]
19
19
 
20
20
  s.add_dependency 'commander'
21
+ s.add_dependency 'terminal-table'
22
+ s.add_dependency 'hpricot'
21
23
  end
data/lib/dokkufy/info.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dokkufy
2
- VERSION = "0.0.3" unless defined? Dokkufy::VERSION
3
- NAME = "dokkufy" unless defined? Dokkufy::NAME
2
+ VERSION = "0.0.4" unless defined? Dokkufy::VERSION
3
+ NAME = "dokkufy" unless defined? Dokkufy::NAME
4
4
  DESCRIPTION = "A Dokku toolchain" unless defined? Dokkufy::DESCRIPTION
5
5
  end
@@ -0,0 +1,50 @@
1
+ require 'open-uri'
2
+ require 'hpricot'
3
+
4
+ module Dokkufy
5
+ class Plugin
6
+
7
+ attr_accessor :hostname, :username, :id
8
+
9
+ def initialize hostname, username
10
+ self.hostname = hostname
11
+ self.username = username
12
+ end
13
+
14
+ def install id_or_name
15
+ self.id = id_or_name
16
+ Dokkufy::Server.new(hostname, username).install_plugin(id)
17
+ end
18
+
19
+ def self.all with_notes = false
20
+ open("https://github.com/progrium/dokku/wiki/Plugins") do |f|
21
+ hp = Hpricot(f)
22
+ plugins = hp.search("tbody:first tr td").each_slice(3)
23
+ return plugins.each_with_index.map do |plugin, index|
24
+ entry = [index+1,
25
+ plugin.first.children.first.attributes["href"].split("github.com/").last,
26
+ plugin.first.children.first.inner_text]
27
+ entry << plugin.last.inner_text if with_notes
28
+ entry
29
+ end
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def id=(id_or_name)
36
+ if id_or_name.to_i.to_s == id_or_name
37
+ Dokkufy::Plugin.all.each do |plugin|
38
+ if plugin[0] == id_or_name.to_i
39
+ @id = plugin[1]
40
+ return
41
+ end
42
+ end
43
+ else
44
+ @id = id_or_name
45
+ end
46
+ end
47
+
48
+
49
+ end
50
+ end
@@ -1,24 +1,24 @@
1
1
  module Dokkufy
2
2
  class Server
3
- attr_accessor :host, :username
3
+ attr_accessor :hostname, :username
4
4
 
5
- def initialize host, username
6
- self.host = host
5
+ def initialize hostname, username
6
+ self.hostname = hostname
7
7
  self.username = username
8
8
  end
9
9
 
10
10
  def setup_key
11
11
  user = `echo $USER`
12
- command = "cat ~/.ssh/id_rsa.pub | ssh #{username}@#{host} 'sudo sshcommand acl-add dokku #{user}'"
12
+ command = "cat ~/.ssh/id_rsa.pub | ssh #{username}@#{hostname} 'sudo sshcommand acl-add dokku #{user}'"
13
13
  system command
14
14
  end
15
15
 
16
16
  def method_missing(m, *args, &block)
17
17
  method_name = m.to_s
18
18
  filename = Dokkufy::Utils.script method_name
19
- server = "#{username}@#{host}"
19
+ server = "#{username}@#{hostname}"
20
20
  `scp #{filename} #{server}:`
21
- system("ssh -t -q #{server} 'OPTION=#{args.first} ./#{method_name}.sh'")
21
+ system("ssh -t #{server} 'OPTION=#{args.first} ./#{method_name}.sh'")
22
22
  `ssh -t -q #{server} 'rm #{method_name}.sh'`
23
23
  end
24
24
  end
data/lib/dokkufy.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "dokkufy/info"
2
2
  require "dokkufy/utils"
3
3
  require "dokkufy/server"
4
+ require "dokkufy/plugin"
4
5
 
5
6
  module Dokkufy
6
7
  end
@@ -0,0 +1,3 @@
1
+ cd /var/lib/dokku/plugins
2
+ sudo git clone https://github.com/$OPTION
3
+ sudo dokku plugins-install
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dokkufy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cristiano Betta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-02 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: terminal-table
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
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: hpricot
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description: A Dokku toolchain
28
56
  email:
29
57
  - cbetta@gmail.com
@@ -42,11 +70,13 @@ files:
42
70
  - dokkufy.gemspec
43
71
  - lib/dokkufy.rb
44
72
  - lib/dokkufy/info.rb
73
+ - lib/dokkufy/plugin.rb
45
74
  - lib/dokkufy/server.rb
46
75
  - lib/dokkufy/utils.rb
47
76
  - scripts/configure_vhost.sh
48
77
  - scripts/ensure_passwordless_sudo.sh
49
78
  - scripts/install_dokku.sh
79
+ - scripts/install_plugin.sh
50
80
  homepage: http://github.com/cbetta/dokkufy
51
81
  licenses:
52
82
  - MIT