appli 0.0.6 → 0.0.7
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.
- data/lib/appli/command.rb +30 -10
- data/lib/appli.rb +1 -4
- data/lib/commands/apps.rb +3 -5
- data/lib/commands/domains.rb +40 -0
- data/lib/commands/gems.rb +5 -5
- data/lib/commands/keys.rb +14 -0
- data/lib/commands/logs.rb +6 -0
- data/lib/commands/mysql.rb +1 -1
- data/lib/commands/ssh.rb +5 -0
- data/lib/commands/{system.rb → stats.rb} +0 -13
- metadata +7 -3
    
        data/lib/appli/command.rb
    CHANGED
    
    | @@ -47,16 +47,27 @@ module Appli | |
| 47 47 | 
             
                  end
         | 
| 48 48 | 
             
                end
         | 
| 49 49 |  | 
| 50 | 
            -
                def api_request(url, username, password, data = nil)
         | 
| 50 | 
            +
                def api_request(url, username, password, data = nil, method = nil)
         | 
| 51 51 | 
             
                  require 'uri'
         | 
| 52 52 | 
             
                  require 'net/http'
         | 
| 53 53 | 
             
                  require 'net/https'
         | 
| 54 54 | 
             
                  uri = URI.parse(url)
         | 
| 55 | 
            -
                   | 
| 56 | 
            -
             | 
| 55 | 
            +
                  
         | 
| 56 | 
            +
                  if method.nil?
         | 
| 57 | 
            +
                    method = (data ? :post : :get)
         | 
| 58 | 
            +
                  end
         | 
| 59 | 
            +
                        
         | 
| 60 | 
            +
                  req = case method
         | 
| 61 | 
            +
                  when :post
         | 
| 62 | 
            +
                    Net::HTTP::Post.new(uri.path)
         | 
| 63 | 
            +
                  when :delete
         | 
| 64 | 
            +
                    Net::HTTP::Delete.new(uri.path)
         | 
| 65 | 
            +
                  when :put
         | 
| 66 | 
            +
                    Net::HTTP::Put.new(uri.path)
         | 
| 57 67 | 
             
                  else
         | 
| 58 | 
            -
                     | 
| 68 | 
            +
                    Net::HTTP::Get.new(uri.path)
         | 
| 59 69 | 
             
                  end
         | 
| 70 | 
            +
             | 
| 60 71 | 
             
                  req.basic_auth(username, password)
         | 
| 61 72 | 
             
                  req.add_field("Accept", "application/json")
         | 
| 62 73 | 
             
                  req.add_field("Content-type", "application/json")
         | 
| @@ -65,7 +76,7 @@ module Appli | |
| 65 76 | 
             
                    res.use_ssl = true
         | 
| 66 77 | 
             
                    res.verify_mode = OpenSSL::SSL::VERIFY_NONE
         | 
| 67 78 | 
             
                  end
         | 
| 68 | 
            -
                  puts "Requesting '#{url}' on as #{ | 
| 79 | 
            +
                  puts "Requesting '#{url}' on as #{method.to_s.upcase}" if debug?
         | 
| 69 80 | 
             
                  res = res.request(req, data)
         | 
| 70 81 | 
             
                  case res
         | 
| 71 82 | 
             
                  when Net::HTTPSuccess
         | 
| @@ -93,12 +104,12 @@ module Appli | |
| 93 104 | 
             
                  JSON.parse(api(path))
         | 
| 94 105 | 
             
                end
         | 
| 95 106 |  | 
| 96 | 
            -
                def api(path, data = nil)
         | 
| 97 | 
            -
                  api_request("http://#{domain}/#{path}", git_config_variable(:username), git_config_variable(:apikey), data)
         | 
| 107 | 
            +
                def api(path, data = nil, method = nil)
         | 
| 108 | 
            +
                  api_request("http://#{domain}/#{path}", git_config_variable(:username), git_config_variable(:apikey), data, method)
         | 
| 98 109 | 
             
                end
         | 
