ognivo 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +4 -1
- data/lib/ognivo/build.rb +5 -3
- data/lib/ognivo/cli.rb +1 -1
- data/lib/ognivo/version.rb +1 -1
- data/lib/ognivo.rb +0 -2
- metadata +19 -7
- data/lib/ognivo/agvtool.rb +0 -8
- data/lib/ognivo/xcodebuild.rb +0 -113
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92a20aed7af529b09b1e7c5bd83e3fd89c199206
|
|
4
|
+
data.tar.gz: 35a0ee3a07c6a53c4b17e194a44855bb516f18c5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 59988a1b2eb5d28841b075194837e7f4a854610765e053ea250da959c70f330a5a8b6359e45ce042577c0b65a92510c480352d05c603e983b4a29f4fb1a65c42
|
|
7
|
+
data.tar.gz: d992bff5a7530fac6c1cee9ea4bfa0a35c1d659dd02ffc3aae8b47ca177757a5c43e7eac1a7aaf0078e53f694fec91aba4d1f147d659bb0f4972fe75e687d148
|
data/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# Ognivo
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://codeclimate.com/github/antlypls/ognivo)
|
|
4
|
+
[](https://travis-ci.org/antlypls/ognivo)
|
|
5
|
+
|
|
6
|
+
Create MacOS app builds and destribute updates with [Sparkle](https://github.com/sparkle-project/Sparkle) over [Amazon S3](http://aws.amazon.com/s3/).
|
|
4
7
|
|
|
5
8
|
> **NOTE** about gem's name:
|
|
6
9
|
> *ognivo* is a russian word that means *fire striker*,
|
data/lib/ognivo/build.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'xctools'
|
|
2
|
+
|
|
1
3
|
module Ognivo
|
|
2
4
|
class Build
|
|
3
5
|
include CLIHelpers
|
|
@@ -18,7 +20,7 @@ module Ognivo
|
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def build_version
|
|
21
|
-
@build_version ||= Agvtool.marketing_version.to_s
|
|
23
|
+
@build_version ||= XcTools::Agvtool.marketing_version.to_s
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
attr_reader :zip_file
|
|
@@ -31,13 +33,13 @@ module Ognivo
|
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
def collect_settings
|
|
34
|
-
build_info = XcodeBuild.info(workspace: @workspace, project: @project)
|
|
36
|
+
build_info = XcTools::XcodeBuild.info(workspace: @workspace, project: @project)
|
|
35
37
|
|
|
36
38
|
ensure_workspace_project
|
|
37
39
|
|
|
38
40
|
@scheme = select_option('scheme', build_info.schemes) unless @scheme
|
|
39
41
|
|
|
40
|
-
build_settings = XcodeBuild.settings(*build_flags).find_app
|
|
42
|
+
build_settings = XcTools::XcodeBuild.settings(*build_flags).find_app
|
|
41
43
|
validate_settings(build_settings)
|
|
42
44
|
|
|
43
45
|
@build_configuration ||= build_settings['CONFIGURATION']
|
data/lib/ognivo/cli.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# program :name, 'ognivo'
|
|
2
2
|
program :version, Ognivo::VERSION
|
|
3
|
-
program :description, '
|
|
3
|
+
program :description, 'Build and publish MacOS apps updates with sparkle and S3'
|
|
4
4
|
|
|
5
5
|
program :help, 'Author', 'Anatoliy Plastinin <hello@antlypls.com>'
|
|
6
6
|
program :help, 'Website', 'http://github.com/antlypls/ognivo'
|
data/lib/ognivo/version.rb
CHANGED
data/lib/ognivo.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ognivo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Anatoliy Plastinin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-10-
|
|
11
|
+
date: 2014-10-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: commander
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: xctools
|
|
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'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: nokogiri
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,8 +94,8 @@ dependencies:
|
|
|
80
94
|
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
96
|
version: '1.6'
|
|
83
|
-
description: Ognivo is CLI tool that automates
|
|
84
|
-
|
|
97
|
+
description: Ognivo is CLI tool that automates creating MacOS app builds and destributing
|
|
98
|
+
updates with Sparkle over Amazon S3.
|
|
85
99
|
email:
|
|
86
100
|
- hello@antlypls.com
|
|
87
101
|
executables:
|
|
@@ -93,7 +107,6 @@ files:
|
|
|
93
107
|
- README.md
|
|
94
108
|
- bin/spark
|
|
95
109
|
- lib/ognivo.rb
|
|
96
|
-
- lib/ognivo/agvtool.rb
|
|
97
110
|
- lib/ognivo/appcast.rb
|
|
98
111
|
- lib/ognivo/build.rb
|
|
99
112
|
- lib/ognivo/cli.rb
|
|
@@ -106,8 +119,7 @@ files:
|
|
|
106
119
|
- lib/ognivo/upload.rb
|
|
107
120
|
- lib/ognivo/utils.rb
|
|
108
121
|
- lib/ognivo/version.rb
|
|
109
|
-
|
|
110
|
-
homepage: ''
|
|
122
|
+
homepage: https://github.com/antlypls/ognivo
|
|
111
123
|
licenses:
|
|
112
124
|
- MIT
|
|
113
125
|
metadata: {}
|
data/lib/ognivo/agvtool.rb
DELETED
data/lib/ognivo/xcodebuild.rb
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# based on source code from nomad/shenzhen project
|
|
2
|
-
# see https://github.com/nomad/shenzhen/blob/master/lib/shenzhen/xcodebuild.rb
|
|
3
|
-
|
|
4
|
-
require 'ostruct'
|
|
5
|
-
|
|
6
|
-
module Ognivo
|
|
7
|
-
module XcodeBuild
|
|
8
|
-
Error = Class.new(StandardError)
|
|
9
|
-
NilOutputError = Class.new(Error)
|
|
10
|
-
|
|
11
|
-
Info = Class.new(OpenStruct)
|
|
12
|
-
|
|
13
|
-
class Settings < Hash
|
|
14
|
-
def initialize(hash = {})
|
|
15
|
-
merge!(hash)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def find_app
|
|
19
|
-
values.find { |settings| settings['WRAPPER_EXTENSION'] == 'app' }
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.info(*args)
|
|
24
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
25
|
-
output = `xcodebuild -list #{(args + args_from_options(options)).join(' ')} 2>&1`
|
|
26
|
-
fail Error, $1 if output =~ /^xcodebuild\: error\: (.+)$/
|
|
27
|
-
fail NilOutputError unless output =~ /\S/
|
|
28
|
-
|
|
29
|
-
info = parse_info_output(output)
|
|
30
|
-
Info.new(info)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def self.parse_info_output(output)
|
|
34
|
-
lines = output.split(/\n/)
|
|
35
|
-
|
|
36
|
-
project_name = parse_info_project_name(lines.first)
|
|
37
|
-
|
|
38
|
-
info, _ = lines.drop(1).reduce([{}, nil]) do |(info, group), line|
|
|
39
|
-
parse_info_line(line, info, group)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
info.each do |_, values|
|
|
43
|
-
values.delete('')
|
|
44
|
-
values.uniq!
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
info.merge(project: project_name)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def self.parse_info_project_name(line)
|
|
51
|
-
$1 if line =~ /\"(.+)\"\:/
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def self.parse_info_line(line, info, group)
|
|
55
|
-
if line =~ /\:$/
|
|
56
|
-
group = line.strip[0...-1].downcase.gsub(/\s+/, '_')
|
|
57
|
-
info[group] = []
|
|
58
|
-
else
|
|
59
|
-
info[group] << line.strip unless group.nil? || line =~ /\.$/
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
[info, group]
|
|
63
|
-
end
|
|
64
|
-
private_class_method :parse_info_line
|
|
65
|
-
|
|
66
|
-
def self.settings(*args)
|
|
67
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
68
|
-
cmd_args = (args + args_from_options(options)).join(' ')
|
|
69
|
-
output = `xcodebuild #{cmd_args} -showBuildSettings 2> /dev/null`
|
|
70
|
-
fail Error, $1 if output =~ /^xcodebuild\: error\: (.+)$/
|
|
71
|
-
fail NilOutputError unless output =~ /\S/
|
|
72
|
-
|
|
73
|
-
settings = parse_settings_output(output)
|
|
74
|
-
Settings.new(settings)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def self.parse_settings_output(output)
|
|
78
|
-
lines = output.split(/\n/)
|
|
79
|
-
|
|
80
|
-
lines.reduce([{}, nil]) do |(settings, target), line|
|
|
81
|
-
parse_settings_line(line, settings, target)
|
|
82
|
-
end.first
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def self.parse_settings_line(line, settings, target)
|
|
86
|
-
case line
|
|
87
|
-
when /Build settings for action build and target \"?([^":]+)/
|
|
88
|
-
target = $1
|
|
89
|
-
settings[target] = {}
|
|
90
|
-
else
|
|
91
|
-
key, value = line.split(/\=/).map(&:strip)
|
|
92
|
-
settings[target][key] = value if target
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
[settings, target]
|
|
96
|
-
end
|
|
97
|
-
private_class_method :parse_settings_line
|
|
98
|
-
|
|
99
|
-
def self.version
|
|
100
|
-
output = `xcodebuild -version`
|
|
101
|
-
parse_xcode_version(output)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def self.parse_xcode_version(output)
|
|
105
|
-
$1 if output =~ /([\d+\.?]+)/
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def self.args_from_options(options = {})
|
|
109
|
-
options.reject { |_, value| value.nil? }.map { |key, value| "-#{key} '#{value}'" }
|
|
110
|
-
end
|
|
111
|
-
private_class_method :args_from_options
|
|
112
|
-
end
|
|
113
|
-
end
|