mesmerize 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -0
- data/Gemfile.lock +31 -0
- data/README.md +13 -0
- data/Rakefile +11 -0
- data/bin/mesmerize +17 -0
- data/lib/mesmerize.rb +8 -0
- data/lib/mesmerize/agvtool.rb +17 -0
- data/lib/mesmerize/authentication.rb +41 -0
- data/lib/mesmerize/client.rb +89 -0
- data/lib/mesmerize/commands.rb +7 -0
- data/lib/mesmerize/commands/create.rb +19 -0
- data/lib/mesmerize/commands/login.rb +26 -0
- data/lib/mesmerize/commands/logout.rb +18 -0
- data/lib/mesmerize/commands/release.rb +131 -0
- data/lib/mesmerize/commands/signup.rb +25 -0
- data/lib/mesmerize/xcodebuildinfo.rb +34 -0
- data/mesmerize.gemspec +27 -0
- metadata +134 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
mesmerize (0.0.1)
|
5
|
+
commander (~> 4.1.2)
|
6
|
+
faraday (~> 0.8.0)
|
7
|
+
faraday_middleware (~> 0.8.7)
|
8
|
+
netrc (~> 0.7.2)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
commander (4.1.2)
|
14
|
+
highline (~> 1.6.11)
|
15
|
+
faraday (0.8.1)
|
16
|
+
multipart-post (~> 1.1)
|
17
|
+
faraday_middleware (0.8.7)
|
18
|
+
faraday (>= 0.7.4, < 0.9)
|
19
|
+
highline (1.6.12)
|
20
|
+
multipart-post (1.1.5)
|
21
|
+
netrc (0.7.2)
|
22
|
+
rake (0.9.2.2)
|
23
|
+
rspec (0.6.4)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
mesmerize!
|
30
|
+
rake (~> 0.9.2)
|
31
|
+
rspec (~> 0.6.1)
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require "bundler"
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
gemspec = eval(File.read("mesmerize.gemspec"))
|
5
|
+
|
6
|
+
task :build => "#{gemspec.full_name}.gem"
|
7
|
+
|
8
|
+
file "#{gemspec.full_name}.gem" => gemspec.files + ["mesmerize.gemspec"] do
|
9
|
+
system "gem build mesmerize.gemspec"
|
10
|
+
system "gem install mesmerize-#{Mesmerize::VERSION}.gem"
|
11
|
+
end
|
data/bin/mesmerize
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'commander/import'
|
4
|
+
|
5
|
+
$:.push File.expand_path("../../lib", __FILE__)
|
6
|
+
require 'mesmerize'
|
7
|
+
require 'mesmerize/commands'
|
8
|
+
|
9
|
+
program :version, Mesmerize::VERSION
|
10
|
+
program :description, 'A command-line interface for Mesmerize'
|
11
|
+
|
12
|
+
program :help, 'Author', 'Mattt Thompson <m@mattt.me>'
|
13
|
+
program :help, 'Website', 'http://mesmerizeapp.com'
|
14
|
+
program :help_formatter, :compact
|
15
|
+
|
16
|
+
global_option '--verbose'
|
17
|
+
default_command :help
|
data/lib/mesmerize.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Mesmerize::Agvtool
|
2
|
+
class << self
|
3
|
+
def what_version
|
4
|
+
output = `agvtool what-version -terse`
|
5
|
+
output.length > 0 ? output : nil
|
6
|
+
end
|
7
|
+
|
8
|
+
alias :vers :what_version
|
9
|
+
|
10
|
+
def what_marketing_version
|
11
|
+
output = `agvtool what-marketing-version -terse`
|
12
|
+
output.scan(/\=(.+)$/).flatten.first
|
13
|
+
end
|
14
|
+
|
15
|
+
alias :mvers :what_marketing_version
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'netrc'
|
2
|
+
|
3
|
+
module Mesmerize
|
4
|
+
module Authentication
|
5
|
+
def credentials
|
6
|
+
Netrc.read[Mesmerize::Client::HOSTNAME]
|
7
|
+
end
|
8
|
+
|
9
|
+
def login!(user, pass)
|
10
|
+
raise unless user and pass
|
11
|
+
netrc = Netrc.read
|
12
|
+
netrc[Mesmerize::Client::HOSTNAME] = user, pass
|
13
|
+
netrc.save
|
14
|
+
end
|
15
|
+
|
16
|
+
def logout!
|
17
|
+
p netrc = Netrc.read
|
18
|
+
p netrc.delete(Mesmerize::Client::HOSTNAME)
|
19
|
+
netrc.save
|
20
|
+
end
|
21
|
+
|
22
|
+
def client
|
23
|
+
username, password = credentials
|
24
|
+
@client ||= Mesmerize::Client.new(password)
|
25
|
+
end
|
26
|
+
|
27
|
+
def authenticated?
|
28
|
+
!!credentials
|
29
|
+
end
|
30
|
+
|
31
|
+
def warn_if_currently_authenticated!
|
32
|
+
if authenticated?
|
33
|
+
say_warning "You are already authenticated."
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def require_authorization!
|
38
|
+
abort "Authentication required. Please do `mesmerize login` first" unless authenticated?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
require 'faraday'
|
3
|
+
require 'faraday_middleware'
|
4
|
+
|
5
|
+
module Mesmerize
|
6
|
+
class Client
|
7
|
+
HOSTNAME = 'mesmerizeapp.com'
|
8
|
+
# HOSTNAME = 'localhost:5000'
|
9
|
+
|
10
|
+
|
11
|
+
def initialize(api_key = nil)
|
12
|
+
@connection = Faraday.new(:url => "http://#{HOSTNAME}") do |builder|
|
13
|
+
builder.request :multipart
|
14
|
+
builder.request :url_encoded
|
15
|
+
builder.use FaradayMiddleware::FollowRedirects
|
16
|
+
|
17
|
+
builder.response :json, :content_type => /\bjson$/
|
18
|
+
|
19
|
+
builder.adapter :net_http
|
20
|
+
end
|
21
|
+
|
22
|
+
@connection.headers['X-Mesmerize-API-Key'] = api_key if api_key
|
23
|
+
end
|
24
|
+
|
25
|
+
def post_session(email, password)
|
26
|
+
params = {
|
27
|
+
email: email,
|
28
|
+
password: password
|
29
|
+
}
|
30
|
+
|
31
|
+
@connection.post("/api/sessions", params).on_complete do |env|
|
32
|
+
yield env[:status], env[:body] if block_given?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def post_account(name, email, password)
|
37
|
+
params = {
|
38
|
+
name: name,
|
39
|
+
email: email,
|
40
|
+
password: password
|
41
|
+
}
|
42
|
+
|
43
|
+
@connection.post("/api/accounts", params).on_complete do |env|
|
44
|
+
yield env[:status], env[:body] if block_given?
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_apps
|
49
|
+
@connection.get("/api/accounts").on_complete do |env|
|
50
|
+
yield env[:status], env[:body] if block_given?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_app(app)
|
55
|
+
@connection.get("/api/apps/#{app}").on_complete do |env|
|
56
|
+
yield env[:status], env[:body] if block_given?
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def post_app(app)
|
61
|
+
params = {
|
62
|
+
name: app
|
63
|
+
}
|
64
|
+
|
65
|
+
@connection.post("/api/apps", params).on_complete do |env|
|
66
|
+
yield env[:status], env[:body] if block_given?
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def post_release(app, release, file)
|
71
|
+
params = {
|
72
|
+
version: release.to_s
|
73
|
+
}
|
74
|
+
|
75
|
+
@connection.post("/api/apps/#{app}/releases", params).on_complete do |env|
|
76
|
+
if (200...300).include? env[:status]
|
77
|
+
params = env[:body]["params"]
|
78
|
+
params[:file] = Faraday::UploadIO.new(file, 'application/octet-stream')
|
79
|
+
|
80
|
+
response = @connection.post(env[:body]["url"], params)
|
81
|
+
|
82
|
+
yield response[:status], response[:body] if block_given?
|
83
|
+
else
|
84
|
+
yield env[:status], env[:body] if block_given?
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
command :create do |c|
|
2
|
+
c.syntax = 'mesmerize create APP_NAME [options]'
|
3
|
+
c.summary = 'Create a new app'
|
4
|
+
c.description = ''
|
5
|
+
|
6
|
+
c.action do |args, options|
|
7
|
+
if @app = args[0]
|
8
|
+
client.post_app(@app) do |status, body|
|
9
|
+
if (200...300).include?(status)
|
10
|
+
say_ok "Successfully created app, #{@app}"
|
11
|
+
else
|
12
|
+
say_error "Unable to create app: #{body}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
else
|
16
|
+
say_error "Missing argument: App Name"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
command :login do |c|
|
2
|
+
c.syntax = 'mesmerize login'
|
3
|
+
c.summary = 'Get account credentials'
|
4
|
+
c.description = ''
|
5
|
+
|
6
|
+
c.action do |args, options|
|
7
|
+
warn_if_currently_authenticated!
|
8
|
+
|
9
|
+
say "Enter your Mesmerize Credentials"
|
10
|
+
@email = ask "Email:"
|
11
|
+
@password = password "Password (typing will be hidden):"
|
12
|
+
|
13
|
+
client.post_session(@email, @password) do |status, body|
|
14
|
+
if (200...300).include?(status)
|
15
|
+
say_ok "Successfully logged in"
|
16
|
+
login!(body["email"], body["api_key"])
|
17
|
+
else
|
18
|
+
say_error "Could not log you in. Please check that you are entering the correct e-mail and password."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# [:signin, :'sign-in', :'authenticate'].each do |command|
|
25
|
+
# alias_command command, :login
|
26
|
+
# end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
command :logout do |c|
|
2
|
+
c.syntax = 'mesmerize logout'
|
3
|
+
c.summary = 'Clear your account credentials'
|
4
|
+
c.description = ''
|
5
|
+
|
6
|
+
c.action do |args, options|
|
7
|
+
if current_user
|
8
|
+
logout!
|
9
|
+
say_ok "You have logged out successfully"
|
10
|
+
else
|
11
|
+
say_warning "You are not current logged in"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# [:signout, :'sign-out'].each do |command|
|
17
|
+
# alias_command command, :logout
|
18
|
+
# end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
command :release do |c|
|
2
|
+
c.syntax = 'mesmerize release [VERSION] [options]'
|
3
|
+
c.summary = 'Release a new build of your app'
|
4
|
+
c.description = ''
|
5
|
+
|
6
|
+
c.example 'description', 'mesmerize release 478 --tag 3.7.2 --scheme MyApp+Sparkle'
|
7
|
+
c.option '-a', '--app APP', 'Name of App'
|
8
|
+
c.option '-t', '--tag TAG', 'Marketing Version Number (e.g. 3.7.2)'
|
9
|
+
c.option '-w', '--workspace WORKSPACE', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'
|
10
|
+
c.option '-p', '--project PROJECT', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory, overridden by --workspace option, if passed)'
|
11
|
+
c.option '-s', '--scheme SCHEME', 'Scheme used to build app'
|
12
|
+
|
13
|
+
c.action do |args, options|
|
14
|
+
require_authorization!
|
15
|
+
|
16
|
+
begin
|
17
|
+
@info = Mesmerize::XcodeBuildInfo.info
|
18
|
+
|
19
|
+
@appName = options.app || @info.project
|
20
|
+
@version = args.shift.to_i
|
21
|
+
@tag = options.tag
|
22
|
+
@workspace = options.workspace
|
23
|
+
@project = options.project
|
24
|
+
@scheme = options.scheme
|
25
|
+
|
26
|
+
@appSlug = @appName.strip.gsub(/\s+/, '-')
|
27
|
+
|
28
|
+
say "Found project \"#{@appName}\"."
|
29
|
+
say "Looking up current release information..."
|
30
|
+
|
31
|
+
response = client.get_app(@appSlug)
|
32
|
+
if response.status == 404
|
33
|
+
say_error "Could not find listing for #{@appName}." and say_error "Do `mesmerize create #{@appName}` first." and abort
|
34
|
+
end
|
35
|
+
|
36
|
+
@app = response.body
|
37
|
+
if @version.nonzero?
|
38
|
+
if @version <= @app["version"].to_i
|
39
|
+
say_error "Specified release (#{@version}) must be greater than current release (#{@app["version"]})" and abort
|
40
|
+
end
|
41
|
+
else
|
42
|
+
if @app["version"]
|
43
|
+
@version = @app["version"] + 1
|
44
|
+
say_warning "Bumping release to version #{@version}"
|
45
|
+
elsif Mesmerize::Agvtool.vers
|
46
|
+
@version = Mesmerize::Agvtool.vers + 1
|
47
|
+
say_warning "Bumping release to version #{@version}"
|
48
|
+
else
|
49
|
+
say_error "Specify a release version" and abort
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
unless @workspace || @project
|
54
|
+
workspaces, projects = Dir["*.xcworkspace"], Dir["*.xcodeproj"]
|
55
|
+
abort "No Xcode projects or workspaces found in current directory" if workspaces.empty? && projects.empty?
|
56
|
+
|
57
|
+
case workspaces.length
|
58
|
+
when 0
|
59
|
+
case projects.length
|
60
|
+
when 0
|
61
|
+
abort "No Xcode projects or workspaces found in current directory"
|
62
|
+
when 1
|
63
|
+
@project = projects.first
|
64
|
+
else
|
65
|
+
@project = choose "Select a project:", *projects
|
66
|
+
end
|
67
|
+
when 1
|
68
|
+
@workspace = workspaces.first
|
69
|
+
else
|
70
|
+
@workspace = choose "Select a workspace:", *workspaces
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
if @scheme and not @info.schemes.include?(@scheme)
|
75
|
+
abort "Scheme #{@scheme} not found"
|
76
|
+
end
|
77
|
+
|
78
|
+
if @scheme.nil?
|
79
|
+
@scheme = choose "Select a scheme:", *@info.schemes
|
80
|
+
end
|
81
|
+
|
82
|
+
ENV['CC'] = nil # Fix for rvm
|
83
|
+
|
84
|
+
puts
|
85
|
+
say "Building \"#{@workspace || @project}\" version #{@version} with scheme \"#{@scheme}\"\n"
|
86
|
+
|
87
|
+
log "agvtool", "new-version"
|
88
|
+
`agvtool -noscm new-version -all #{@version}`
|
89
|
+
|
90
|
+
if @tag
|
91
|
+
log "agvtool", "new-marketing-version"
|
92
|
+
`agvtool -noscm new-marketing-version #{@tag}`
|
93
|
+
end
|
94
|
+
|
95
|
+
[:clean, :build, :archive, :install].each do |action|
|
96
|
+
log "xcodebuild", action
|
97
|
+
|
98
|
+
options = []
|
99
|
+
options << "-workspace '#{@workspace}'" if @workspace
|
100
|
+
options << "-project '#{@project}'" if @project
|
101
|
+
options << "-scheme '#{@scheme}'" if @scheme
|
102
|
+
|
103
|
+
`xcodebuild #{options.join(" ")} -sdk macosx DSTROOT='./.mesmerize' #{action}`# 1> /dev/null 2> /dev/null`
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
@filename = "#{@app['name']}-#{@version}.zip"
|
108
|
+
`pushd .mesmerize/Applications; zip -r #{@filename} #{@app['name']}.app; popd`
|
109
|
+
|
110
|
+
@file = ".mesmerize/Applications/" + @filename
|
111
|
+
|
112
|
+
log "upload", @filename
|
113
|
+
|
114
|
+
client.post_release(@appSlug, @version, @file) do |status, body|
|
115
|
+
if (200...300).include?(status) || status.nil?
|
116
|
+
say_ok "Successfully created release, #{@app['name']} r#{@version}"
|
117
|
+
else
|
118
|
+
abort "Unable to create release"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
rescue Mesmerize::XcodeBuildInfo::NilOutputError
|
122
|
+
say_error "Current directory does not seem to contain valid project or workspace" and abort
|
123
|
+
rescue Mesmerize::XcodeBuildInfo::Error => e
|
124
|
+
say_error "Xcode Build Error: #{e}" and abort
|
125
|
+
rescue => e
|
126
|
+
say_error "Error: #{e}" and abort
|
127
|
+
ensure
|
128
|
+
`rm -rf .mesmerize`
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
command :signup do |c|
|
2
|
+
c.syntax = 'mesmerize signup'
|
3
|
+
c.summary = 'Create a new account'
|
4
|
+
c.description = ''
|
5
|
+
c.example 'description', 'command example'
|
6
|
+
|
7
|
+
c.action do |args, options|
|
8
|
+
warn_if_currently_authenticated!
|
9
|
+
|
10
|
+
say "Enter your Mesmerize Credentials"
|
11
|
+
@name = ask "Name:"
|
12
|
+
@email = ask "Email:"
|
13
|
+
@password = password "Password (typing will be hidden):"
|
14
|
+
|
15
|
+
client.post_account(@name, @email, @password) do |status, body|
|
16
|
+
if (200...300).include?(status)
|
17
|
+
say_ok "Successfully logged in"
|
18
|
+
config.reset!
|
19
|
+
config.update(body)
|
20
|
+
else
|
21
|
+
say_error "Could not create an account. Please contact support@mesmerizeapp.com if this problem continues."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Mesmerize::XcodeBuildInfo
|
4
|
+
class Info < OpenStruct; end
|
5
|
+
|
6
|
+
class Error < StandardError; end
|
7
|
+
class NilOutputError < Error; end
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def info
|
11
|
+
output = `xcodebuild -list 2> /dev/null`
|
12
|
+
raise Error.new $1 if /^xcodebuild\: error\: (.+)$/ === output
|
13
|
+
raise NilOutputError unless /\S/ === output
|
14
|
+
|
15
|
+
lines = output.split(/\n/)
|
16
|
+
hash = {project: lines.shift.match(/\"(.+)\"\:/)[1]}
|
17
|
+
group = nil
|
18
|
+
|
19
|
+
lines.each do |line|
|
20
|
+
if /\:$/ === line
|
21
|
+
group = line.strip[0...-1].downcase.gsub(/\s+/, '-')
|
22
|
+
hash[group] = []
|
23
|
+
next
|
24
|
+
end
|
25
|
+
|
26
|
+
unless group.nil? or /\.$/ === line
|
27
|
+
hash[group] << line.strip
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Info.new(hash)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/mesmerize.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "mesmerize"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "mesmerize"
|
7
|
+
s.authors = ["Mattt Thompson"]
|
8
|
+
s.email = "m@mattt.me"
|
9
|
+
s.homepage = "http://mesmerizeapp.com"
|
10
|
+
s.version = Mesmerize::VERSION
|
11
|
+
s.platform = Gem::Platform::RUBY
|
12
|
+
s.summary = "Mesmerize CLI"
|
13
|
+
s.description = "Command-Line Interface for Mesmerize"
|
14
|
+
|
15
|
+
s.add_development_dependency "rspec", "~> 0.6.1"
|
16
|
+
s.add_development_dependency "rake", "~> 0.9.2"
|
17
|
+
|
18
|
+
s.add_dependency "commander", "~> 4.1.2"
|
19
|
+
s.add_dependency "faraday", "~> 0.8.0"
|
20
|
+
s.add_dependency "faraday_middleware", "~> 0.8.7"
|
21
|
+
s.add_dependency "netrc", "~> 0.7.2"
|
22
|
+
|
23
|
+
s.files = Dir["./**/*"].reject { |file| file =~ /\.\/(bin|log|pkg|script|spec|test|vendor)/ }
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mesmerize
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Mattt Thompson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-01 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70309173732500 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.1
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70309173732500
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &70309173718220 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.2
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70309173718220
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: commander
|
38
|
+
requirement: &70309173717180 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 4.1.2
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70309173717180
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: faraday
|
49
|
+
requirement: &70309173715980 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.0
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70309173715980
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: faraday_middleware
|
60
|
+
requirement: &70309173714900 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.8.7
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70309173714900
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: netrc
|
71
|
+
requirement: &70309173713820 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.7.2
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70309173713820
|
80
|
+
description: Command-Line Interface for Mesmerize
|
81
|
+
email: m@mattt.me
|
82
|
+
executables:
|
83
|
+
- mesmerize
|
84
|
+
extensions: []
|
85
|
+
extra_rdoc_files: []
|
86
|
+
files:
|
87
|
+
- ./Gemfile
|
88
|
+
- ./Gemfile.lock
|
89
|
+
- ./lib/mesmerize/agvtool.rb
|
90
|
+
- ./lib/mesmerize/authentication.rb
|
91
|
+
- ./lib/mesmerize/client.rb
|
92
|
+
- ./lib/mesmerize/commands/create.rb
|
93
|
+
- ./lib/mesmerize/commands/login.rb
|
94
|
+
- ./lib/mesmerize/commands/logout.rb
|
95
|
+
- ./lib/mesmerize/commands/release.rb
|
96
|
+
- ./lib/mesmerize/commands/signup.rb
|
97
|
+
- ./lib/mesmerize/commands.rb
|
98
|
+
- ./lib/mesmerize/xcodebuildinfo.rb
|
99
|
+
- ./lib/mesmerize.rb
|
100
|
+
- ./mesmerize.gemspec
|
101
|
+
- ./Rakefile
|
102
|
+
- ./README.md
|
103
|
+
- bin/mesmerize
|
104
|
+
homepage: http://mesmerizeapp.com
|
105
|
+
licenses: []
|
106
|
+
post_install_message:
|
107
|
+
rdoc_options: []
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
hash: -2006340050113562150
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
hash: -2006340050113562150
|
128
|
+
requirements: []
|
129
|
+
rubyforge_project:
|
130
|
+
rubygems_version: 1.8.15
|
131
|
+
signing_key:
|
132
|
+
specification_version: 3
|
133
|
+
summary: Mesmerize CLI
|
134
|
+
test_files: []
|