| 99 110 |  | 
| 100 | 
            -
                def api_on_app(path, data = nil)
         | 
| 101 | 
            -
                  api("applications/#{@options[:application]}/#{path}", data)
         | 
| 111 | 
            +
                def api_on_app(path, data = nil, method = nil)
         | 
| 112 | 
            +
                  api("applications/#{@options[:application]}/#{path}", data, method)
         | 
| 102 113 | 
             
                end
         | 
| 103 114 |  | 
| 104 115 | 
             
                def domain
         | 
| @@ -114,11 +125,20 @@ module Appli | |
| 114 125 | 
             
                  puts "Executing: #{command}" if debug?
         | 
| 115 126 | 
             
                  `#{command}`
         | 
| 116 127 | 
             
                end
         | 
| 128 | 
            +
                
         | 
| 129 | 
            +
                def ssh_exec(command)
         | 
| 130 | 
            +
                  exec("ssh -p #{application['ssh_port']} app@#{host['name']} \"#{command}\"")
         | 
| 131 | 
            +
                end
         | 
| 117 132 |  | 
| 118 133 | 
             
                def error(command, exit_code = 1)
         | 
| 119 134 | 
             
                  $stderr.puts command
         | 
| 120 135 | 
             
                  Process.exit(exit_code)
         | 
| 121 136 | 
             
                end
         | 
| 122 | 
            -
             | 
| 137 | 
            +
                
         | 
| 138 | 
            +
                def display_errors
         | 
| 139 | 
            +
                  for key, value in JSON.parse(errors)
         | 
| 140 | 
            +
                    puts " * #{key.capitalize} #{value}"
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
                end
         | 
| 123 143 | 
             
              end
         | 
| 124 144 | 
             
            end
         | 
    
        data/lib/appli.rb
    CHANGED
    
    | @@ -14,7 +14,7 @@ module Appli | |
| 14 14 | 
             
              class NotConfiguredError < StandardError; end
         | 
| 15 15 | 
             
              class MustBeInRepositoryError < StandardError; end
         | 
| 16 16 |  | 
| 17 | 
            -
              VERSION = "0.0. | 
| 17 | 
            +
              VERSION = "0.0.7"
         | 
| 18 18 |  | 
| 19 19 | 
             
              def run(command, args = [])
         | 
| 20 20 | 
             
                load_commands
         | 
| @@ -173,6 +173,3 @@ Appli.usage "cb version" | |
| 173 173 | 
             
            Appli.command "version", :global => true do
         | 
| 174 174 | 
             
              puts "Appli Gem Version #{Appli::VERSION}"
         | 
| 175 175 | 
             
            end
         | 
| 176 | 
            -
             | 
| 177 | 
            -
            Appli.alias '-v', 'version'
         | 
| 178 | 
            -
            Appli.alias '-s', 'ssh'
         | 
    
        data/lib/commands/apps.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            desc 'Display a list of all applications which you have access to'
         | 
| 2 | 
            -
            usage "appli  | 
| 3 | 
            -
            command " | 
| 2 | 
            +
            usage "appli list"
         | 
| 3 | 
            +
            command "list", :global => true do
         | 
| 4 4 | 
             
              apps = get("applications")
         | 
| 5 5 |  | 
| 6 6 | 
             
              hash = [[:name, "Name", 30], [:identifier , "Identifier", 30], [:ssh_port, "SSH Port", 12], [:host, "Host", 30]]
         | 
| @@ -34,9 +34,7 @@ command "create", :global => true, :required_args => 1 do |identifier| | |
| 34 34 | 
             
              result = api('applications', {:application => {:identifier => identifier, :name => identifier}}.to_json)
         | 
| 35 35 | 
             
              if errors
         | 
| 36 36 | 
             
                puts "\nAn error occured while creating your application:"
         | 
| 37 | 
            -
                 | 
| 38 | 
            -
                  puts "  * #{e.join(' ')}"
         | 
| 39 | 
            -
                end
         | 
