appbundle-updater 0.1.0 → 0.2.0
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/.gitignore +0 -1
- data/CHANGELOG.md +26 -0
- data/Gemfile +7 -0
- data/README.md +21 -0
- data/Rakefile +6 -0
- data/appbundler.gemspec +1 -1
- data/bin/appbundle-updater +38 -13
- data/lib/appbundle_updater/version.rb +1 -1
- metadata +5 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac3bd055342dbbd8af2b4414052f38d1d151f890
|
4
|
+
data.tar.gz: 7f2353ffcb372150135f72a0f25dacc6a49ab7ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41bf71dad53439581f2348dbd923f57d761007fb00ec2a5ca6671749536a860aa3cc8db6e0dffaa78563fe9de79fd5a209edbfbf9df5abeab338bbc58863fd46
|
7
|
+
data.tar.gz: c6e1b1e734b322b035ab625e4b228047f6673d13caef25228885aecac13ae8edcce604c2120c5bc970ee97f538c067cd1aa684a9db4b456c832ec6e96387b947
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [Unreleased](https://github.com/chef/appbundle-updater/tree/HEAD)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/chef/appbundle-updater/compare/v0.1.0...HEAD)
|
6
|
+
|
7
|
+
**Merged pull requests:**
|
8
|
+
|
9
|
+
- add --github option for pulling forks [\#4](https://github.com/chef/appbundle-updater/pull/4) ([lamont-granquist](https://github.com/lamont-granquist))
|
10
|
+
- Suppress command output for successful commands [\#3](https://github.com/chef/appbundle-updater/pull/3) ([lamont-granquist](https://github.com/lamont-granquist))
|
11
|
+
- introduce --tarball option, default back to git clone [\#2](https://github.com/chef/appbundle-updater/pull/2) ([lamont-granquist](https://github.com/lamont-granquist))
|
12
|
+
|
13
|
+
## [v0.1.0](https://github.com/chef/appbundle-updater/tree/v0.1.0) (2015-09-25)
|
14
|
+
[Full Changelog](https://github.com/chef/appbundle-updater/compare/v0.0.2...v0.1.0)
|
15
|
+
|
16
|
+
**Merged pull requests:**
|
17
|
+
|
18
|
+
- use pure ruby to download tarball and extract [\#1](https://github.com/chef/appbundle-updater/pull/1) ([lamont-granquist](https://github.com/lamont-granquist))
|
19
|
+
|
20
|
+
## [v0.0.2](https://github.com/chef/appbundle-updater/tree/v0.0.2) (2015-09-23)
|
21
|
+
[Full Changelog](https://github.com/chef/appbundle-updater/compare/v0.0.1...v0.0.2)
|
22
|
+
|
23
|
+
## [v0.0.1](https://github.com/chef/appbundle-updater/tree/v0.0.1) (2015-09-23)
|
24
|
+
|
25
|
+
|
26
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -54,6 +54,27 @@ Windows users from PowerShell use the bat file:
|
|
54
54
|
|
55
55
|
If you don't want "master" you can use any other git tag/branch/sha/etc that git understands.
|
56
56
|
|
57
|
+
## Using a GitHub Fork
|
58
|
+
|
59
|
+
By default this gem clones from the official repos from the software. To override and point
|
60
|
+
at at fork use the `--github`` option on the command-line:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
sudo appbundle-updater chef chef lcg/cool-feature --github lamont-granquist/chef
|
64
|
+
```
|
65
|
+
|
66
|
+
## Using a GitHub tarball instead of a git clone
|
67
|
+
|
68
|
+
Using the `--tarball` method will not use `git clone` and will not require the git binary being
|
69
|
+
installed on the system. By using this command the whole functionality should run in pure ruby,
|
70
|
+
be portable across all operating systems that omnibus-chef is ported to, and should only use
|
71
|
+
ruby stdlib functions. The disadvantage is that you do now wind up with a real git checkout
|
72
|
+
in the apps directory, just an extracted snapshot.
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
sudo appbundle-updater chef chef master --tarball
|
76
|
+
```
|
77
|
+
|
57
78
|
## Execution and Target rubies
|
58
79
|
|
59
80
|
This does not need to be installed into the embedded ruby that you are doing the update on.
|
data/Rakefile
CHANGED
data/appbundler.gemspec
CHANGED
data/bin/appbundle-updater
CHANGED
@@ -48,6 +48,8 @@ TAR_LONGLINK = '././@LongLink'
|
|
48
48
|
# pure ruby `tar xzf`, handles longlinks and directories ending in '/'
|
49
49
|
# (http://stackoverflow.com/a/31310593/506908)
|
50
50
|
def extract_tgz(file, destination = '.')
|
51
|
+
# NOTE: THIS IS DELIBERATELY PURE RUBY USING NO NATIVE GEMS AND ONLY
|
52
|
+
# THE RUBY STDLIB BY DESIGN
|
51
53
|
Gem::Package::TarReader.new( Zlib::GzipReader.open file ) do |tar|
|
52
54
|
dest = nil
|
53
55
|
tar.each do |entry|
|
@@ -127,11 +129,13 @@ CHEFDK_APPS = [
|
|
127
129
|
].freeze
|
128
130
|
|
129
131
|
class Updater
|
130
|
-
attr_reader :app, :ref
|
132
|
+
attr_reader :app, :ref, :tarball, :repo
|
131
133
|
|
132
134
|
def initialize(options)
|
133
135
|
@app = options[:app]
|
134
136
|
@ref = options[:ref]
|
137
|
+
@tarball = options[:tarball]
|
138
|
+
@repo = options[:repo] || @app.repo
|
135
139
|
end
|
136
140
|
|
137
141
|
def start
|
@@ -139,22 +143,34 @@ class Updater
|
|
139
143
|
abort "#{$0} needs to be run as root user or with sudo"
|
140
144
|
end
|
141
145
|
|
142
|
-
ruby("-rpp -e 'pp ENV'")
|
143
146
|
banner("Cleaning #{app} checkout")
|
144
147
|
app_dir.rmtree if app_dir.directory?
|
145
148
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
149
|
+
if ( tarball )
|
150
|
+
# NOTE: THIS IS DELIBERATELY PURE RUBY USING NO NATIVE GEMS AND ONLY
|
151
|
+
# THE RUBY STDLIB BY DESIGN
|
152
|
+
git_url = "https://github.com/#{repo}/archive/#{ref}.tar.gz"
|
153
|
+
banner("Extracting #{app} from #{git_url}")
|
154
|
+
Dir.chdir(chefdk.join("embedded/apps")) do
|
155
|
+
Tempfile.open('appbundle-updater') do |tempfile|
|
156
|
+
open(git_url) do |uri|
|
157
|
+
tempfile.write(uri.read)
|
158
|
+
end
|
159
|
+
tempfile.close
|
160
|
+
extract_tgz(tempfile.path)
|
152
161
|
end
|
153
|
-
|
154
|
-
|
162
|
+
base = File.basename repo
|
163
|
+
FileUtils.mv "#{base}-#{ref}".gsub(/\//, "-"), "#{app.name}"
|
164
|
+
end
|
165
|
+
else
|
166
|
+
git_url = "https://github.com/#{repo}.git"
|
167
|
+
banner("Cloning #{app} from #{git_url}")
|
168
|
+
run("git clone #{git_url} #{app_dir}")
|
169
|
+
|
170
|
+
banner("Checking out #{app} to #{ref}")
|
171
|
+
Dir.chdir(app_dir) do
|
172
|
+
run("git checkout #{ref}")
|
155
173
|
end
|
156
|
-
base = File.basename app.repo
|
157
|
-
FileUtils.mv "#{base}-#{ref}", "#{app.name}"
|
158
174
|
end
|
159
175
|
|
160
176
|
banner("Installing dependencies")
|
@@ -200,7 +216,10 @@ class Updater
|
|
200
216
|
ENV_KEYS.each { |key| ENV["_YOLO_#{key}"] = ENV[key]; ENV.delete(key) }
|
201
217
|
ENV['PATH'] = "#{bin_dir}:#{ENV['_YOLO_PATH']}"
|
202
218
|
puts " running: #{cmd}"
|
203
|
-
|
219
|
+
output = `#{cmd} 2>&1` #FIXME: bash/zsh-ism, will not work on csh
|
220
|
+
unless $?.exited? && $?.exitstatus == 0
|
221
|
+
raise("Command [#{cmd}] failed!\n\n---BEGIN OUTPUT--\n#{output}\n---END OUTPUT--\n")
|
222
|
+
end
|
204
223
|
ENV_KEYS.each { |key| ENV[key] = ENV.delete("_YOLO_#{key}") }
|
205
224
|
end
|
206
225
|
|
@@ -217,6 +236,12 @@ class CLI
|
|
217
236
|
@options = Hash.new
|
218
237
|
@parser = OptionParser.new { |opts|
|
219
238
|
opts.banner = "Usage: #{$0} PROJECT APP_NAME GIT_REF"
|
239
|
+
opts.on("-t", "--[no-]tarball", "Do a tarball download instead of git clone") do |t|
|
240
|
+
options[:tarball] = t
|
241
|
+
end
|
242
|
+
opts.on("-g", "--github REPO", "Github repo (e.g. chef/chef) to pull from") do |g|
|
243
|
+
options[:repo] = g
|
244
|
+
end
|
220
245
|
opts.on("-h", "--help", "Prints this help") do
|
221
246
|
puts opts
|
222
247
|
exit
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appbundle-updater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lamont-granquist
|
@@ -9,21 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-09-25 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rake
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
12
|
+
dependencies: []
|
27
13
|
description: Updates appbundled apps in Chef's omnibus packages
|
28
14
|
email:
|
29
15
|
- lamont@chef.io
|
@@ -34,6 +20,8 @@ extra_rdoc_files: []
|
|
34
20
|
files:
|
35
21
|
- ".gitignore"
|
36
22
|
- ".kitchen.yml"
|
23
|
+
- CHANGELOG.md
|
24
|
+
- Gemfile
|
37
25
|
- LICENSE.txt
|
38
26
|
- README.md
|
39
27
|
- Rakefile
|
@@ -69,3 +57,4 @@ summary: Updates appbundled apps in Chef's omnibus packages
|
|
69
57
|
test_files:
|
70
58
|
- test/integration/bootstrap.ps1
|
71
59
|
- test/integration/bootstrap.sh
|
60
|
+
has_rdoc:
|