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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '089ae350be52f905ecf9e24e573a1df6413ec77a'
4
- data.tar.gz: 8ed31750baba94203c0c6f54086b4c9047334519
2
+ SHA256:
3
+ metadata.gz: ed29147e7483a7d858d0bbf77beacff920818f1d08bd480d400c773993eff527
4
+ data.tar.gz: 9dd177ef915c02d4a237f2e650cd5257e0a6a4d3e1d74ce12604859aa28d798f
5
5
  SHA512:
6
- metadata.gz: 69507b0d010e99aa5777974b662793bb824bb74ce28eaef63b52f085672dcbdc0bc250f22eed69f4570e063dacf14df70fd1f202d4008c4d600880e6cbf68dee
7
- data.tar.gz: 77caf8b7619ef0ef1abe6b44924e72765fb52e652fce6a043d693f41257a13bcd7e33c4ef367d769506a196d7ad2c23a804f31298e606c347a887ec5b66f8b3b
6
+ metadata.gz: 0c368066a609db7b90da737e1fa623ecb195f461c7f426b61af21e01afec98efb982b47aa8aef985177ac460f6b4e15f1ef8e5337dad2aa02c1bb0f087ca5abc
7
+ data.tar.gz: 31984ef03b48ed993dda677c6cb936dae3e9f465fefbbdf82275efd6717ac01524c8e9cdef73128ad12bb8e2ae0d4489b05ababe7bd1df59186d81d3e8ea9aa0
@@ -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.new id: pkg_id
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.new(id: pkg_id_being_deprecated)
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.new(id: pkg_id) : nil
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.new id: pkg_id
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.new(id: victim_script_id).delete
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.new id: pkg_id
737
+ pkg = D3::Package.fetch id: pkg_id
738
738
 
739
739
  pkg_deets = <<-ENDDEETS
740
740
  *****************************************
@@ -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.new id: pkg_id
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
@@ -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.new(
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,
@@ -134,7 +134,7 @@ module D3
134
134
  return
135
135
  end
136
136
 
137
- computer = JSS::Computer.new name: computer_name
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.new name: computer_name
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.new :name => D3::CONFIG.report_receipts_ext_attr_name
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.new :name => D3::CONFIG.report_puppyq_ext_attr_name
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.new id: live_id
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.new id: live_basenames_to_ids[rcpt.basename]
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.new id: puppy.id
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.new(udid: JSS::Client.udid).computer_groups
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
@@ -236,7 +236,7 @@ module D3
236
236
  lines = []
237
237
  ids.each do |id|
238
238
  begin
239
- pkg = D3::Package.new id: id
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
-
@@ -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.new(:id => @id).uninstall(:verbose => verbose).exitstatus == 0
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.new(:id => @pre_remove_script_id).run :verbose => verbose, :show_output => verbose
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.new(:id => @post_remove_script_id).run :verbose => verbose, :show_output => verbose
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.new :id => @id
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.new(:id => id) : self.package_data[id]
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.new :id => id
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.new :id => id
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.new(name: script).code
40
+ code = JSS::Script.fetch(name: script).code
41
41
  elsif JSS::Script.all_ids.include? script
42
- code = JSS::Script.new(id: script).code
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.new(:id => @pre_install_script_id).run :verbose => verbose, :show_output => verbose
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.new(:id => @post_install_script_id).run :verbose => verbose, :show_output => verbose
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.new(id: victim_script_id).delete
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.new :id => :new, :name => args[:script_name]
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.new(:id => old_script_id).delete if JSS::Script.all_ids.include? old_script_id
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.new(:id => id)
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.new(:id => id)
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 = D3::Package.ids_to_editions.invert[edition]
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.new(:edition => edition).install(install_args)
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)
@@ -25,6 +25,6 @@
25
25
  ###
26
26
  module D3
27
27
 
28
- VERSION = '3.0.22'.freeze
28
+ VERSION = '3.0.26'.freeze
29
29
 
30
30
  end # module
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.22
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-06-27 00:00:00.000000000 Z
11
+ date: 2018-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ruby-keychain
14
+ name: ruby-jss
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
20
- - - ">"
19
+ version: 0.6.6
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.2.0
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: '0.2'
30
- - - ">"
29
+ version: 0.6.6
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.0
32
+ version: '2.0'
33
33
  - !ruby/object:Gem::Dependency
34
- name: ruby-jss
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.6'
40
- - - ">="
39
+ version: '0.2'
40
+ - - ">"
41
41
  - !ruby/object:Gem::Version
42
- version: 0.6.6
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.6'
50
- - - ">="
49
+ version: '0.2'
50
+ - - ">"
51
51
  - !ruby/object:Gem::Version
52
- version: 0.6.6
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.6.8
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.
@@ -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.
data/THANKS.md DELETED
@@ -1,7 +0,0 @@
1
- # With Thanks To...
2
-
3
- * Pixar Systems Management
4
- * Pixar's Tools-SE team
5
- * Aurica Hayes
6
- * Greg Neagle and the contributors to Munki
7
- * Alex