depot3 0.0.0a1 → 3.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +55 -1
  3. data/bin/d3 +323 -0
  4. data/bin/d3admin +1011 -0
  5. data/bin/d3helper +354 -0
  6. data/bin/puppytime +334 -0
  7. data/data/d3/com.pixar.d3.RepoMan.plist +23 -0
  8. data/data/d3/d3.conf.example +507 -0
  9. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftAppKit.dylib +0 -0
  10. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftCore.dylib +0 -0
  11. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftCoreData.dylib +0 -0
  12. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftCoreGraphics.dylib +0 -0
  13. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftCoreImage.dylib +0 -0
  14. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftDarwin.dylib +0 -0
  15. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftDispatch.dylib +0 -0
  16. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftFoundation.dylib +0 -0
  17. data/data/d3/d3RepoMan.app/Contents/Frameworks/libswiftObjectiveC.dylib +0 -0
  18. data/data/d3/d3RepoMan.app/Contents/Info.plist +56 -0
  19. data/data/d3/d3RepoMan.app/Contents/MacOS/d3RepoMan +0 -0
  20. data/data/d3/d3RepoMan.app/Contents/PkgInfo +1 -0
  21. data/data/d3/d3RepoMan.app/Contents/Resources/Base.lproj/MainMenu.nib +0 -0
  22. data/data/d3/d3RepoMan.app/Contents/Resources/last-foreground-times-template.plist +5 -0
  23. data/data/d3/d3RepoMan.app/Contents/_CodeSignature/CodeResources +214 -0
  24. data/data/d3/puppytime/ImageLicenses.txt +165 -0
  25. data/data/d3/puppytime/notification_image +1 -0
  26. data/data/d3/puppytime/opt_out_image +1 -0
  27. data/data/d3/puppytime/slideshow/2008-07-11_White_German_Shepherd_pup_chilling_at_the_Coker_Arboretum.jpg +0 -0
  28. data/data/d3/puppytime/slideshow/2009-04-21_APBT_pup_on_deck.jpg +0 -0
  29. data/data/d3/puppytime/slideshow/A_puppy_Yorkie.jpg +0 -0
  30. data/data/d3/puppytime/slideshow/Alert_Pug_Puppy.jpg +0 -0
  31. data/data/d3/puppytime/slideshow/Australian_Cattle_Dog_puppies_04.JPG +0 -0
  32. data/data/d3/puppytime/slideshow/Beagle_puppy_Cadet.jpg +0 -0
  33. data/data/d3/puppytime/slideshow/Bernese_Mountain_Dog.jpg +0 -0
  34. data/data/d3/puppytime/slideshow/Bloodhound_Puppy.jpg +0 -0
  35. data/data/d3/puppytime/slideshow/Boston_terrier_with_toy.jpg +0 -0
  36. data/data/d3/puppytime/slideshow/Boxer_puppy_fawn_portrai.jpg +0 -0
  37. data/data/d3/puppytime/slideshow/Caracal_kitten.jpg +0 -0
  38. data/data/d3/puppytime/slideshow/Chihuahua_&_Doberman_Pup.jpg +0 -0
  39. data/data/d3/puppytime/slideshow/Cuccioli_di_Margot_a_35_gg_Basenjis.jpg +0 -0
  40. data/data/d3/puppytime/slideshow/Dalmatian_puppy_03.jpg +0 -0
  41. data/data/d3/puppytime/slideshow/GoldenRetrieverPuppyDaisyParker.JPG +0 -0
  42. data/data/d3/puppytime/slideshow/Green_eyed_beige_Chihuahua.jpg +0 -0
  43. data/data/d3/puppytime/slideshow/Let_Sleeping_Dogs_Lie.jpg +0 -0
  44. data/data/d3/puppytime/slideshow/Meatball_-_French_Bulldog_Puppy.jpg +0 -0
  45. data/data/d3/puppytime/slideshow/Oola_-_9_weeks.jpg +0 -0
  46. data/data/d3/puppytime/slideshow/Pancho0008.JPG +0 -0
  47. data/data/d3/puppytime/slideshow/Pomeranian_orange-sable_Coco.jpg +0 -0
  48. data/data/d3/puppytime/slideshow/Pug_puppy_001.jpg +0 -0
  49. data/data/d3/puppytime/slideshow/Puggle_puppy_6_weeks.JPG +0 -0
  50. data/data/d3/puppytime/slideshow/Puli_kan.jpg +0 -0
  51. data/data/d3/puppytime/slideshow/Puppy_French_Bulldog.jpg +0 -0
  52. data/data/d3/puppytime/slideshow/Rocco_the_Bulldog.jpg +0 -0
  53. data/data/d3/puppytime/slideshow/Rottweiler_Face.jpg +0 -0
  54. data/data/d3/puppytime/slideshow/Saint_Bernard_puppy.jpg +0 -0
  55. data/data/d3/puppytime/slideshow/Scottish_froment.jpg +0 -0
  56. data/data/d3/puppytime/slideshow/Shar_pei_puppy_(age_2_months).jpg +0 -0
  57. data/data/d3/puppytime/slideshow/Shiba-Inu_beim_Spielen_im_Schnee.JPG +0 -0
  58. data/data/d3/puppytime/slideshow/Smooth-coat_Border_Collie_puppy..jpg +0 -0
  59. data/data/d3/puppytime/slideshow/Smooth_Dachshund_puppies.jpg +0 -0
  60. data/data/d3/puppytime/slideshow/Snow_dog.jpg +0 -0
  61. data/data/d3/puppytime/slideshow/Taylor_the_Pembroke_Welsh_Corgi.png +0 -0
  62. data/data/d3/puppytime/slideshow/Weim_Pups_001.jpg +0 -0
  63. data/data/d3/puppytime/slideshow/Westie_pups.jpg +0 -0
  64. data/data/d3/puppytime/slideshow/Yellow_Labrador_puppies_(4165737325).jpg +0 -0
  65. data/lib/d3/admin/add.rb +451 -0
  66. data/lib/d3/admin/auth.rb +470 -0
  67. data/lib/d3/admin/edit.rb +297 -0
  68. data/lib/d3/admin/help.rb +396 -0
  69. data/lib/d3/admin/interactive.rb +972 -0
  70. data/lib/d3/admin/options.rb +454 -0
  71. data/lib/d3/admin/prefs.rb +204 -0
  72. data/lib/d3/admin/report.rb +727 -0
  73. data/lib/d3/admin/state.rb +42 -0
  74. data/lib/d3/admin/validate.rb +413 -0
  75. data/lib/d3/admin.rb +42 -0
  76. data/lib/d3/basename.rb +217 -0
  77. data/lib/d3/client/auth.rb +108 -0
  78. data/lib/d3/client/class_methods.rb +766 -0
  79. data/lib/d3/client/class_variables.rb +47 -0
  80. data/lib/d3/client/cli.rb +187 -0
  81. data/lib/d3/client/environment.rb +134 -0
  82. data/lib/d3/client/help.rb +110 -0
  83. data/lib/d3/client/lists.rb +314 -0
  84. data/lib/d3/client/receipt.rb +1173 -0
  85. data/lib/d3/client.rb +45 -0
  86. data/lib/d3/configuration.rb +319 -0
  87. data/lib/d3/constants.rb +60 -0
  88. data/lib/d3/database.rb +488 -0
  89. data/lib/d3/exceptions.rb +44 -0
  90. data/lib/d3/log.rb +271 -0
  91. data/lib/d3/package/aliases.rb +80 -0
  92. data/lib/d3/package/attributes.rb +97 -0
  93. data/lib/d3/package/class_methods.rb +817 -0
  94. data/lib/d3/package/class_variables.rb +46 -0
  95. data/lib/d3/package/client_actions.rb +293 -0
  96. data/lib/d3/package/constants.rb +58 -0
  97. data/lib/d3/package/constructor.rb +191 -0
  98. data/lib/d3/package/getters.rb +164 -0
  99. data/lib/d3/package/mixins.rb +39 -0
  100. data/lib/d3/package/private_methods.rb +227 -0
  101. data/lib/d3/package/questions.rb +95 -0
  102. data/lib/d3/package/server_actions.rb +683 -0
  103. data/lib/d3/package/setters.rb +326 -0
  104. data/lib/d3/package/validate.rb +448 -0
  105. data/lib/d3/package.rb +51 -0
  106. data/lib/d3/puppytime/pending_puppy.rb +108 -0
  107. data/lib/d3/puppytime/puppy_queue.rb +274 -0
  108. data/lib/d3/puppytime.rb +68 -0
  109. data/lib/d3/state.rb +105 -0
  110. data/lib/d3/utility.rb +325 -0
  111. data/lib/d3/version.rb +1 -1
  112. metadata +162 -9
