mesmerize 0.0.6 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/bin/mesmerize +4 -3
- data/lib/mesmerize/client.rb +1 -5
- data/lib/mesmerize/commands/build.rb +86 -0
- data/lib/mesmerize/commands/release.rb +104 -86
- data/lib/mesmerize/commands.rb +2 -1
- data/lib/mesmerize/xcodebuildinfo.rb +11 -6
- data/lib/mesmerize.rb +1 -1
- metadata +19 -18
data/Gemfile.lock
CHANGED
data/bin/mesmerize
CHANGED
@@ -4,7 +4,6 @@ require 'commander/import'
|
|
4
4
|
|
5
5
|
$:.push File.expand_path("../../lib", __FILE__)
|
6
6
|
require 'mesmerize'
|
7
|
-
require 'mesmerize/commands'
|
8
7
|
|
9
8
|
HighLine.track_eof = false # Fix for built-in Ruby
|
10
9
|
|
@@ -12,8 +11,10 @@ program :version, Mesmerize::VERSION
|
|
12
11
|
program :description, 'A command-line interface for Mesmerize'
|
13
12
|
|
14
13
|
program :help, 'Author', 'Mattt Thompson <m@mattt.me>'
|
15
|
-
program :help, 'Website', '
|
14
|
+
program :help, 'Website', 'https://mesmerizeapp.com'
|
16
15
|
program :help_formatter, :compact
|
17
16
|
|
18
|
-
global_option '--verbose'
|
17
|
+
# global_option '--verbose'
|
19
18
|
default_command :help
|
19
|
+
|
20
|
+
require 'mesmerize/commands'
|
data/lib/mesmerize/client.rb
CHANGED
@@ -66,11 +66,7 @@ module Mesmerize
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def post_release(app,
|
70
|
-
params = {
|
71
|
-
:version => release.to_s
|
72
|
-
}
|
73
|
-
|
69
|
+
def post_release(app, params, file)
|
74
70
|
@connection.post("/api/apps/#{app}/releases", params).on_complete do |env|
|
75
71
|
if (200...300).include? env[:status]
|
76
72
|
params = env[:body]["params"]
|
@@ -0,0 +1,86 @@
|
|
1
|
+
command :build do |c|
|
2
|
+
c.syntax = 'mesmerize build [options] [output]'
|
3
|
+
c.summary = 'Create 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 '-w', '--workspace WORKSPACE', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'
|
8
|
+
c.option '-p', '--project PROJECT', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory, overridden by --workspace option, if passed)'
|
9
|
+
c.option '-s', '--scheme SCHEME', 'Scheme used to build app'
|
10
|
+
c.option '-q', '--quiet', 'Silence warning and success messages'
|
11
|
+
|
12
|
+
c.action do |args, options|
|
13
|
+
require_authorization!
|
14
|
+
validate_xcode_version!
|
15
|
+
|
16
|
+
begin
|
17
|
+
@xcodebuild_info = Mesmerize::XcodeBuildInfo.info
|
18
|
+
|
19
|
+
@workspace = options.workspace
|
20
|
+
@project = options.project
|
21
|
+
@scheme = options.scheme
|
22
|
+
|
23
|
+
determine_workspace_or_project! unless @workspace || @project
|
24
|
+
|
25
|
+
determine_scheme! unless @scheme
|
26
|
+
say_error "Scheme #{@scheme} not found" and abort unless @xcodebuild_info.schemes.include?(@scheme)
|
27
|
+
|
28
|
+
say_warning "Building \"#{@workspace || @project}\" with scheme \"#{@scheme}\"\n" unless options.quiet
|
29
|
+
|
30
|
+
destination = File.join("/tmp/mesmerize/", "#{@xcodebuild_info.project}-#{Time.now.to_i}")
|
31
|
+
log "xcodebuild", (@workspace || @project)
|
32
|
+
|
33
|
+
opts = []
|
34
|
+
opts << "-workspace '#{@workspace}'" if @workspace
|
35
|
+
opts << "-project '#{@project}'" if @project
|
36
|
+
opts << "-scheme '#{@scheme}'" if @scheme
|
37
|
+
|
38
|
+
["DSTROOT", "DWARF_DSYM_FOLDER_PATH", "CONFIGURATION_BUILD_DIR"].each do |k|
|
39
|
+
opts << "#{k}=#{destination}"
|
40
|
+
end
|
41
|
+
opts << "DEPLOYMENT_LOCATION=YES"
|
42
|
+
|
43
|
+
ENV['CC'] = nil # Fix for RVM
|
44
|
+
abort unless system "xcodebuild -sdk macosx #{opts.join(' ')} clean build 1> /dev/null"
|
45
|
+
|
46
|
+
app = Dir["#{destination}/**/*.app"].detect{|app| File.basename(app, ".app") == @xcodebuild_info.project}
|
47
|
+
say_error "Could not find build product in #{destination}" and abort unless app
|
48
|
+
|
49
|
+
output = args.pop || "./"
|
50
|
+
say_error "Could not move #{app} to #{output}" and abort unless system "mv #{app} #{output}"
|
51
|
+
say_ok "#{File.basename(app)} successfully built" unless options.quiet
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def determine_workspace_or_project!
|
58
|
+
workspaces, projects = Dir["*.xcworkspace"], Dir["*.xcodeproj"]
|
59
|
+
|
60
|
+
if workspaces.empty?
|
61
|
+
if projects.empty?
|
62
|
+
say_error "No Xcode projects or workspaces found in current directory" and abort
|
63
|
+
else
|
64
|
+
if projects.length == 1
|
65
|
+
@project = projects.first
|
66
|
+
else
|
67
|
+
@project = choose "Select a project:", *projects
|
68
|
+
end
|
69
|
+
end
|
70
|
+
else
|
71
|
+
if workspaces.length == 1
|
72
|
+
@workspace = workspaces.first
|
73
|
+
else
|
74
|
+
@workspace = choose "Select a workspace:", *workspaces
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def determine_scheme!
|
80
|
+
if @xcodebuild_info.schemes.length == 1
|
81
|
+
@scheme = @xcodebuild_info.schemes.first
|
82
|
+
else
|
83
|
+
@scheme = choose "Select a scheme:", *@xcodebuild_info.schemes
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -1,121 +1,82 @@
|
|
1
1
|
command :release do |c|
|
2
|
-
c.syntax = 'mesmerize release [
|
2
|
+
c.syntax = 'mesmerize release [options]'
|
3
3
|
c.summary = 'Release a new build of your app'
|
4
4
|
c.description = ''
|
5
5
|
|
6
6
|
c.example 'description', 'mesmerize release 478 --tag 3.7.2 --scheme MyApp+Sparkle'
|
7
7
|
c.option '-a', '--app APP', 'Name of App'
|
8
|
-
c.option '-
|
8
|
+
c.option '-r', '--build BUILD', Integer, "Build Version Number (CFBundleVersion, e.g. 2663)"
|
9
|
+
c.option '-t', '--tag TAG', 'Marketing Version Number (CFBundleShortVersionString, e.g. 3.7.2)'
|
9
10
|
c.option '-w', '--workspace WORKSPACE', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'
|
10
11
|
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
12
|
c.option '-s', '--scheme SCHEME', 'Scheme used to build app'
|
13
|
+
c.option '-m', '--release-notes NOTES', 'Notes for this release'
|
12
14
|
|
13
15
|
c.action do |args, options|
|
14
16
|
require_authorization!
|
17
|
+
validate_xcode_version!
|
15
18
|
|
16
19
|
begin
|
17
|
-
@
|
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
|
20
|
+
@xcodebuild_info = Mesmerize::XcodeBuildInfo.info
|
52
21
|
|
53
|
-
|
54
|
-
|
55
|
-
|
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
|
22
|
+
@app = options.app
|
23
|
+
@build_number = options.build
|
24
|
+
@tag = options.tag
|
73
25
|
|
74
|
-
|
75
|
-
abort "Scheme #{@scheme} not found"
|
76
|
-
end
|
26
|
+
@release_notes = options.release_notes
|
77
27
|
|
78
|
-
|
79
|
-
@scheme = choose "Select a scheme:", *@info.schemes
|
80
|
-
end
|
28
|
+
determine_current_release_information!
|
81
29
|
|
82
|
-
|
30
|
+
determine_build_number! unless @build_number
|
31
|
+
validate_build_number!
|
32
|
+
|
33
|
+
determine_tag! unless @tag
|
34
|
+
validate_tag!
|
83
35
|
|
84
|
-
|
85
|
-
say "Building \"#{@workspace || @project}\" version #{@version} with scheme \"#{@scheme}\"\n"
|
36
|
+
determine_release_notes! unless @release_notes
|
86
37
|
|
87
38
|
log "agvtool", "new-version"
|
88
|
-
`agvtool -noscm new-version -all #{@
|
39
|
+
`agvtool -noscm new-version -all #{@build_number}`
|
89
40
|
|
90
41
|
if @tag
|
91
42
|
log "agvtool", "new-marketing-version"
|
92
43
|
`agvtool -noscm new-marketing-version #{@tag}`
|
93
44
|
end
|
94
45
|
|
95
|
-
|
96
|
-
log "xcodebuild", action
|
46
|
+
@filename = "#{@app["name"]}-#{@build_number}.zip"
|
97
47
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
options << "-scheme '#{@scheme}'" if @scheme
|
48
|
+
# Un-parsing and passing options to `build` command
|
49
|
+
cargs = options.__hash__.keep_if{|k, v| [:workspace, :project, :scheme].include?(k)}
|
50
|
+
command(:build).run(*cargs.collect{|k, v| "--#{k} #{v}"}, "-q", "#{File.basename(@filename, '.zip')}.app")
|
102
51
|
|
103
|
-
|
104
|
-
end
|
52
|
+
abort unless system "zip -rmTq #{@filename} #{File.basename(@filename, '.zip')}.app"
|
105
53
|
|
54
|
+
log "upload", @filename
|
55
|
+
|
56
|
+
params = {
|
57
|
+
:version => @build_number.to_s,
|
58
|
+
:description => @release_notes,
|
59
|
+
:tag => @tag
|
60
|
+
}
|
106
61
|
|
107
|
-
@
|
108
|
-
|
62
|
+
client.post_release(@app["slug"], params, @filename) do |status, body|
|
63
|
+
case status
|
64
|
+
when 200...300, nil
|
65
|
+
log "publish appcast.xml"
|
109
66
|
|
110
|
-
|
67
|
+
log "delete #{@filename}"
|
68
|
+
system "rm -f #{File.basename(@filename, '.zip')}.*"
|
111
69
|
|
112
|
-
|
70
|
+
puts
|
71
|
+
say_ok "Successfully created release, #{@app["name"]} r#{@build_number}"
|
72
|
+
|
73
|
+
url = "https://#{@app["slug"]}.#{Mesmerize::Client::HOSTNAME}"
|
74
|
+
say "See the updated appcast at #{url}/appcast.xml"
|
113
75
|
|
114
|
-
|
115
|
-
|
116
|
-
say_ok "Successfully created release, #{@app['name']} r#{@version}"
|
76
|
+
puts
|
77
|
+
say "Download the latest version at #{url}/latest"
|
117
78
|
else
|
118
|
-
|
79
|
+
say_error "Error creating release: #{body}" and abort
|
119
80
|
end
|
120
81
|
end
|
121
82
|
rescue Mesmerize::XcodeBuildInfo::NilOutputError
|
@@ -124,8 +85,65 @@ command :release do |c|
|
|
124
85
|
say_error "Xcode Build Error: #{e}" and abort
|
125
86
|
rescue => e
|
126
87
|
say_error "Error: #{e}" and abort
|
127
|
-
ensure
|
128
|
-
`rm -rf .mesmerize`
|
129
88
|
end
|
130
89
|
end
|
131
|
-
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def validate_xcode_version!
|
94
|
+
version = Mesmerize::XcodeBuildInfo.version
|
95
|
+
say_error "Mesmerize requires Xcode 4 (found #{version}). Please install or switch to the latest Xcode." and abort if version < "4.0.0"
|
96
|
+
end
|
97
|
+
|
98
|
+
def validate_build_number!
|
99
|
+
version = @app["version"].to_i
|
100
|
+
if version and @build_number and @build_number <= version
|
101
|
+
say_error "Specified build number (#{@build_number}) must be greater than current release (#{version})" and abort
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def validate_tag!
|
106
|
+
# TODO
|
107
|
+
end
|
108
|
+
|
109
|
+
def determine_current_release_information!
|
110
|
+
name = @app || @xcodebuild_info.project
|
111
|
+
|
112
|
+
say "Found project \"#{name}\"."
|
113
|
+
say "Looking up current release information..."
|
114
|
+
|
115
|
+
response = client.get_app(name.gsub(/\s+/, '-'))
|
116
|
+
case response.status
|
117
|
+
when 200...300
|
118
|
+
@app = response.body
|
119
|
+
when 404
|
120
|
+
say_error "Could not find listing for #{name}." and say_error "Do `mesmerize create #{@app["name"]}` first." and abort
|
121
|
+
else
|
122
|
+
say_error "Error finding listing for #{name}: #{response.body}" and abort
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def determine_build_number!
|
127
|
+
version = @app["version"].to_i
|
128
|
+
if version.nonzero?
|
129
|
+
@build_number = version + 1
|
130
|
+
say_warning "Bumping release to version #{@build_number}"
|
131
|
+
elsif Mesmerize::Agvtool.vers
|
132
|
+
@build_number = Mesmerize::Agvtool.vers + 1
|
133
|
+
say_warning "Bumping release to version #{@build_number}"
|
134
|
+
else
|
135
|
+
@build_number = ask_for_integer "Specify a build number (CFBundleVersion)"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def determine_tag!
|
140
|
+
@tag = Mesmerize::Agvtool.mvers
|
141
|
+
end
|
142
|
+
|
143
|
+
def determine_release_notes!
|
144
|
+
placeholder = %{What's new in this release: }
|
145
|
+
|
146
|
+
@release_notes = ask_editor placeholder
|
147
|
+
@release_notes = nil if @release_notes == placeholder
|
148
|
+
end
|
149
|
+
end
|
data/lib/mesmerize/commands.rb
CHANGED
@@ -2,22 +2,22 @@ require 'ostruct'
|
|
2
2
|
|
3
3
|
module Mesmerize::XcodeBuildInfo
|
4
4
|
class Info < OpenStruct; end
|
5
|
-
|
5
|
+
|
6
6
|
class Error < StandardError; end
|
7
7
|
class NilOutputError < Error; end
|
8
|
-
|
8
|
+
|
9
9
|
class << self
|
10
10
|
def info
|
11
11
|
output = `xcodebuild -list 2> /dev/null`
|
12
12
|
raise Error.new $1 if /^xcodebuild\: error\: (.+)$/ === output
|
13
13
|
raise NilOutputError unless /\S/ === output
|
14
|
-
|
14
|
+
|
15
15
|
lines = output.split(/\n/)
|
16
16
|
hash = {}
|
17
17
|
group = nil
|
18
|
-
|
18
|
+
|
19
19
|
hash[:project] = lines.shift.match(/\"(.+)\"\:/)[1]
|
20
|
-
|
20
|
+
|
21
21
|
lines.each do |line|
|
22
22
|
if /\:$/ === line
|
23
23
|
group = line.strip[0...-1].downcase.gsub(/\s+/, '-')
|
@@ -29,8 +29,13 @@ module Mesmerize::XcodeBuildInfo
|
|
29
29
|
hash[group] << line.strip
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
Info.new(hash)
|
34
34
|
end
|
35
|
+
|
36
|
+
def version
|
37
|
+
output = `xcodebuild -version`
|
38
|
+
output.scan(/([\d\.?]+)/).flatten.first rescue nil
|
39
|
+
end
|
35
40
|
end
|
36
41
|
end
|
data/lib/mesmerize.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mesmerize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-18 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70094542236220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.6.1
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70094542236220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70094542235720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.9.2
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70094542235720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: commander
|
38
|
-
requirement: &
|
38
|
+
requirement: &70094542235260 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 4.1.2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70094542235260
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &70094542234800 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.7.3
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70094542234800
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: faraday
|
60
|
-
requirement: &
|
60
|
+
requirement: &70094542234340 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.8.0
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70094542234340
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: faraday_middleware
|
71
|
-
requirement: &
|
71
|
+
requirement: &70094542233880 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.8.7
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70094542233880
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: netrc
|
82
|
-
requirement: &
|
82
|
+
requirement: &70094542233420 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 0.7.2
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70094542233420
|
91
91
|
description: Command-Line Interface for Mesmerize
|
92
92
|
email: m@mattt.me
|
93
93
|
executables:
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- ./lib/mesmerize/agvtool.rb
|
101
101
|
- ./lib/mesmerize/authentication.rb
|
102
102
|
- ./lib/mesmerize/client.rb
|
103
|
+
- ./lib/mesmerize/commands/build.rb
|
103
104
|
- ./lib/mesmerize/commands/create.rb
|
104
105
|
- ./lib/mesmerize/commands/login.rb
|
105
106
|
- ./lib/mesmerize/commands/logout.rb
|
@@ -126,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
127
|
version: '0'
|
127
128
|
segments:
|
128
129
|
- 0
|
129
|
-
hash: -
|
130
|
+
hash: -3338072577465810837
|
130
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
132
|
none: false
|
132
133
|
requirements:
|
@@ -135,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
136
|
version: '0'
|
136
137
|
segments:
|
137
138
|
- 0
|
138
|
-
hash: -
|
139
|
+
hash: -3338072577465810837
|
139
140
|
requirements: []
|
140
141
|
rubyforge_project:
|
141
142
|
rubygems_version: 1.8.15
|