| 37 | 
            +
                display_errors
         | 
| 40 38 | 
             
                puts
         | 
| 41 39 | 
             
                Process.exit(1)
         | 
| 42 40 | 
             
              else
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            desc 'List all domains configured for this application'
         | 
| 2 | 
            +
            usage "appli [application] domains:list"
         | 
| 3 | 
            +
            command "domains:list" do 
         | 
| 4 | 
            +
              domains = JSON.parse(api_on_app("domains"))
         | 
| 5 | 
            +
              for domain in domains
         | 
| 6 | 
            +
                extra = ''
         | 
| 7 | 
            +
                extra = '(primary)' if domain['domain']['primary']
         | 
| 8 | 
            +
                extra = '(redirect)' if domain['domain']['redirect']
         | 
| 9 | 
            +
                puts " * #{domain['domain']['domain']} #{extra}"
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            desc "Add a new domain for this application"
         | 
| 14 | 
            +
            usage "appli [application] domains:add {domain} {options}"
         | 
| 15 | 
            +
            command "domains:add", :required_args => 1 do |name, options|
         | 
| 16 | 
            +
              options = "" if options.nil?
         | 
| 17 | 
            +
              if api_on_app("domains", {:domain => {:domain => name, :redirect => options.include?('redirect')}}.to_json)
         | 
| 18 | 
            +
                puts "Domain '#{name}' added successfully."
         | 
| 19 | 
            +
              else
         | 
| 20 | 
            +
                puts "An error occured while adding your domain:"
         | 
| 21 | 
            +
                display_errors
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            desc 'Remove a domain from this application'
         | 
| 26 | 
            +
            usage "appli [application] domains:remove {domain}"
         | 
| 27 | 
            +
            command "domains:remove", :required_args => 1 do |name|
         | 
| 28 | 
            +
              domains = JSON.parse(api_on_app('domains'))
         | 
| 29 | 
            +
              domain  = domains.select{|d| d['domain']['domain'] == name}.first
         | 
| 30 | 
            +
              if domain
         | 
| 31 | 
            +
                if api_on_app("domains/#{domain['domain']['id']}", nil, :delete)
         | 
| 32 | 
            +
                  puts "Domain ('#{name}') removed successfully"
         | 
| 33 | 
            +
                else
         | 
| 34 | 
            +
                  error "Domain could not be removed at this time."
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              else
         | 
| 37 | 
            +
                error "Domain ('#{name}') does not exist within this application"
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| 40 | 
            +
             | 
    
        data/lib/commands/gems.rb
    CHANGED
    
    | @@ -15,7 +15,7 @@ class FakeGemfile | |
| 15 15 | 
             
            end
         | 
| 16 16 |  | 
| 17 17 | 
             
            desc "Read in the specified Gemfile and install all the required gems on your application"
         | 
| 18 | 
            -
            usage "appli gems:import"
         | 
| 18 | 
            +
            usage "appli [application] gems:import {path to file}"
         | 
| 19 19 | 
             
            command "gems:import" do |file|
         | 
| 20 20 | 
             
              file_to_import = File.expand_path(file || 'Gemfile')
         | 
| 21 21 | 
             
              unless File.exist?(file_to_import)
         | 
| @@ -38,9 +38,9 @@ command "gems:import" do |file| | |
| 38 38 | 
             
              end
         | 
| 39 39 | 
             
            end
         | 
| 40 40 |  | 
| 41 | 
            -
            desc "Install the  | 
| 42 | 
            -
            usage "appli gems:install  | 
| 43 | 
            -
            command "gems:install" do |name, version|
         | 
| 41 | 
            +
            desc "Install the provided gem on your application's container"
         | 
| 42 | 
            +
            usage "appli [application] gems:install {gem name} {version]"
         | 
| 43 | 
            +
            command "gems:install", :required_args => 1 do |name, version|
         | 
| 44 44 | 
             
              puts "Installing #{name} (#{version || 'latest'})"
         | 
