depot3 3.0.22 → 3.0.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/bin/d3admin +6 -6
- data/bin/d3helper +1 -1
- data/lib/d3/admin/add.rb +1 -2
- data/lib/d3/admin/report.rb +4 -4
- data/lib/d3/client/class_methods.rb +4 -4
- data/lib/d3/client/lists.rb +1 -2
- data/lib/d3/client/receipt.rb +4 -4
- data/lib/d3/package/class_methods.rb +5 -5
- data/lib/d3/package/client_actions.rb +4 -4
- data/lib/d3/package/private_methods.rb +1 -1
- data/lib/d3/package/server_actions.rb +4 -4
- data/lib/d3/puppytime/pending_puppy.rb +2 -2
- data/lib/d3/version.rb +1 -1
- metadata +21 -34
- data/CHANGES.md +0 -85
- data/LICENSE.txt +0 -174
- data/README.md +0 -54
- data/THANKS.md +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ed29147e7483a7d858d0bbf77beacff920818f1d08bd480d400c773993eff527
|
4
|
+
data.tar.gz: 9dd177ef915c02d4a237f2e650cd5257e0a6a4d3e1d74ce12604859aa28d798f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c368066a609db7b90da737e1fa623ecb195f461c7f426b61af21e01afec98efb982b47aa8aef985177ac460f6b4e15f1ef8e5337dad2aa02c1bb0f087ca5abc
|
7
|
+
data.tar.gz: 31984ef03b48ed993dda677c6cb936dae3e9f465fefbbdf82275efd6717ac01524c8e9cdef73128ad12bb8e2ae0d4489b05ababe7bd1df59186d81d3e8ea9aa0
|
data/bin/d3admin
CHANGED
@@ -461,7 +461,7 @@ ENDVERS
|
|
461
461
|
puts 'No edition given to make live or no matching package found'
|
462
462
|
return
|
463
463
|
end
|
464
|
-
pkg = D3::Package.
|
464
|
+
pkg = D3::Package.fetch id: pkg_id
|
465
465
|
|
466
466
|
if pkg.status == :live
|
467
467
|
puts "Doh, '#{pkg.edition}' is already live"
|
@@ -479,7 +479,7 @@ ENDVERS
|
|
479
479
|
policy_warning = ''
|
480
480
|
pkg_id_being_deprecated = D3::Package.basenames_to_live_ids[pkg.basename]
|
481
481
|
if pkg_id_being_deprecated
|
482
|
-
outgoing_pkg = D3::Package.
|
482
|
+
outgoing_pkg = D3::Package.fetch(id: pkg_id_being_deprecated)
|
483
483
|
pols_used_by_old_pkg = outgoing_pkg.policy_ids
|
484
484
|
unless pols_used_by_old_pkg.empty?
|
485
485
|
names = pols_used_by_old_pkg.map { |pid| JSS::Policy.map_all_ids_to(:name)[pid] }.join(', ')
|
@@ -508,7 +508,7 @@ ENDVERS
|
|
508
508
|
def edit_package(pkg = nil)
|
509
509
|
unless pkg
|
510
510
|
pkg_id = get_pkg_from_cli_or_prompt
|
511
|
-
pkg = pkg_id ? D3::Package.
|
511
|
+
pkg = pkg_id ? D3::Package.fetch(id: pkg_id) : nil
|
512
512
|
end
|
513
513
|
if pkg.nil?
|
514
514
|
puts 'No targets given to edit or no matching package found'
|
@@ -583,7 +583,7 @@ ENDVERS
|
|
583
583
|
delete_missing_package pkg_id
|
584
584
|
return
|
585
585
|
else
|
586
|
-
pkg = D3::Package.
|
586
|
+
pkg = D3::Package.fetch id: pkg_id
|
587
587
|
end
|
588
588
|
|
589
589
|
got_scripts = !pkg.script_ids.values.empty?
|
@@ -671,7 +671,7 @@ ENDVERS
|
|
671
671
|
d3_users = (D3::Package.packages_for_script(victim_script_id) - [pkgid])
|
672
672
|
d3_users.each { |pid| puts "Script '#{victim_script_name}' in use by d3 edition '#{D3::Package.ids_to_editions[pid]}'" }
|
673
673
|
if pol_users.empty? && d3_users.empty?
|
674
|
-
JSS::Script.
|
674
|
+
JSS::Script.fetch(id: victim_script_id).delete
|
675
675
|
puts "Deleted script '#{victim_script_name}'"
|
676
676
|
end
|
677
677
|
end # do script id
|
@@ -734,7 +734,7 @@ ENDVERS
|
|
734
734
|
return
|
735
735
|
end
|
736
736
|
|
737
|
-
pkg = D3::Package.
|
737
|
+
pkg = D3::Package.fetch id: pkg_id
|
738
738
|
|
739
739
|
pkg_deets = <<-ENDDEETS
|
740
740
|
*****************************************
|
data/bin/d3helper
CHANGED
@@ -307,7 +307,7 @@ Watch a parade of cute puppies while these items are installed:
|
|
307
307
|
D3.log "Importing Jamf Pro Receipt #{jss_rcpt_name}", :warn
|
308
308
|
|
309
309
|
begin
|
310
|
-
d3_pkg = D3::Package.
|
310
|
+
d3_pkg = D3::Package.fetch id: pkg_id
|
311
311
|
|
312
312
|
# do we already have a rcpt for the package's basename? if so,
|
313
313
|
# delete it - we can only have on rcpt per basename
|
data/lib/d3/admin/add.rb
CHANGED
@@ -398,8 +398,7 @@ END_HEADER
|
|
398
398
|
###
|
399
399
|
def add_new_package(new_package_options)
|
400
400
|
# new_package_options should now have all the validated data we need to make a new pkg
|
401
|
-
new_pilot = D3::Package.
|
402
|
-
id: :new,
|
401
|
+
new_pilot = D3::Package.make(
|
403
402
|
basename: new_package_options.basename,
|
404
403
|
name: new_package_options.package_name,
|
405
404
|
version: new_package_options.version,
|
data/lib/d3/admin/report.rb
CHANGED
@@ -134,7 +134,7 @@ module D3
|
|
134
134
|
return
|
135
135
|
end
|
136
136
|
|
137
|
-
computer = JSS::Computer.
|
137
|
+
computer = JSS::Computer.fetch name: computer_name
|
138
138
|
|
139
139
|
ea_name = D3::CONFIG.report_receipts_ext_attr_name
|
140
140
|
|
@@ -296,7 +296,7 @@ module D3
|
|
296
296
|
return false
|
297
297
|
end
|
298
298
|
|
299
|
-
computer = JSS::Computer.
|
299
|
+
computer = JSS::Computer.fetch name: computer_name
|
300
300
|
ea_data = computer.extension_attributes.select{|ea| ea[:name] == ea_name}.first[:value]
|
301
301
|
if ea_data.empty?
|
302
302
|
puts "No puppies in the queue on computer '#{computer_name}'"
|
@@ -593,7 +593,7 @@ module D3
|
|
593
593
|
return nil unless D3::CONFIG.report_receipts_ext_attr_name
|
594
594
|
connect_for_reports
|
595
595
|
|
596
|
-
ea = JSS::ComputerExtensionAttribute.
|
596
|
+
ea = JSS::ComputerExtensionAttribute.fetch :name => D3::CONFIG.report_receipts_ext_attr_name
|
597
597
|
|
598
598
|
# while we could get the data via the API by calling: result = ea.latest_values
|
599
599
|
# but thats very slow, because it creates a temporary AdvancedSearch,
|
@@ -699,7 +699,7 @@ ENDQ
|
|
699
699
|
### get the latest puppy queue data from the puppy q EA, if available.
|
700
700
|
def computer_puppyq_data
|
701
701
|
return nil unless D3::CONFIG.report_puppyq_ext_attr_name
|
702
|
-
ea = JSS::ComputerExtensionAttribute.
|
702
|
+
ea = JSS::ComputerExtensionAttribute.fetch :name => D3::CONFIG.report_puppyq_ext_attr_name
|
703
703
|
q = <<-ENDQ
|
704
704
|
SELECT c.computer_id, c.computer_name, c.username, c.last_report_date_epoch AS as_of, eav.value_on_client AS value
|
705
705
|
FROM computers_denormalized c
|
@@ -405,7 +405,7 @@ module D3
|
|
405
405
|
# the update_installed_pkgs method during sync.
|
406
406
|
next if D3::Client::Receipt.all.keys.include? auto_install_basename
|
407
407
|
|
408
|
-
new_pkg = D3::Package.
|
408
|
+
new_pkg = D3::Package.fetch id: live_id
|
409
409
|
|
410
410
|
if new_pkg.reboot?
|
411
411
|
queued_id = puppy_in_queue new_pkg.basename
|
@@ -527,7 +527,7 @@ module D3
|
|
527
527
|
expiration = rcpt.custom_expiration ? rcpt.expiration : nil
|
528
528
|
|
529
529
|
# heres the pkg
|
530
|
-
live_pkg = D3::Package.
|
530
|
+
live_pkg = D3::Package.fetch id: live_basenames_to_ids[rcpt.basename]
|
531
531
|
|
532
532
|
begin
|
533
533
|
cloud = cloud_dist_point_to_use(pkg: live_pkg)
|
@@ -622,7 +622,7 @@ module D3
|
|
622
622
|
D3::PUPPY_Q.q.each do |basename, puppy|
|
623
623
|
begin
|
624
624
|
D3.log "Installing #{puppy.edition} from puppy-queue during sync with --puppies", :debug
|
625
|
-
new_pkg = D3::Package.
|
625
|
+
new_pkg = D3::Package.fetch id: puppy.id
|
626
626
|
cloud = cloud_dist_point_to_use(pkg: new_pkg)
|
627
627
|
new_pkg.install(
|
628
628
|
admin: puppy.admin,
|
@@ -741,7 +741,7 @@ module D3
|
|
741
741
|
def self.computer_groups(refresh = false)
|
742
742
|
@@computer_groups = nil if refresh
|
743
743
|
return @@computer_groups if @@computer_groups
|
744
|
-
@@computer_groups = JSS::Computer.
|
744
|
+
@@computer_groups = JSS::Computer.fetch(udid: JSS::Client.udid).computer_groups
|
745
745
|
end
|
746
746
|
|
747
747
|
### The cloud dist point to use for installs
|
data/lib/d3/client/lists.rb
CHANGED
@@ -236,7 +236,7 @@ module D3
|
|
236
236
|
lines = []
|
237
237
|
ids.each do |id|
|
238
238
|
begin
|
239
|
-
pkg = D3::Package.
|
239
|
+
pkg = D3::Package.fetch id: id
|
240
240
|
lines << [pkg.edition, pkg.status.to_s, (pkg.installed? ? "yes" : "no")]
|
241
241
|
rescue
|
242
242
|
D3.log "Couldn't get pkg for id #{id}", :error
|
@@ -316,4 +316,3 @@ module D3
|
|
316
316
|
|
317
317
|
end # class
|
318
318
|
end # module D3
|
319
|
-
|
data/lib/d3/client/receipt.rb
CHANGED
@@ -646,7 +646,7 @@ module D3
|
|
646
646
|
if JSS::Package.all_ids.include? @id
|
647
647
|
# uninstall the pkg
|
648
648
|
D3.log "Running 'jamf uninstall' of #{edition}", :debug
|
649
|
-
uninstall_worked = JSS::Package.
|
649
|
+
uninstall_worked = JSS::Package.fetch(:id => @id).uninstall(:verbose => verbose).exitstatus == 0
|
650
650
|
|
651
651
|
# if it isn't on the server any more....
|
652
652
|
else
|
@@ -715,7 +715,7 @@ module D3
|
|
715
715
|
D3::Client.set_env :pre_remove, edition
|
716
716
|
D3.log "Running pre_remove script", :debug
|
717
717
|
begin
|
718
|
-
result = JSS::Script.
|
718
|
+
result = JSS::Script.fetch(:id => @pre_remove_script_id).run :verbose => verbose, :show_output => verbose
|
719
719
|
rescue D3::ScriptError
|
720
720
|
raise PreRemoveError, $!
|
721
721
|
ensure
|
@@ -735,7 +735,7 @@ module D3
|
|
735
735
|
D3::Client.set_env :post_remove, edition
|
736
736
|
D3.log "Running post_remove script", :debug
|
737
737
|
begin
|
738
|
-
result = JSS::Script.
|
738
|
+
result = JSS::Script.fetch(:id => @post_remove_script_id).run :verbose => verbose, :show_output => verbose
|
739
739
|
rescue D3::ScriptError
|
740
740
|
raise PostRemoveError, $!
|
741
741
|
ensure
|
@@ -800,7 +800,7 @@ module D3
|
|
800
800
|
def repair
|
801
801
|
raise JSS::UnsupportedError, "This receipt has been deleted" if @deleted
|
802
802
|
|
803
|
-
d3_pkg = D3::Package.
|
803
|
+
d3_pkg = D3::Package.fetch :id => @id
|
804
804
|
|
805
805
|
@basename = d3_pkg.basename
|
806
806
|
@version = d3_pkg.version
|
@@ -161,7 +161,7 @@ module D3
|
|
161
161
|
###
|
162
162
|
### @return [Array<Integer>] the pkg ids known to d3
|
163
163
|
###
|
164
|
-
def self.all_ids(refresh = false)
|
164
|
+
def self.all_ids(refresh = false, api: JSS.api)
|
165
165
|
self.package_data(refresh).keys
|
166
166
|
end
|
167
167
|
|
@@ -171,7 +171,7 @@ module D3
|
|
171
171
|
###
|
172
172
|
### @return [Array<String>] the pkg names known to d3
|
173
173
|
###
|
174
|
-
def self.all_names(refresh = false)
|
174
|
+
def self.all_names(refresh = false, api: JSS.api)
|
175
175
|
self.package_data(refresh).values.map{|p| p[:name]}
|
176
176
|
end
|
177
177
|
|
@@ -370,7 +370,7 @@ module D3
|
|
370
370
|
|
371
371
|
return nil unless id and id.is_a? Fixnum
|
372
372
|
|
373
|
-
return type == :pkg ? D3::Package.
|
373
|
+
return type == :pkg ? D3::Package.fetch(:id => id) : self.package_data[id]
|
374
374
|
end
|
375
375
|
|
376
376
|
### Get the most recent package on the server
|
@@ -386,7 +386,7 @@ module D3
|
|
386
386
|
# start with the highest id until we find an existing one
|
387
387
|
self.ids_for_basename(basename).sort.reverse.each do |id|
|
388
388
|
begin
|
389
|
-
pkg = D3::Package.
|
389
|
+
pkg = D3::Package.fetch :id => id
|
390
390
|
return pkg
|
391
391
|
rescue JSS::NoSuchItemError
|
392
392
|
next
|
@@ -558,7 +558,7 @@ module D3
|
|
558
558
|
|
559
559
|
args[:revision] ||= 1
|
560
560
|
|
561
|
-
jss_pkg = JSS::Package.
|
561
|
+
jss_pkg = JSS::Package.fetch :id => id
|
562
562
|
|
563
563
|
tmp_edition = "#{args[:basename]}-#{args[:version]}-#{args[:revision]}"
|
564
564
|
if self.all_editions.include? tmp_edition
|
@@ -37,9 +37,9 @@ module D3
|
|
37
37
|
# Run the make_live script if any
|
38
38
|
if script = D3::CONFIG.admin_make_live_script
|
39
39
|
if JSS::Script.all_names.include? script
|
40
|
-
code = JSS::Script.
|
40
|
+
code = JSS::Script.fetch(name: script).code
|
41
41
|
elsif JSS::Script.all_ids.include? script
|
42
|
-
code = JSS::Script.
|
42
|
+
code = JSS::Script.fetch(id: script).code
|
43
43
|
else
|
44
44
|
return nil
|
45
45
|
end
|
@@ -259,7 +259,7 @@ module D3
|
|
259
259
|
begin
|
260
260
|
D3::Client.set_env :pre_install, edition
|
261
261
|
D3.log "Running pre_install script for #{edition}", :info
|
262
|
-
(exit_status, output) = JSS::Script.
|
262
|
+
(exit_status, output) = JSS::Script.fetch(:id => @pre_install_script_id).run :verbose => verbose, :show_output => verbose
|
263
263
|
D3.log "Finished pre_install script for #{edition}", :debug
|
264
264
|
rescue D3::ScriptError
|
265
265
|
raise PreInstallError, $!
|
@@ -280,7 +280,7 @@ module D3
|
|
280
280
|
begin
|
281
281
|
D3::Client.set_env :post_install, edition
|
282
282
|
D3.log "Running post_install script for #{edition}", :info
|
283
|
-
(exit_status, output) = JSS::Script.
|
283
|
+
(exit_status, output) = JSS::Script.fetch(:id => @post_install_script_id).run :verbose => verbose, :show_output => verbose
|
284
284
|
D3.log "Finished post_install script for #{edition}", :debug
|
285
285
|
rescue D3::ScriptError
|
286
286
|
raise PostInstallError, $!
|
@@ -209,7 +209,7 @@ module D3
|
|
209
209
|
|
210
210
|
if d3_users.empty? and policy_users.empty?
|
211
211
|
# delete the script!
|
212
|
-
JSS::Script.
|
212
|
+
JSS::Script.fetch(id: victim_script_id).delete
|
213
213
|
script_deletion_actions << "deleted #{type_display} script '#{victim_script_name}'"
|
214
214
|
else
|
215
215
|
# add the info to the returned report
|
@@ -281,7 +281,7 @@ INSERT INTO #{P_TABLE[:table_name]} (
|
|
281
281
|
end
|
282
282
|
|
283
283
|
# get the new script into the JSS
|
284
|
-
script = JSS::Script.
|
284
|
+
script = JSS::Script.make :name => args[:script_name]
|
285
285
|
script.contents = code
|
286
286
|
script.category = args[:script_category]
|
287
287
|
new_script_id = script.save
|
@@ -306,7 +306,7 @@ INSERT INTO #{P_TABLE[:table_name]} (
|
|
306
306
|
|
307
307
|
# delete the old?
|
308
308
|
if args[:delete_current] and old_script_id
|
309
|
-
JSS::Script.
|
309
|
+
JSS::Script.fetch(:id => old_script_id).delete if JSS::Script.all_ids.include? old_script_id
|
310
310
|
end
|
311
311
|
|
312
312
|
new_script_id
|
@@ -346,7 +346,7 @@ INSERT INTO #{P_TABLE[:table_name]} (
|
|
346
346
|
# delete them if we should
|
347
347
|
deprecated_ids.each do |id|
|
348
348
|
next if deprecated_ids_to_keep.include? id
|
349
|
-
victim = D3::Package.
|
349
|
+
victim = D3::Package.fetch(:id => id)
|
350
350
|
victim.delete(
|
351
351
|
admin: admin,
|
352
352
|
keep_scripts: false,
|
@@ -378,7 +378,7 @@ INSERT INTO #{P_TABLE[:table_name]} (
|
|
378
378
|
# delete them if we should
|
379
379
|
skipped_ids.each do |id|
|
380
380
|
next if skipped_ids_to_keep.include? id
|
381
|
-
victim = D3::Package.
|
381
|
+
victim = D3::Package.fetch(:id => id)
|
382
382
|
victim.delete(
|
383
383
|
admin: admin,
|
384
384
|
keep_scripts: false,
|
@@ -76,7 +76,7 @@ module D3
|
|
76
76
|
@custom_expiration = args[:custom_expiration]
|
77
77
|
@status = args[:status]
|
78
78
|
|
79
|
-
@id =
|
79
|
+
@id = D3::Package.ids_to_editions.invert[edition]
|
80
80
|
|
81
81
|
raise JSS::InvalidDataError, "Edition #{edition} doesn't exist in d3." unless @id
|
82
82
|
|
@@ -95,7 +95,7 @@ module D3
|
|
95
95
|
install_args[:expiration] = @custom_expiration if @custom_expiration
|
96
96
|
|
97
97
|
# install it - this will remove it from the queue if successful
|
98
|
-
D3::Package.
|
98
|
+
D3::Package.fetch(:edition => edition).install(install_args)
|
99
99
|
ensure
|
100
100
|
# but we need to remove it even if not successfull, so it doesn't
|
101
101
|
# keep trying and failing (and reminding the users)
|
data/lib/d3/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: depot3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Lasell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: ruby-
|
14
|
+
name: ruby-jss
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - "
|
19
|
+
version: 0.6.6
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '2.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - "
|
29
|
+
version: 0.6.6
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '2.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name: ruby-
|
34
|
+
name: ruby-keychain
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
40
|
-
- - "
|
39
|
+
version: '0.2'
|
40
|
+
- - ">"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.2.0
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0.
|
50
|
-
- - "
|
49
|
+
version: '0.2'
|
50
|
+
- - ">"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.
|
52
|
+
version: 0.2.0
|
53
53
|
description: |
|
54
54
|
d3 extends the package-deployment capabilities of Jamf Pro, an enterprise/education
|
55
55
|
tool for managing Apple devices.
|
@@ -61,17 +61,9 @@ executables:
|
|
61
61
|
- d3helper
|
62
62
|
- puppytime
|
63
63
|
extensions: []
|
64
|
-
extra_rdoc_files:
|
65
|
-
- README.md
|
66
|
-
- LICENSE.txt
|
67
|
-
- CHANGES.md
|
68
|
-
- THANKS.md
|
64
|
+
extra_rdoc_files: []
|
69
65
|
files:
|
70
66
|
- ".yardopts"
|
71
|
-
- CHANGES.md
|
72
|
-
- LICENSE.txt
|
73
|
-
- README.md
|
74
|
-
- THANKS.md
|
75
67
|
- bin/d3
|
76
68
|
- bin/d3admin
|
77
69
|
- bin/d3helper
|
@@ -188,12 +180,7 @@ licenses:
|
|
188
180
|
- Apache-2.0 WITH Modifications
|
189
181
|
metadata: {}
|
190
182
|
post_install_message:
|
191
|
-
rdoc_options:
|
192
|
-
- "--title"
|
193
|
-
- Depot3
|
194
|
-
- "--line-numbers"
|
195
|
-
- "--main"
|
196
|
-
- README.md
|
183
|
+
rdoc_options: []
|
197
184
|
require_paths:
|
198
185
|
- lib
|
199
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -208,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
195
|
version: '0'
|
209
196
|
requirements: []
|
210
197
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
198
|
+
rubygems_version: 2.7.7
|
212
199
|
signing_key:
|
213
200
|
specification_version: 4
|
214
201
|
summary: A package/patch management system for OS X which extends the capabilites
|
data/CHANGES.md
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
# Change History
|
2
|
-
|
3
|
-
## v3.0.20 - 2018-06-27
|
4
|
-
- Added: validate that a pkg is available via cloud before trying to install it that way
|
5
|
-
- Change: better backtrace logging
|
6
|
-
- Change: better error reporting when client passwd retrieval fails
|
7
|
-
- Fix: bug preventing puppies to install from the puppy queue
|
8
|
-
|
9
|
-
## v3.0.19 - 2018-03-31
|
10
|
-
- Added: signing identity and signing prefs to d3admin add, when building .pkgs
|
11
|
-
- Added: A default description editer (e.g. vi, emacs, pico) can be saved in admin prefs
|
12
|
-
- Fix: return nil when asked for current foreground application on client, and there is none.
|
13
|
-
|
14
|
-
## v3.0.18 - 2017-12-01
|
15
|
-
- Change: D3::Client.install: freeze prev. installed rcpts when 'freeze on install' requested.
|
16
|
-
|
17
|
-
## v3.0.17 - 2017-07-14
|
18
|
-
- Fix: D3::Package.upload_master_file, call #update after #super
|
19
|
-
|
20
|
-
## v3.0.16 - 2017-04-10
|
21
|
-
- Update: Max DB schema version bumped for 9.98 and 9.99
|
22
|
-
|
23
|
-
## v3.0.15 - 2017-02-28
|
24
|
-
- Bugfix: now correctly finds the most recent timestamp for an expiration path coming to the foreground
|
25
|
-
|
26
|
-
## v3.0.14 - 2016-12-08
|
27
|
-
|
28
|
-
- Bugfix: Stored receipts with the singular 'prohibiting_process' are now handled and updated to the plural 'prohibiting_processes'
|
29
|
-
|
30
|
-
## v3.0.13 - 2016-12-07
|
31
|
-
|
32
|
-
- Change: Updated CHANGES.md
|
33
|
-
- Change: Updated depot3.gemspec to require ruby-jss v0.6.6
|
34
|
-
|
35
|
-
## v3.0.12 - 2016-12-07
|
36
|
-
|
37
|
-
- Change: Packages can how have multiple 'prohibiting proceses', which are entered as a comma-separated string of process names. If any one of them is running at install or uninstall, an error is raised. Use --force to override.
|
38
|
-
|
39
|
-
|
40
|
-
## v3.0.11 - 2016-08-10
|
41
|
-
|
42
|
-
- Change: Eliminate DEFAULT_CPU_TYPE constant in favor of DEFAULT_PROCESSOR
|
43
|
-
- Fix: Prevent debug logging before it's asked for
|
44
|
-
- Change: added 'forget' action to d3, removes local receipt without attempting uninstall
|
45
|
-
- Fix: Client.update_receipts is more efficient now, only updating a rcpt once per run if needed
|
46
|
-
- Change: Client.sync now does "clean_missing_receipts" - after doing updates,to remove rcpts that are missing from d3
|
47
|
-
- Change: github issue #25 expiration path is now 'expiration paths' and can take a comma-separated list of paths. Any one of them coming to the foreground counts as 'being used' and will prevent expiration of the package. This is useful for single packages that install multiple apps, such as Microsoft Office.
|
48
|
-
|
49
|
-
## v3.0.10 - 2016-07-25 (unreleased)
|
50
|
-
|
51
|
-
- Fix: github issue #14 Don't crash when there's no rcpt file.
|
52
|
-
- Fix: github issue #21 d3: ArgumentError: Unknown d3 action: list_queue
|
53
|
-
- Change: remove hard-coded client timeout, use whatever is in ruby-jss.conf
|
54
|
-
- Fix: github issue #13 when adding pkgs with new version, revision resets to 1 by default.
|
55
|
-
- Fix: github issue #12allow 'n' or 'none' to unset expiration path
|
56
|
-
- Added: method D3::Admin::Auth.connected?
|
57
|
-
- Fix: no attempt to write log if it isn't writable to the user
|
58
|
-
- Change: bump max DB schema version to 9.93
|
59
|
-
- Change: remove 2-line log entries
|
60
|
-
- Change: d3admin: default to deleting unused scripts whe deleting packages
|
61
|
-
- Fix: d3 & d3admin: don't check the TTY unless there is one
|
62
|
-
|
63
|
-
## v3.0.9 - 2016-04-11
|
64
|
-
|
65
|
-
- d3: better text feedback during manual installs.
|
66
|
-
- Package.all_filenames: limit list to d3 packages, not all JSS packages.
|
67
|
-
- Client::Receript.add\_receipt: log "replaced" only when really replacing.
|
68
|
-
- d3helper: clean up rcpt import, add pkg ids, admin name.
|
69
|
-
- README: better contact info
|
70
|
-
- lots of comment changes for YARD parsing fix
|
71
|
-
- Package::Validate.check\_for\_exlusions: bugfix
|
72
|
-
- Added D3::DEBUG_FILE support for d3, d3admin, & d3helper. Used getting debug logging/output when d3 command is embedded in other tools. If the file /tmp/d3debug-on exists, it's the same using the --debug option
|
73
|
-
- d3: actions that don't need server connections can be done witout root: list-installed, list-manual, list-pilot, list-frozen, list-queue
|
74
|
-
|
75
|
-
## v3.0.8 - 2016-04-01
|
76
|
-
|
77
|
-
- Fix: pre- and post-install script failures no longer cause fatal exceptions, halting sync. Instead the error is reported, the package skipped, and the sync continues.
|
78
|
-
|
79
|
-
## v3.0.7 - 2016-04-01
|
80
|
-
|
81
|
-
Initial open source release
|
82
|
-
|
83
|
-
## v3.0.6 - 2016-03-28
|
84
|
-
|
85
|
-
Pixar internal release of v3.
|
data/LICENSE.txt
DELETED
@@ -1,174 +0,0 @@
|
|
1
|
-
|
2
|
-
Modified Apache 2.0 License
|
3
|
-
|
4
|
-
|
5
|
-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
6
|
-
|
7
|
-
1. Definitions.
|
8
|
-
|
9
|
-
"License" shall mean the terms and conditions for use, reproduction,
|
10
|
-
and distribution as defined by Sections 1 through 9 of this document.
|
11
|
-
|
12
|
-
"Licensor" shall mean the copyright owner or entity authorized by
|
13
|
-
the copyright owner that is granting the License.
|
14
|
-
|
15
|
-
"Legal Entity" shall mean the union of the acting entity and all
|
16
|
-
other entities that control, are controlled by, or are under common
|
17
|
-
control with that entity. For the purposes of this definition,
|
18
|
-
"control" means (i) the power, direct or indirect, to cause the
|
19
|
-
direction or management of such entity, whether by contract or
|
20
|
-
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
21
|
-
outstanding shares, or (iii) beneficial ownership of such entity.
|
22
|
-
|
23
|
-
"You" (or "Your") shall mean an individual or Legal Entity
|
24
|
-
exercising permissions granted by this License.
|
25
|
-
|
26
|
-
"Source" form shall mean the preferred form for making modifications,
|
27
|
-
including but not limited to software source code, documentation
|
28
|
-
source, and configuration files.
|
29
|
-
|
30
|
-
"Object" form shall mean any form resulting from mechanical
|
31
|
-
transformation or translation of a Source form, including but
|
32
|
-
not limited to compiled object code, generated documentation,
|
33
|
-
and conversions to other media types.
|
34
|
-
|
35
|
-
"Work" shall mean the work of authorship, whether in Source or
|
36
|
-
Object form, made available under the License, as indicated by a
|
37
|
-
copyright notice that is included in or attached to the work
|
38
|
-
(an example is provided in the Appendix below).
|
39
|
-
|
40
|
-
"Derivative Works" shall mean any work, whether in Source or Object
|
41
|
-
form, that is based on (or derived from) the Work and for which the
|
42
|
-
editorial revisions, annotations, elaborations, or other modifications
|
43
|
-
represent, as a whole, an original work of authorship. For the purposes
|
44
|
-
of this License, Derivative Works shall not include works that remain
|
45
|
-
separable from, or merely link (or bind by name) to the interfaces of,
|
46
|
-
the Work and Derivative Works thereof.
|
47
|
-
|
48
|
-
"Contribution" shall mean any work of authorship, including
|
49
|
-
the original version of the Work and any modifications or additions
|
50
|
-
to that Work or Derivative Works thereof, that is intentionally
|
51
|
-
submitted to Licensor for inclusion in the Work by the copyright owner
|
52
|
-
or by an individual or Legal Entity authorized to submit on behalf of
|
53
|
-
the copyright owner. For the purposes of this definition, "submitted"
|
54
|
-
means any form of electronic, verbal, or written communication sent
|
55
|
-
to the Licensor or its representatives, including but not limited to
|
56
|
-
communication on electronic mailing lists, source code control systems,
|
57
|
-
and issue tracking systems that are managed by, or on behalf of, the
|
58
|
-
Licensor for the purpose of discussing and improving the Work, but
|
59
|
-
excluding communication that is conspicuously marked or otherwise
|
60
|
-
designated in writing by the copyright owner as "Not a Contribution."
|
61
|
-
|
62
|
-
"Contributor" shall mean Licensor and any individual or Legal Entity
|
63
|
-
on behalf of whom a Contribution has been received by Licensor and
|
64
|
-
subsequently incorporated within the Work.
|
65
|
-
|
66
|
-
2. Grant of Copyright License. Subject to the terms and conditions of
|
67
|
-
this License, each Contributor hereby grants to You a perpetual,
|
68
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
69
|
-
copyright license to reproduce, prepare Derivative Works of,
|
70
|
-
publicly display, publicly perform, sublicense, and distribute the
|
71
|
-
Work and such Derivative Works in Source or Object form.
|
72
|
-
|
73
|
-
3. Grant of Patent License. Subject to the terms and conditions of
|
74
|
-
this License, each Contributor hereby grants to You a perpetual,
|
75
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
76
|
-
(except as stated in this section) patent license to make, have made,
|
77
|
-
use, offer to sell, sell, import, and otherwise transfer the Work,
|
78
|
-
where such license applies only to those patent claims licensable
|
79
|
-
by such Contributor that are necessarily infringed by their
|
80
|
-
Contribution(s) alone or by combination of their Contribution(s)
|
81
|
-
with the Work to which such Contribution(s) was submitted. If You
|
82
|
-
institute patent litigation against any entity (including a
|
83
|
-
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
84
|
-
or a Contribution incorporated within the Work constitutes direct
|
85
|
-
or contributory patent infringement, then any patent licenses
|
86
|
-
granted to You under this License for that Work shall terminate
|
87
|
-
as of the date such litigation is filed.
|
88
|
-
|
89
|
-
4. Redistribution. You may reproduce and distribute copies of the
|
90
|
-
Work or Derivative Works thereof in any medium, with or without
|
91
|
-
modifications, and in Source or Object form, provided that You
|
92
|
-
meet the following conditions:
|
93
|
-
|
94
|
-
(a) You must give any other recipients of the Work or
|
95
|
-
Derivative Works a copy of this License; and
|
96
|
-
|
97
|
-
(b) You must cause any modified files to carry prominent notices
|
98
|
-
stating that You changed the files; and
|
99
|
-
|
100
|
-
(c) You must retain, in the Source form of any Derivative Works
|
101
|
-
that You distribute, all copyright, patent, trademark, and
|
102
|
-
attribution notices from the Source form of the Work,
|
103
|
-
excluding those notices that do not pertain to any part of
|
104
|
-
the Derivative Works; and
|
105
|
-
|
106
|
-
(d) If the Work includes a "NOTICE" text file as part of its
|
107
|
-
distribution, then any Derivative Works that You distribute must
|
108
|
-
include a readable copy of the attribution notices contained
|
109
|
-
within such NOTICE file, excluding those notices that do not
|
110
|
-
pertain to any part of the Derivative Works, in at least one
|
111
|
-
of the following places: within a NOTICE text file distributed
|
112
|
-
as part of the Derivative Works; within the Source form or
|
113
|
-
documentation, if provided along with the Derivative Works; or,
|
114
|
-
within a display generated by the Derivative Works, if and
|
115
|
-
wherever such third-party notices normally appear. The contents
|
116
|
-
of the NOTICE file are for informational purposes only and
|
117
|
-
do not modify the License. You may add Your own attribution
|
118
|
-
notices within Derivative Works that You distribute, alongside
|
119
|
-
or as an addendum to the NOTICE text from the Work, provided
|
120
|
-
that such additional attribution notices cannot be construed
|
121
|
-
as modifying the License.
|
122
|
-
|
123
|
-
You may add Your own copyright statement to Your modifications and
|
124
|
-
may provide additional or different license terms and conditions
|
125
|
-
for use, reproduction, or distribution of Your modifications, or
|
126
|
-
for any such Derivative Works as a whole, provided Your use,
|
127
|
-
reproduction, and distribution of the Work otherwise complies with
|
128
|
-
the conditions stated in this License.
|
129
|
-
|
130
|
-
5. Submission of Contributions. Unless You explicitly state otherwise,
|
131
|
-
any Contribution intentionally submitted for inclusion in the Work
|
132
|
-
by You to the Licensor shall be under the terms and conditions of
|
133
|
-
this License, without any additional terms or conditions.
|
134
|
-
Notwithstanding the above, nothing herein shall supersede or modify
|
135
|
-
the terms of any separate license agreement you may have executed
|
136
|
-
with Licensor regarding such Contributions.
|
137
|
-
|
138
|
-
6. Trademarks. This License does not grant permission to use the trade
|
139
|
-
names, trademarks, service marks, or product names of the Licensor
|
140
|
-
and its affiliates, except as required to comply with Section 4(c) of
|
141
|
-
the License and to reproduce the content of the NOTICE file.
|
142
|
-
|
143
|
-
7. Disclaimer of Warranty. Unless required by applicable law or
|
144
|
-
agreed to in writing, Licensor provides the Work (and each
|
145
|
-
Contributor provides its Contributions) on an "AS IS" BASIS,
|
146
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
147
|
-
implied, including, without limitation, any warranties or conditions
|
148
|
-
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
149
|
-
PARTICULAR PURPOSE. You are solely responsible for determining the
|
150
|
-
appropriateness of using or redistributing the Work and assume any
|
151
|
-
risks associated with Your exercise of permissions under this License.
|
152
|
-
|
153
|
-
8. Limitation of Liability. In no event and under no legal theory,
|
154
|
-
whether in tort (including negligence), contract, or otherwise,
|
155
|
-
unless required by applicable law (such as deliberate and grossly
|
156
|
-
negligent acts) or agreed to in writing, shall any Contributor be
|
157
|
-
liable to You for damages, including any direct, indirect, special,
|
158
|
-
incidental, or consequential damages of any character arising as a
|
159
|
-
result of this License or out of the use or inability to use the
|
160
|
-
Work (including but not limited to damages for loss of goodwill,
|
161
|
-
work stoppage, computer failure or malfunction, or any and all
|
162
|
-
other commercial damages or losses), even if such Contributor
|
163
|
-
has been advised of the possibility of such damages.
|
164
|
-
|
165
|
-
9. Accepting Warranty or Additional Liability. While redistributing
|
166
|
-
the Work or Derivative Works thereof, You may choose to offer,
|
167
|
-
and charge a fee for, acceptance of support, warranty, indemnity,
|
168
|
-
or other liability obligations and/or rights consistent with this
|
169
|
-
License. However, in accepting such obligations, You may act only
|
170
|
-
on Your own behalf and on Your sole responsibility, not on behalf
|
171
|
-
of any other Contributor, and only if You agree to indemnify,
|
172
|
-
defend, and hold each Contributor harmless for any liability
|
173
|
-
incurred by, or claims asserted against, such Contributor by reason
|
174
|
-
of your accepting any such warranty or additional liability.
|
data/README.md
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
# d3 - Command line package and patch management for Jamf Pro
|
2
|
-
|
3
|
-
d3 (a.k.a. depot3) is a package deployment and patch management system for OS X that enhances
|
4
|
-
[Jamf Pro](https://www.jamf.com/products/jamf-pro/), an enterprise-level management system for Apple devices. It was created by [Pixar Animation Studios](http://www.pixar.com/).
|
5
|
-
|
6
|
-
|
7
|
-
d3 adds these capabilities and more to Jamf Pro's package handling:
|
8
|
-
|
9
|
-
* Automatic software updates on clients when new versions are released on the server
|
10
|
-
* Pre-release piloting of new packages
|
11
|
-
* Customizable slideshow presented during logout/reboot installs
|
12
|
-
* Installs and uninstalls are conditional on the exit status of pre-flight scripts
|
13
|
-
* Packages can be expired (auto-uninstalled) after a period of disuse
|
14
|
-
* Both the client and admin tools are command-line only and fully scriptable
|
15
|
-
* Admin command-line options allow integration with developer workflows and package-retrieval tools
|
16
|
-
|
17
|
-
d3 is written in Ruby and available as a rubygem called ['depot3'](https://rubygems.org/gems/depot3). It interfaces with Jamf Pro via its REST API using [ruby-jss](https://github.com/PixarAnimationStudios/ruby-jss), a ruby module that provides simple and powerful access to the API. It also uses Jamf Pro's backend MySQL database directly to provide enhanced features.
|
18
|
-
|
19
|
-
## DOCUMENTATION
|
20
|
-
|
21
|
-
Full user/administrator documentation is available at the [GitHub project's wiki page](https://github.com/PixarAnimationStudios/depot3/wiki).
|
22
|
-
|
23
|
-
The developer documentation for the D3 ruby module is at [http://www.rubydoc.info/gems/depot3](http://www.rubydoc.info/gems/depot3).
|
24
|
-
|
25
|
-
Also check out [ruby-jss](https://github.com/PixarAnimationStudios/ruby-jss), which is used by d3, but is useful for working with the Jamf Pro REST API in any project.
|
26
|
-
|
27
|
-
|
28
|
-
## CONTACT
|
29
|
-
|
30
|
-
[Email](mailto:d3@pixar.com)
|
31
|
-
|
32
|
-
[Macadmins Slack Channel](https://macadmins.slack.com/messages/#d3/)(@glenfarclas17)
|
33
|
-
|
34
|
-
## LICENSE
|
35
|
-
|
36
|
-
Copyright 2017 Pixar
|
37
|
-
|
38
|
-
Licensed under the Apache License, Version 2.0 (the "Apache License")
|
39
|
-
with the following modification; you may not use d3 except in
|
40
|
-
compliance with the Apache License and the following modification to it:
|
41
|
-
|
42
|
-
Section 6. Trademarks. is deleted and replaced with:
|
43
|
-
|
44
|
-
> 6\. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required to comply with Section 4(c) of the License and to reproduce the content of the NOTICE file.
|
45
|
-
|
46
|
-
You may obtain a copy of the Apache License at
|
47
|
-
|
48
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
49
|
-
|
50
|
-
Unless required by applicable law or agreed to in writing, software
|
51
|
-
distributed under the Apache License with the above modification is
|
52
|
-
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
53
|
-
KIND, either express or implied. See the Apache License for the specific
|
54
|
-
language governing permissions and limitations under the Apache License.
|