apiaryio 0.0.1
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/README.md +14 -0
- data/bin/apiary +14 -0
- data/lib/apiary/cli.rb +12 -0
- data/lib/apiary/cmd.rb +63 -0
- data/lib/apiary/commands/base.rb +41 -0
- data/lib/apiary/commands/preview.rb +27 -0
- data/lib/apiary/version.rb +3 -0
- data/lib/apiary.rb +2 -0
- metadata +86 -0
data/README.md
ADDED
data/bin/apiary
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
begin
|
5
|
+
require "pathname"
|
6
|
+
bin_file = Pathname.new(__FILE__).realpath
|
7
|
+
|
8
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
9
|
+
|
10
|
+
require "apiary/cli"
|
11
|
+
Apiary::CLI.start(*ARGV)
|
12
|
+
rescue Interrupt
|
13
|
+
puts("\n Cancelled.")
|
14
|
+
end
|
data/lib/apiary/cli.rb
ADDED
data/lib/apiary/cmd.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Base skeleton taken from Heroku base command,
|
2
|
+
# https://github.com/heroku/heroku/blob/master/lib/heroku/command.rb
|
3
|
+
# (c) Heroku and contributors
|
4
|
+
|
5
|
+
module Apiary
|
6
|
+
module Command
|
7
|
+
class CommandFailed < RuntimeError; end
|
8
|
+
|
9
|
+
def self.commands
|
10
|
+
@@commands ||= {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.command_aliases
|
14
|
+
@@command_aliases ||= {}
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.load
|
18
|
+
Dir[File.join(File.dirname(__FILE__), "commands", "*.rb")].each do |file|
|
19
|
+
require file
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.parse(cmd)
|
24
|
+
commands[cmd] || commands[command_aliases[cmd]]
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.prepare_run(cmd, args=[])
|
28
|
+
command = parse(cmd)
|
29
|
+
|
30
|
+
unless command
|
31
|
+
if %w( -v --version ).include?(cmd)
|
32
|
+
command = parse('version')
|
33
|
+
else
|
34
|
+
error([
|
35
|
+
"`#{cmd}` is not an apiary command.",
|
36
|
+
].compact.join("\n"))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# add args, opts
|
41
|
+
[ command[:klass].new(), command[:method] ]
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.register_command(command)
|
45
|
+
commands[command[:command]] = command
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def self.run(cmd, arguments=[])
|
50
|
+
object, method = prepare_run(cmd, arguments.dup)
|
51
|
+
object.send(method)
|
52
|
+
rescue CommandFailed => e
|
53
|
+
error e.message
|
54
|
+
rescue OptionParser::ParseError
|
55
|
+
commands[cmd] ? run("help", [cmd]) : run("help")
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.error(message)
|
59
|
+
$stderr.puts(message)
|
60
|
+
exit(1)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Apiary::Command::Base
|
2
|
+
|
3
|
+
attr_reader :args
|
4
|
+
attr_reader :options
|
5
|
+
|
6
|
+
def initialize(args=[], options={})
|
7
|
+
@args = args
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.namespace
|
12
|
+
self.to_s.split("::").last.downcase
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :args
|
16
|
+
attr_reader :options
|
17
|
+
|
18
|
+
def self.method_added(method)
|
19
|
+
return if self == Apiary::Command::Base
|
20
|
+
return if private_method_defined?(method)
|
21
|
+
return if protected_method_defined?(method)
|
22
|
+
|
23
|
+
# help = extract_help_from_caller(caller.first)
|
24
|
+
resolved_method = (method.to_s == "index") ? nil : method.to_s
|
25
|
+
command = [ self.namespace, resolved_method ].compact.join(":")
|
26
|
+
# banner = extract_banner(help) || command
|
27
|
+
|
28
|
+
Apiary::Command.register_command(
|
29
|
+
:klass => self,
|
30
|
+
:method => method,
|
31
|
+
:namespace => self.namespace,
|
32
|
+
:command => command
|
33
|
+
# :banner => banner.strip,
|
34
|
+
# :help => help.join("\n"),
|
35
|
+
# :summary => extract_summary(help),
|
36
|
+
# :description => extract_description(help),
|
37
|
+
# :options => extract_options(help)
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "apiary/commands/base"
|
2
|
+
|
3
|
+
# Display preview of local blueprint file
|
4
|
+
#
|
5
|
+
class Apiary::Command::Preview < Apiary::Command::Base
|
6
|
+
|
7
|
+
# preview
|
8
|
+
#
|
9
|
+
# Launch web browser and display preview of local blueprint file
|
10
|
+
#
|
11
|
+
def index
|
12
|
+
|
13
|
+
api_server = ENV['APIARY_API_HOST'] || "api.apiary.io"
|
14
|
+
require 'launchy'
|
15
|
+
require 'rest_client'
|
16
|
+
|
17
|
+
headers = {:accept => "text/html",:content_type => "text/plain"}
|
18
|
+
response = RestClient.post "https://#{api_server}/blueprint/generate", IO.read('apiary.apib'), headers
|
19
|
+
|
20
|
+
aFile = File.new("/tmp/apiarypreview.html", "w")
|
21
|
+
aFile.write(response)
|
22
|
+
aFile.close
|
23
|
+
|
24
|
+
Launchy.open("file:///tmp/apiarypreview.html")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/lib/apiary.rb
ADDED
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: apiaryio
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Apiary Ltd.
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rest-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.6.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.6.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: launchy
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.3.2
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.3.2
|
46
|
+
description: Apiary.io API client
|
47
|
+
email: team@apiary.io
|
48
|
+
executables:
|
49
|
+
- apiary
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- README.md
|
54
|
+
- bin/apiary
|
55
|
+
- lib/apiary.rb
|
56
|
+
- lib/apiary/cli.rb
|
57
|
+
- lib/apiary/cmd.rb
|
58
|
+
- lib/apiary/commands/base.rb
|
59
|
+
- lib/apiary/commands/preview.rb
|
60
|
+
- lib/apiary/version.rb
|
61
|
+
homepage: http://apiary.io/
|
62
|
+
licenses:
|
63
|
+
- MIT
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.8.24
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Apiary.io API client
|
86
|
+
test_files: []
|