| 45 45 | 
             
              data = {:ruby_gem => {:name => name, :version => version || ''}}.to_json
         | 
| 46 46 | 
             
              if a = api_on_app("ruby_gems", data)
         | 
| @@ -51,7 +51,7 @@ command "gems:install" do |name, version| | |
| 51 51 | 
             
              end
         | 
| 52 52 | 
             
            end
         | 
| 53 53 |  | 
| 54 | 
            -
            desc "List all installed gems  | 
| 54 | 
            +
            desc "List all installed gems for your application"
         | 
| 55 55 | 
             
            usage "appli gems"
         | 
| 56 56 | 
             
            command "gems" do
         | 
| 57 57 | 
             
              ssh "gem list"
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            desc "Upload your local public key to your appli user account"
         | 
| 2 | 
            +
            usage "appli keys:add {key file}"
         | 
| 3 | 
            +
            command "keys:add", :global => true do |file|
         | 
| 4 | 
            +
              file = "#{ENV['HOME']}/.ssh/id_rsa.pub" if file.nil?
         | 
| 5 | 
            +
              error("Key file not found at '#{file}'") unless File.file?(file)
         | 
| 6 | 
            +
              key_data = File.read(file).chomp
         | 
| 7 | 
            +
              data = {:key => {:key => key_data}}.to_json
         | 
| 8 | 
            +
              if api("settings/keys", data)
         | 
| 9 | 
            +
                puts "SSH key uploaded successfully from '#{file}'"
         | 
| 10 | 
            +
              else
         | 
| 11 | 
            +
                puts "Sorry, an error occured while adding your key. Please check the errors below:"
         | 
| 12 | 
            +
                display_errors
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/lib/commands/mysql.rb
    CHANGED
    
    
    
        data/lib/commands/ssh.rb
    ADDED
    
    
| @@ -24,16 +24,3 @@ command "diskusage" do | |
| 24 24 | 
             
              puts "Your system is limited to #{size} however if you need additional"
         | 
| 25 25 | 
             
              puts "space, please just contact support."
         | 
| 26 26 | 
             
            end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
            desc "Display the current settings"
         | 
| 29 | 
            -
            command "settings", :global => true do
         | 
| 30 | 
            -
              puts "Username........: #{git_config_variable(:username) || 'unknown'}"
         | 
| 31 | 
            -
              puts "API Key.........: #{git_config_variable(:apikey) || 'unknown'}"
         | 
| 32 | 
            -
              puts "Domain..........: #{git_config_variable(:domain) || 'unknown'}"
         | 
| 33 | 
            -
            end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            desc 'SSH to the named server'
         | 
| 36 | 
            -
            usage "appli [application] ssh"
         | 
| 37 | 
            -
            command "ssh" do
         | 
| 38 | 
            -
              exec "ssh -p #{application['ssh_port']} app@#{host['name']}"
         | 
| 39 | 
            -
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: appli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Adam Cooke
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2010-02- | 
| 12 | 
            +
            date: 2010-02-19 00:00:00 +00:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -36,9 +36,13 @@ files: | |
| 36 36 | 
             
            - lib/appli.rb
         | 
| 37 37 | 
             
            - lib/commands/apps.rb
         | 
| 38 38 | 
             
            - lib/commands/cap.rb
         | 
| 39 | 
            +
            - lib/commands/domains.rb
         | 
| 39 40 | 
             
            - lib/commands/gems.rb
         | 
| 41 | 
            +
            - lib/commands/keys.rb
         | 
| 42 | 
            +
            - lib/commands/logs.rb
         | 
| 40 43 | 
             
            - lib/commands/mysql.rb
         | 
| 41 | 
            -
            - lib/commands/ | 
| 44 | 
            +
            - lib/commands/ssh.rb
         | 
| 45 | 
            +
            - lib/commands/stats.rb
         | 
| 42 46 | 
             
            has_rdoc: true
         | 
| 43 47 | 
             
            homepage: http://www.atechmedia.com
         | 
| 44 48 | 
             
            licenses: []
         |