data/lib/d3/log.rb ADDED
@@ -0,0 +1,271 @@
1
+ ### Copyright 2016 Pixar
2
+ ###
3
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
+ ### with the following modification; you may not use this file except in
5
+ ### compliance with the Apache License and the following modification to it:
6
+ ### Section 6. Trademarks. is deleted and replaced with:
7
+ ###
8
+ ### 6. Trademarks. This License does not grant permission to use the trade
9
+ ### names, trademarks, service marks, or product names of the Licensor
10
+ ### and its affiliates, except as required to comply with Section 4(c) of
11
+ ### the License and to reproduce the content of the NOTICE file.
12
+ ###
13
+ ### You may obtain a copy of the Apache License at
14
+ ###
15
+ ### http://www.apache.org/licenses/LICENSE-2.0
16
+ ###
17
+ ### Unless required by applicable law or agreed to in writing, software
18
+ ### distributed under the Apache License with the above modification is
19
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
+ ### KIND, either express or implied. See the Apache License for the specific
21
+ ### language governing permissions and limitations under the Apache License.
22
+ ###
23
+ ###
24
+
25
+
26
+ module D3
27
+
28
+ ### Log a message to the d3 log, possibly sending it to stderr as well.
29
+ ###
30
+ ### The message will appear in the log based upon its severity level,
31
+ ### and the current D3::Log.level. Any message more severe than the log level
32
+ ### will be logged.
33
+ ###
34
+ ### The message will appear on stderr if the message severity is
35
+ ### at or higher than the current @@verbosity. If the @@verbosity is :debug
36
+ ### the messages to stderr will be prefixed with the message severity.
37
+ ###
38
+ ### In the d3 command, @@verbosity is controlled with the -v, -q and -d
39
+ ### options
40
+ ###
41
+ ### See also D3::Log.log and the ruby Logger module.
42
+ ### See also D3::verbosity=
43
+ ###
44
+ ### @param msg[String] the message to log
45
+ ###
46
+ ### @param severity[Symbol] the severity level of this message, defaults to
47
+ ### D3::Log::DFT_LOG_LEVEL
48
+ ###
49
+ ### @return [void]
50
+ ###
51
+ def self.log (msg, severity = D3::Log::DFT_LOG_LEVEL)
52
+
53
+ message_severity = D3::Log.check_level(severity)
54
+
55
+ # send to stderr if needed
56
+ if message_severity >= @@verbosity
57
+ if @@verbosity == D3::Log::LOG_LEVELS[:debug]
58
+ STDERR.puts "#{severity}: #{msg}"
59
+ else
60
+ STDERR.puts msg
61
+ end
62
+ end #
63
+
64
+ # can't write to the log unless we're super user
65
+ return unless JSS.superuser?
66
+
67
+ # send to the logger
68
+ D3::Log.instance.log msg, severity
69
+
70
+ end
71
+
72
+ ### Log the lines of backtrace from the most recent exception
73
+ ### but only if the current severity is :debug
74
+ def self.log_backtrace
75
+ return unless D3::LOG.level == :debug
76
+ $@.each{|line| D3.log " #{line}", :debug }
77
+ end
78
+
79
+
80
+
81
+ class Log
82
+
83
+ ################# Mixin Modules #################
84
+
85
+ include Singleton
86
+
87
+ ################# Class Constants #################
88
+
89
+ # The default log file
90
+ DFT_LOG_FILE = "/var/log/d3.log"
91
+
92
+ # the possible log severity levels
93
+ LOG_LEVELS = {
94
+ :debug => Logger::DEBUG,
95
+ :info => Logger::INFO,
96
+ :warn => Logger::WARN,
97
+ :error => Logger::ERROR,
98
+ :fatal => Logger::FATAL
99
+ }
100
+
101
+ # the default log level
102
+ DFT_LOG_LEVEL = LOG_LEVELS[:info]
103
+
104
+ # the default verbosity level (logs to stderr)
105
+ DFT_VERBOSITY = LOG_LEVELS[:warn]
106
+
107
+ # THe "program name" that appears in the logs.
108
+ # see #progname=
109
+ DFT_LOG_PROGNAME = "d3-module"
110
+
111
+ # timestamp format, this is 2015-02-15 13:02:34
112
+ DFT_LOG_TIME_FMT = "%Y-%m-%d %H:%M:%S"
113
+
114
+
115
+
116
+ ################# Class Methods #################
117
+
118
+ ### Return the numeric value of a log level
119
+ ### or raise an exception if the level is invalid.
120
+ ###
121
+ ### @param level[Symbol, Integer] the level to check, should be one of the
122
+ ### keys of LOG_LEVELS
123
+ ###
124
+ ### @return [integer] the numeric value of the log level
125
+ ###
126
+ def self.check_level(level)
127
+ valid = true
128
+ case level
129
+ when Symbol
130
+ valid = false unless LOG_LEVELS.keys.include? level
131
+ value = LOG_LEVELS[level]
132
+ when Fixnum
133
+ valid = false unless LOG_LEVELS.values.include? level
134
+ value = level
135
+ else
136
+ valid = false
137
+ end #case
138
+ raise JSS::InvalidDataError, "Severity level must be one of :#{LOG_LEVELS.keys.join ', :'} OR #{LOG_LEVELS.values.join ', '}" unless valid
139
+ return value
140
+ end
141
+
142
+ ################# Attribtues #################
143
+
144
+ # @return [Pathname] the logfile being written
145
+ attr_reader :log_file
146
+
147
+ # @return [Symbol] the current severity level of logging
148
+ attr_reader :level
149
+
150
+ # @return [String] the strftime format of the timestamps in the log
151
+ attr_reader :timestamp_format
152
+
153
+ # @return [String] the program name associated with a log entry
154
+ attr_reader :progname
155
+
156
+ ################# Constructor #################
157
+
158
+ def initialize
159
+
160
+ # Set default values
161
+ @log_file = Pathname.new DFT_LOG_FILE
162
+ @level = DFT_LOG_LEVEL
163
+ @timestamp_format = DFT_LOG_TIME_FMT
164
+ @progname = DFT_LOG_PROGNAME
165
+
166
+
167
+ # Set values from config if available.
168
+ # @note: progname needs to be set by the prog using the module,
169
+ # e.g. d3, d3admin, d3helper
170
+ # not by the config
171
+ @log_file = Pathname.new(D3::CONFIG.log_file) if D3::CONFIG.log_file
172
+ @level = D3::CONFIG.log_level if D3::CONFIG.log_level
173
+ @timestamp_format = D3::CONFIG.log_timestamp_format if D3::CONFIG.log_timestamp_format
174
+
175
+ # the logger will be created when it's needed
176
+ @logger = nil
177
+
178
+
179
+
180
+ end # init
181
+
182
+ ################# Public Instance Methods #################
183
+
184
+ ### Access the logger, creating it if needed.
185
+ ### We don't make it when the instance is created because it
186
+ ### might want to write to a place we don't have permissions.
187
+ ### So anything that uses it will call this to create it when
188
+ ### its needed.
189
+ def the_logger
190
+ return @logger if @logger
191
+ # make logger if needed
192
+ unless @logger
193
+ @logger = Logger.new @log_file
194
+ set_format
195
+ end
196
+ @logger.level = D3::Log.check_level @level
197
+ return @logger
198
+ end
199
+
200
+ ### Send a message to be logged
201
+ ### If the severity is less severe than the current level,
202
+ ### the message won't be written to the log.
203
+ ###
204
+ ### @param msg[String] the message to write to the log
205
+ ###
206
+ ### @param severity[Symbol] the severity of this message.
207
+ ### If below the current log_level the message won't be written.
208
+ ### Must be one of the keys of LOG_LEVELS. Defaults to :info.
209
+ ###
210
+ ### @param progname[String] the name of the program creating this msg.
211
+ ### Defaults to the currently-set log_progname (see #log_progname=)
212
+ ### or DFT_LOG_PROGNAME.
213
+ ###
214
+ ### @return [Boolean] the message was handled appropriately, or not
215
+ ###
216
+ def log (msg, severity = DFT_LOG_LEVEL)
217
+ the_logger.add(D3::Log.check_level(severity), msg, @progname)
218
+ end
219
+
220
+ ### Set a new severity-level for logging.
221
+ ### Messages less severe than this won't be written to the log.
222
+ ###
223
+ ### @param new_level[Symbol] the new log level, must be one of the keys of D3::Log::LOG_LEVELS
224
+ ###
225
+ ### @return [void]
226
+ ###
227
+ def level= (new_level)
228
+ the_logger.level = D3::Log.check_level(new_level)
229
+ @level = new_level
230
+ end
231
+
232
+
233
+ ### Set a new program-name for log entries
234
+ ###
235
+ ### @param new_name[String] the new program name for log entries
236
+ ###
237
+ ### @return [void]
238
+ ###
239
+ def progname= (new_name)
240
+ @progname = new_name.to_s
241
+ set_format
242
+ end
243
+
244
+
245
+ ### Set a new timestamp format
246
+ ###
247
+ ### @param fmt[String] the new format, an strftime string.
248
+ ###
249
+ ### @return [void]
250
+ ###
251
+ def timestamp_format= (new_format)
252
+ new_format = new_format.to_s
253
+ the_logger.datetime_format = new_format
254
+ @timestamp_format = new_format
255
+ end # timestamp_format=
256
+
257
+ private
258
+
259
+ ### set up the log line format
260
+ def set_format
261
+ # set the line format
262
+ the_logger.formatter = proc do |severity, datetime, progname, msg|
263
+ "#{datetime.strftime @timestamp_format} #{progname} [#{$$}]: #{severity}: #{msg}\n"
264
+ end #
265
+ end
266
+ end # class Log
267
+
268
+ # the singleton instance of our logger
269
+ LOG = D3::Log.instance
270
+ end # module D3
271
+
@@ -0,0 +1,80 @@
1
+ ### Copyright 2016 Pixar
2
+ ###
3
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
+ ### with the following modification; you may not use this file except in
5
+ ### compliance with the Apache License and the following modification to it:
6
+ ### Section 6. Trademarks. is deleted and replaced with:
7
+ ###
8
+ ### 6. Trademarks. This License does not grant permission to use the trade
9
+ ### names, trademarks, service marks, or product names of the Licensor
10
+ ### and its affiliates, except as required to comply with Section 4(c) of
11
+ ### the License and to reproduce the content of the NOTICE file.
12
+ ###
13
+ ### You may obtain a copy of the Apache License at
14
+ ###
15
+ ### http://www.apache.org/licenses/LICENSE-2.0
16
+ ###
17
+ ### Unless required by applicable law or agreed to in writing, software
18
+ ### distributed under the Apache License with the above modification is
19
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
+ ### KIND, either express or implied. See the Apache License for the specific
21
+ ### language governing permissions and limitations under the Apache License.
22
+ ###
23
+ ###
24
+
25
+
26
+ module D3
27
+ class Package < JSS::Package
28
+
29
+ ################# Method Aliases #################
30
+
31
+ ### (intermixing them seems to make YARD documentation unhappy)
32
+ alias standard? standard
33
+ alias remove_first? remove_first
34
+
35
+ # aliases for getting the script names
36
+ alias pre_install pre_install_script_name
37
+ alias post_install post_install_script_name
38
+ alias pre_remove pre_remove_script_name
39
+ alias post_remove post_remove_script_name
40
+
41
+
42
+ alias pre_install_id pre_install_script_id
43
+ alias post_install_id post_install_script_id
44
+ alias pre_remove_id pre_remove_script_id
45
+ alias post_remove_id post_remove_script_id
46
+
47
+
48
+ # aliases for assigning scripts, since assignment methods
49
+ # can take ids, names, or paths
50
+ # clean these up someday!
51
+ alias pre_install_script= pre_install=
52
+ alias post_install_script= post_install=
53
+ alias pre_remove_script= pre_remove=
54
+ alias post_remove_script= post_remove=
55
+
56
+ alias pre_install_script_id= pre_install=
57
+ alias post_install_script_id= post_install=
58
+ alias pre_remove_script_id= pre_remove=
59
+ alias post_remove_script_id= post_remove=
60
+
61
+ alias pre_install_script_name= pre_install=
62
+ alias post_install_script_name= post_install=
63
+ alias pre_remove_script_name= pre_remove=
64
+ alias post_remove_script_name= post_remove=
65
+
66
+
67
+ alias release make_live
68
+
69
+ alias description notes
70
+ alias description= notes=
71
+ alias package_name name
72
+ alias package_name= name=
73
+
74
+ alias bom index
75
+ alias file_list installed_files
76
+ alias files installed_files
77
+
78
+
79
+ end # class Package
80
+ end # module D3
@@ -0,0 +1,97 @@
1
+ ### Copyright 2016 Pixar
2
+ ###
3
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
4
+ ### with the following modification; you may not use this file except in
5
+ ### compliance with the Apache License and the following modification to it:
6
+ ### Section 6. Trademarks. is deleted and replaced with:
7
+ ###
8
+ ### 6. Trademarks. This License does not grant permission to use the trade
9
+ ### names, trademarks, service marks, or product names of the Licensor
10
+ ### and its affiliates, except as required to comply with Section 4(c) of
11
+ ### the License and to reproduce the content of the NOTICE file.
12
+ ###
13
+ ### You may obtain a copy of the Apache License at
14
+ ###
15
+ ### http://www.apache.org/licenses/LICENSE-2.0
16
+ ###
17
+ ### Unless required by applicable law or agreed to in writing, software
18
+ ### distributed under the Apache License with the above modification is
19
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
+ ### KIND, either express or implied. See the Apache License for the specific
21
+ ### language governing permissions and limitations under the Apache License.
22
+ ###
23
+ ###
24
+
25
+
26
+ module D3
27
+ class Package < JSS::Package
28
+ ################# Instance Attributes #################
29
+
30
+ ### Note - I was tempted to set these up programmatically
31
+ ### using the keys of the P_FIELDS hash.
32
+ ### While that would make adding and removing field definitions
33
+ ### simpler, in that changes would be automatically reflected here,
34
+ ### It would also make the code less readable, more convoluted,
35
+ ### harder to document, and the documentation harder to read.
36
+ ### So here and in other places we're compromising DRY programming
37
+ ### for more human-usable code.
38
+ ###
39
+
40
+ ### See also, the attributes mixed in from D3::Basename
41
+
42
+ ### @return [Array<Hash>] the apple receipt data for the items installed by this pkg.
43
+ ### When .[m]pkgs are installed, their identifiers and metadata are recorded in the OS's receipts database
44
+ ### and are accessible via the pkgutil command. (e.g. pkgutil --pkg-info com.company.application). Storing it
45
+ ### in the DB allows us to do uninstalls and other client tasks without needing to index the pkg in Casper.
46
+ ### Each hash has these keys:
47
+ ### - :apple_pkg_id => String
48
+ ### - :version => String
49
+ ### - :installed_kb => Integer
50
+ attr_reader :apple_receipt_data
51
+
52
+ ### @return [Time] when was this package was added to d3
53
+ attr_reader :added_date
54
+
55
+ ### @return [String,nil] the login name of the admin who added this packge to d3
56
+ attr_reader :added_by
57
+
58
+ ### @return [Time,nil] when was this package made live in d3
59
+ attr_reader :release_date
60
+
61
+ ### @return [String,nil] the login name of the admin who made it live
62
+ attr_reader :released_by
63
+
64
+ ### @return [Boolean] does this pkg get installed automatically on all non-exluded clients?
65
+ attr_reader :standard
66
+
67
+ ### @return [Array] a list of JSS::ComputerGroup names whose members get this
68
+ ### package installed automatically
69
+ attr_reader :auto_groups
70
+
71
+ ### @return [Array] a list of JSS::ComputerGroup names for whose members this
72
+ ### package is not available without force
73
+ attr_reader :excluded_groups
74
+
75
+ ### @return [Boolean] should any currently installed versions of this basename
76
+ ### be uninstalled (if possible) before installing this package?
77
+ attr_reader :remove_first
78
+
79
+ ### @return [Integer,nil] the JSS::Script id of the pre-install script, if any
80
+ attr_reader :pre_install_script_id
81
+
82
+ ### @return [Integer,nil] the JSS::Script id of the post-install script, if any
83
+ attr_reader :post_install_script_id
84
+
85
+ ### @return [Integer,nil] the JSS::Script id of the pre-remove script, if any
86
+ attr_reader :pre_remove_script_id
87
+
88
+ ### @return [Integer,nil] the JSS::Script id of the post-remove script, if any
89
+ attr_reader :post_remove_script_id
90
+
91
+ ### @return [Boolean] does this pkg exist in the d3 pkg table?
92
+ attr_reader :in_d3
93
+
94
+ ### @return [Symbol] the current status of the pkg in d3
95
+ attr_reader :status
96
+ end # class Package
97
+ end # module D3