Module: D3::Admin
- Defined in:
- lib/d3/admin.rb,
lib/d3/admin/add.rb,
lib/d3/admin/auth.rb,
lib/d3/admin/edit.rb,
lib/d3/admin/help.rb,
lib/d3/admin/prefs.rb,
lib/d3/admin/state.rb,
lib/d3/admin/report.rb,
lib/d3/admin/options.rb,
lib/d3/admin/validate.rb,
lib/d3/admin/interactive.rb
Overview
D3::Admin provides the inner-workings of the d3admin command. See the various submodules, and d3admin itself, for details.
Defined Under Namespace
Modules: Add, Auth, Edit, Help, Interactive, Prefs, Report, Validate
Constant Summary collapse
- ACTIONS =
all the available actions
%w(add edit live delete info search report config help).freeze
- ACTIONS_NEEDING_ADMIN =
these actions write to the server and need a legit admin, not one listed in D3.badmins.
%w(add edit live delete).freeze
- CONFIG_TARGETS =
the possible targets to config
%w(all jss db dist workspace pkg-id-prefix editor).freeze
- TRUE_VALUES =
[true, /^true$/i, 1, /^y(es)?$/i].freeze
- FALSE_VALUES =
[false, /^false$/i, nil, 0, /^no?$/i].freeze
- DFT_REQUIRED =
'---Required---'.freeze
- DFT_NONE =
'none'.freeze
- DFT_PKG_TYPE =
:pkg
- DFT_PKG_ID_PREFIX =
'd3'.freeze
- DFT_WORKSPACE =
- DFT_EXPIRATION =
0
- DFT_LIST_TYPE =
:all
- DISPLAY_TRUE_FALSE =
proc { |v| case v; when *TRUE_VALUES then 'true'; when *FALSE_VALUES then 'false'; else 'unknown'; end }
- DISPLAY_DFT_REQUIRED =
proc { |v| v.to_s.empty? ? DFT_REQUIRED : v }
- DISPLAY_DFT_NONE =
proc { |v| v.to_s.empty? ? DFT_NONE : v }
- DISPLAY_COMMA_SEP_LIST =
proc { |v| DISPLAY_DFT_NONE.call JSS.to_s_and_a(v)[:stringform] }
- DISPLAY_PKG_TYPE =
proc { |v| v.to_s.start_with?('d') ? 'dmg' : 'pkg' }
- DISPLAY_LIST_TYPE =
proc { |v| v.to_s.empty? ? DFT_LIST_TYPE : v }
- OPTIONS =
This hash provides details about how to handle all possible CLI option values for d3admin, be they input from the command-line or via a walkthru
Each key matches a key/method in the @options OpenStruct in d3admin. representing the value for that option from the commandline.
For each one, there is a sub-hash defining these things:
:default: The global default value, before applying any inherited values from older pkgs, or user-specified values from the commandline or walkthru. Note these are the Ruby internal default values (e.g. nil) NOT the cli option default values (e.g. 'n') which are defined in the d3admins parse_cli method. :cli: the GetoptLong array for this commandline option :label: The lable for the value when when prompting for input or showing formatted details of the pkg. :display_conversion: A proc that converts the internally-used form of a value to something more human-readable (e.g. "none" instead of an empty string for a nil value) :get: the get_ method from D3::Admin::Interactive that is used to prompt for a new value for the attribute. :unsetable: This option can take "none" or "n" to set its value to nil :validate: the method from D3::Admin::Validate used to validate the value being provided and convert it to its internally-used form
{ # General help: { default: nil, cli: ['--help', '-h', GetoptLong::NO_ARGUMENT], label: 'View help', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil }, extended_help: { default: nil, cli: ['--extended-help', '-H', GetoptLong::NO_ARGUMENT], label: 'View extended help', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil }, walkthru: { default: nil, cli: ['--walkthru', '-w', GetoptLong::NO_ARGUMENT], label: 'Walk-through', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil }, auto_confirm: { default: nil, cli: ['--auto-confirm', '-a', GetoptLong::NO_ARGUMENT], label: 'Auto-confirm', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil }, admin: { cli: ['--admin', GetoptLong::REQUIRED_ARGUMENT], arg: 'admin', help: 'who is doing something with d3?' }, # Package Identification: Add/Edit/Info/Delete package_name: { default: nil, cli: ['--package-name', '-n', GetoptLong::REQUIRED_ARGUMENT], label: 'JSS Package Name', display_conversion: nil, get: :get_package_name, validate: :validate_package_name }, filename: { default: nil, cli: ['--filename', '-f', GetoptLong::REQUIRED_ARGUMENT], label: 'Dist. Point Filename', display_conversion: nil, get: :get_filename, validate: :validate_filename }, # Add import: { default: nil, cli: ['--import', '-i', GetoptLong::OPTIONAL_ARGUMENT], label: 'Import existing JSS package', display_conversion: nil, get: :get_jss_package_for_import, validate: :validate_package_for_import }, no_inherit: { default: nil, cli: ['--no-inherit', '-I', GetoptLong::NO_ARGUMENT], label: 'Do not inherit from older pacakge', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil }, source_path: { default: nil, cli: ['--source-path', '-s', GetoptLong::REQUIRED_ARGUMENT], label: 'Source path', display_conversion: DISPLAY_DFT_REQUIRED, get: :get_source_path, validate: :validate_source_path }, package_build_type: { default: DFT_PKG_TYPE, cli: ['--dmg', GetoptLong::NO_ARGUMENT], label: 'Package build type', display_conversion: DISPLAY_PKG_TYPE, get: :get_package_build_type, validate: :validate_package_build_type }, signing_identity: { default: nil, cli: ['--signing-id', GetoptLong::NO_ARGUMENT], label: 'Package signing identity', display_conversion: nil, get: :get_signing_identity, validate: :validate_signing_idenitity }, signing_options: { default: nil, cli: ['--signing-opts', GetoptLong::NO_ARGUMENT], label: 'Signing arguments and options', display_conversion: nil, get: :get_signing_options, validate: :validate_signing_options }, pkg_preserve_owners: { default: nil, cli: ['--preserve-owners', GetoptLong::NO_ARGUMENT], label: 'Preserve ownership in .pkg', display_conversion: DISPLAY_TRUE_FALSE, get: :get_pkg_preserve_owners, validate: :validate_yes_no }, pkg_identifier: { default: nil, cli: ['--pkg-id', '-p', GetoptLong::REQUIRED_ARGUMENT], label: 'Package identifier prefix', display_conversion: nil, get: :get_pkg_identifier, validate: :validate_package_identifier }, workspace: { default: DFT_WORKSPACE, cli: ['--workspace', '-W', GetoptLong::REQUIRED_ARGUMENT], label: 'Package build workspace', display_conversion: nil, get: :get_workspace, validate: :validate_workspace }, # Add/Edit version: { default: '1', cli: ['--version', '-v', GetoptLong::REQUIRED_ARGUMENT], label: 'Version', display_conversion: DISPLAY_DFT_REQUIRED, get: :get_version, validate: :validate_version }, revision: { default: 1, cli: ['--revision', '-r', GetoptLong::REQUIRED_ARGUMENT], label: 'Revision', display_conversion: DISPLAY_DFT_REQUIRED, get: :get_revision, validate: :validate_revision }, category: { default: D3::CONFIG.jss_default_pkg_category, cli: ['--category', '-C', GetoptLong::REQUIRED_ARGUMENT], label: 'Category', display_conversion: nil, get: :get_category, unsetable: true, validate: :validate_category }, oses: { default: nil, cli: ['--oses', '-o', GetoptLong::REQUIRED_ARGUMENT], label: 'Limited to OSes', display_conversion: DISPLAY_COMMA_SEP_LIST, get: :get_oses, unsetable: true, validate: :validate_oses }, cpu_type: { default: nil, cli: ['--cpu_type', '-c', GetoptLong::REQUIRED_ARGUMENT], label: 'Limited to CPU type', display_conversion: DISPLAY_DFT_NONE, get: :get_cpu_type, unsetable: true, validate: :validate_cpu_type }, reboot: { default: false, cli: ['--reboot', '-R', GetoptLong::OPTIONAL_ARGUMENT], label: 'Needs Reboot', display_conversion: DISPLAY_TRUE_FALSE, get: :get_reboot, validate: :validate_yes_no }, removable: { default: true, cli: ['--removable', '-u', GetoptLong::OPTIONAL_ARGUMENT], label: 'Uninstallable', display_conversion: DISPLAY_TRUE_FALSE, get: :get_removable, validate: :validate_yes_no }, remove_first: { default: false, cli: ['--remove-first', '-F', GetoptLong::OPTIONAL_ARGUMENT], label: 'Uninstalls older installs', display_conversion: DISPLAY_TRUE_FALSE, get: :get_remove_first, validate: :validate_yes_no }, prohibiting_processes: { default: nil, cli: ['--prohibiting-processes', '--prohibiting-process', '-x', GetoptLong::REQUIRED_ARGUMENT], label: 'Installation prohibited by processes matching', display_conversion: DISPLAY_COMMA_SEP_LIST, get: :get_prohibiting_processes, unsetable: true, validate: :validate_prohibiting_processes, compare: proc { |o, n| o.to_a.sort == n.to_a.sort } }, auto_groups: { default: nil, cli: ['--auto-groups', '-g', GetoptLong::REQUIRED_ARGUMENT], label: 'Auto installed for groups', display_conversion: DISPLAY_COMMA_SEP_LIST, get: :get_auto_groups, validate: :validate_auto_groups, unsetable: true, compare: proc { |o, n| o.to_a.sort == n.to_a.sort } }, excluded_groups: { default: nil, cli: ['--excluded-groups', '-G', GetoptLong::REQUIRED_ARGUMENT], label: 'Excluded for groups', display_conversion: DISPLAY_COMMA_SEP_LIST, get: :get_excluded_groups, validate: :validate_excluded_groups, unsetable: true, compare: proc { |o, n| o.to_a.sort == n.to_a.sort } }, pre_install: { default: nil, cli: ['--pre-install', '-e', GetoptLong::REQUIRED_ARGUMENT], label: 'Pre-install script', display_conversion: DISPLAY_DFT_NONE, get: :get_pre_install_script, unsetable: true, validate: :validate_pre_install_script }, post_install: { default: nil, cli: ['--post-install', '-t', GetoptLong::REQUIRED_ARGUMENT], label: 'Post-install script', display_conversion: DISPLAY_DFT_NONE, get: :get_post_install_script, unsetable: true, validate: :validate_post_install_script }, pre_remove: { default: nil, cli: ['--pre-remove', '-E', GetoptLong::REQUIRED_ARGUMENT], label: 'Pre-uninstall script', display_conversion: DISPLAY_DFT_NONE, get: :get_pre_remove_script, unsetable: true, validate: :validate_pre_remove_script }, post_remove: { default: nil, cli: ['--post-remove', '-T', GetoptLong::REQUIRED_ARGUMENT], label: 'Post-uninstall script', display_conversion: DISPLAY_DFT_NONE, get: :get_post_remove_script, unsetable: true, validate: :validate_post_remove_script }, expiration: { default: DFT_EXPIRATION, cli: ['--expiration', '-X', GetoptLong::REQUIRED_ARGUMENT], label: 'Expiration', display_conversion: nil, get: :get_expiration, unsetable: true, validate: :validate_expiration }, expiration_paths: { default: nil, cli: ['--expiration-path', '--expiration-paths', '-P', GetoptLong::REQUIRED_ARGUMENT], label: 'Expiration Path(s)', display_conversion: D3::Database::ARRAY_OF_PATHNAMES_TO_COMMA_STRING, get: :get_expiration_paths, unsetable: true, validate: :validate_expiration_paths, compare: proc { |o, n| o.to_a.sort == n.to_a.sort } }, description: { default: '', cli: ['--description', '-d', GetoptLong::REQUIRED_ARGUMENT], label: 'Description', display_conversion: proc { |v| "\n----\n#{v.to_s.gsub("\r", "\n")}\n----" }, get: :get_description, unsetable: true, validate: nil }, # Search and Report status: { default: nil, cli: ['--status', '-S', GetoptLong::REQUIRED_ARGUMENT], label: 'Status for search and report', display_conversion: DISPLAY_LIST_TYPE, get: :get_scoped_groups, validate: :validate_scoped_groups }, frozen: { default: nil, cli: ['--frozen', '-z', GetoptLong::NO_ARGUMENT], label: 'Report frozen receipts', display_conversion: DISPLAY_LIST_TYPE, get: :get_scoped_groups, validate: :validate_scoped_groups }, queue: { default: nil, cli: ['--queue', '-q', GetoptLong::NO_ARGUMENT], label: 'Report pending puppies rather than receipts', display_conversion: DISPLAY_LIST_TYPE, get: :get_scoped_groups, validate: :validate_scoped_groups }, computers: { default: nil, cli: ['--computers', GetoptLong::NO_ARGUMENT], label: 'Report targets are computers, not basenames', display_conversion: DISPLAY_LIST_TYPE, get: :get_scoped_groups, validate: :validate_scoped_groups }, groups: { default: nil, cli: ['--groups', GetoptLong::NO_ARGUMENT], label: 'Search targets are scoped groups, not basenames', display_conversion: DISPLAY_LIST_TYPE, get: :get_scoped_groups, validate: :validate_scoped_groups }, # Delete keep_scripts: { default: nil, cli: ['--keep-scripts', GetoptLong::NO_ARGUMENT], label: 'Keep associated scripts in Jamf Pro', display_conversion: DISPLAY_TRUE_FALSE, get: :get_keep_scripts, validate: :validate_yes_no }, keep_in_jss: { default: nil, cli: ['--keep-in-jss', GetoptLong::NO_ARGUMENT], label: 'Keep the Jamf Pro package', display_conversion: DISPLAY_TRUE_FALSE, get: :get_keep_in_jss, validate: :validate_yes_no }, # debug debug: { default: false, cli: ['--debug', '-D', GetoptLong::NO_ARGUMENT], label: 'Be more verbose', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: :validate_yes_no }, d3_version: { default: false, cli: ['--d3-version', GetoptLong::NO_ARGUMENT], label: 'Display the version of d3admin and its libraries', display_conversion: DISPLAY_TRUE_FALSE, get: nil, validate: nil } }.freeze
- @@debug =
false
Class Method Summary collapse
Class Method Details
.connect(alt_db = false) ⇒ Object
475 476 477 |
# File 'lib/d3/admin/auth.rb', line 475 def self.connect (alt_db = false) Auth.connect alt_db end |
.debug ⇒ Object
37 38 39 |
# File 'lib/d3/admin/state.rb', line 37 def self.debug @@debug end |
.debug=(newval) ⇒ Object
33 34 35 |
# File 'lib/d3/admin/state.rb', line 33 def self.debug= (newval) @@debug = newval end |
.disconnect ⇒ Object
481 482 483 |
# File 'lib/d3/admin/auth.rb', line 481 def self.disconnect Auth.disconnect end |