cookbook 'homebrew', '= 5.4.4'
homebrew
(68) Versions
5.4.4
-
-
5.4.9
-
5.4.8
-
5.4.7
-
5.4.6
-
5.4.5
-
5.4.4
-
5.4.3
-
5.4.2
-
5.4.1
-
5.4.0
-
5.3.8
-
5.3.7
-
5.3.6
-
5.3.5
-
5.3.4
-
5.3.3
-
5.3.2
-
5.3.1
-
5.3.0
-
5.2.2
-
5.2.1
-
5.2.0
-
5.1.1
-
5.1.0
-
5.0.8
-
5.0.7
-
5.0.6
-
5.0.5
-
5.0.4
-
5.0.3
-
5.0.2
-
5.0.1
-
5.0.0
-
4.3.0
-
4.2.1
-
4.2.0
-
4.1.0
-
4.0.0
-
3.0.0
-
2.1.2
-
2.1.0
-
2.0.5
-
2.0.4
-
2.0.3
-
2.0.2
-
2.0.1
-
2.0.0
-
1.13.0
-
1.12.0
-
1.11.0
-
1.10.0
-
1.9.2
-
1.9.0
-
1.8.0
-
1.7.2
-
1.7.0
-
1.6.6
-
1.6.4
-
1.6.2
-
1.6.0
-
1.5.4
-
1.5.2
-
1.5.0
-
1.4.0
-
1.3.2
-
1.3.0
-
1.2.0
-
1.0.0
Follow68
- 5.4.9
- 5.4.8
- 5.4.7
- 5.4.6
- 5.4.5
- 5.4.4
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.8
- 5.3.7
- 5.3.6
- 5.3.5
- 5.3.4
- 5.3.3
- 5.3.2
- 5.3.1
- 5.3.0
- 5.2.2
- 5.2.1
- 5.2.0
- 5.1.1
- 5.1.0
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.0.0
- 2.1.2
- 2.1.0
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.2
- 1.9.0
- 1.8.0
- 1.7.2
- 1.7.0
- 1.6.6
- 1.6.4
- 1.6.2
- 1.6.0
- 1.5.4
- 1.5.2
- 1.5.0
- 1.4.0
- 1.3.2
- 1.3.0
- 1.2.0
- 1.0.0
Install Homebrew and includes resources for working with taps and casks
cookbook 'homebrew', '= 5.4.4', :supermarket
knife supermarket install homebrew
knife supermarket download homebrew
Homebrew Cookbook
This cookbook installs Homebrew and provides resources for working with taps and casks
Note: The homebrew_tap
and homebrew_cask
resources shipped in Chef 14.0. When Chef 15.0 is released in April 2019 these resources will be removed from this cookbook as all users should be on 14.0 or later.
Maintainers
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit sous-chefs.org or come chat with us on the Chef Community Slack in #sous-chefs.
Requirements
Platforms
- macOS
Chef
- Chef 12.7+
Cookbooks
- none
Resources
homebrew_tap
Resource for brew tap
, a Homebrew command used to add additional formula repositories. From the brew
man page:
brew tap [--full] user/repo [URL] Tap a formula repository. With URL unspecified, taps a formula repository from GitHub using HTTPS. Since so many taps are hosted on GitHub, this command is a shortcut for tap user/repo https://github.com/user/homebrew-repo. With URL specified, taps a formula repository from anywhere, using any transport protocol that git handles. The one-argument form of tap simplifies but also limits. This two-argument command makes no assumptions, so taps can be cloned from places other than GitHub and using protocols other than HTTPS, e.g., SSH, GIT, HTTP, FTP(S), RSYNC. By default, the repository is cloned as a shallow copy (--depth=1), but if --full is passed, a full clone will be used. To convert a shallow copy to a full copy, you can retap passing --full without first untapping.
Default action is :tap
which enables the repository. Use :untap
to disable a tapped repository.
Actions
-
:tap
(default) - Add a tap -
:untap
- Remove a tap
Properties
-
:tap_name
- Optional name property to override the resource name value -
:url
- Optional URL to the tap -
:full
- Perform a full clone rather than a shallow clone on the tap (default: false) -
:homebrew_path
- the path to the homebrew binary (default: '/opt/homebrew/bin/brew') -
:owner
- the owner of the homebrew installation (default: calculated based on existing files)
Examples
homebrew_tap 'homebrew/dupes' homebrew_tap 'homebrew/dupes' do action :untap end homebrew_tap "Let's install homebrew/dupes" do tap_name 'homebrew/dupes' url 'https://github.com/homebrew/homebrew-dupes.git' full true end
homebrew_cask
Resource for brew cask
, a Homebrew-style CLI workflow for the administration of Mac applications distributed as binaries. It's implemented as a homebrew "external command" called cask.
Actions
-
:install
(default) - install an Application -
:remove
- remove an Application.
Properties
-
:cask_name
- Optional name property to override the resource name value -
:options
- options to pass to the brew CLI during installation -
:install_cask
- auto install cask tap if necessary (default: true) -
:homebrew_path
- the path to the homebrew binary (default: '/opt/homebrew/bin/brew') -
:owner
- the owner of the homebrew installation (default: calculated based on existing files)
Examples
homebrew_cask 'google-chrome' homebrew_cask "Let's remove google-chrome" do cask_name 'google-chrome' install_cask false action :remove end
View the list of available Casks
Attributes
-
node['homebrew']['owner']
- The user that will own the Homebrew installation and packages. Setting this will override the default behavior which is to use the non-privileged user that has invoked the Chef run (or theSUDO_USER
if invoked with sudo). The default isnil
. -
node['homebrew']['auto-update']
- Whether the default recipe should automatically update Homebrew each run or not. The default istrue
to maintain compatibility. Set to false or nil to disable. Note that disabling this feature may cause formula to not work. -
node['homebrew']['formulas']
- An Array of formula that should be installed using Homebrew by default, used only in thehomebrew::install_formulas
recipe.- To install the most recent version, include just the recipe name:
- simple_formula
- To install a specific version, specify both its name and version:
- name: special-version-formula version: 1.2.3
- To install the HEAD of a formula, specify both its name and
head: true
:
- name: head-tracking-formula head: true
- To provide other options, specify both its name and options
- name: formula-with-options options: --with-option-1 --with-other-option
- To install the most recent version, include just the recipe name:
node['homebrew']['casks']
- An Array of casks that should be installed using brew cask by default, used only in thehomebrew::install_casks
recipe.node['homebrew']['taps']
- An Array of taps that should be installed using brew tap by default, used only in thehomebrew::install_taps
recipe. For example:
[ 'homebrew/science', # 'tap' is the only required key for the Hash { 'tap' => 'homebrew/dupes', 'url' => 'https://github.com', 'full' => true } ]
Usage
We strongly recommend that you put "recipe[homebrew]" in your node's run list, to ensure that it is available on the system and that Homebrew itself gets installed. Putting an explicit dependency in the metadata will cause the cookbook to be downloaded and the library loaded, thus resulting in changing the package provider on macOS, so if you have systems you want to use the default (Mac Ports), they would be changed to Homebrew.
The default recipe also ensures that Homebrew is installed and up to date if the auto-update attribute (above) is true (default).
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers!
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
homebrew Cookbook CHANGELOG
This file is used to list changes made in each version of the homebrew cookbook.
5.4.4 - 2023-09-28
5.4.3 - 2023-09-04
5.4.2 - 2023-07-10
5.4.1 - 2023-06-01
5.4.0 - 2023-04-24
- Add temporary sudoers entry to fix homebrew installation
5.3.8 - 2023-04-16
Standardise files with files in sous-chefs/repo-management
5.3.7 - 2023-04-04
- Sous Chefs adoption
- Update lint-unit workflow to 2.0.2
- Set unified_mode for all resources
- Require Chef 15.3+ for unified_mode
- Standardise files with files in sous-chefs/repo-management
5.3.6 - 2023-04-01
- Standardise files with files in sous-chefs/repo-management
5.3.5 - 2023-03-02
- Standardise files with files in sous-chefs/repo-management
5.3.4 - 2023-02-20
- Standardise files with files in sous-chefs/repo-management
5.3.4 - 2023-02-20
- Standardise files with files in sous-chefs/repo-management
5.3.3 - 2023-02-14
- Standardise files with files in sous-chefs/repo-management
5.3.2 - 2022-12-15
- Standardise files with files in sous-chefs/repo-management
- Fix workflow CI
5.3.1 - 2022-02-10
- Standardise files with files in sous-chefs/repo-management
- Remove delivery folder
5.3.0 - 2021-12-21
- Update to support Apple M1 silicon (arm64) Homebrew install location (
/opt/homebrew
)- Add HomebrewWrapper.repository_path() for homebrew_tap resource idempotency
- Add HomebrewWrapper.repository_path() helper for Apple M1 silicon (arm64)
- Remove deprecated
--full
option for Homebrew (Breaking upstream CLI change!) - Add chefspec tests for Apple M1 silicon Homebrew path helper
- Add InSpec tests for macOS M1 / arm64 and x86_64
- Set
use_sudo: false
for InSpec tests to work properly - Convert hardcoded /usr/local to use install_path() for M1 /opt/homebrew support
- Add Homebrew.install_path() helper for Apple M1 silicon (arm64)
5.2.2 - 2021-08-30
- Standardise files with files in sous-chefs/repo-management
5.2.1 - 2021-06-01
- Standardise files with files in sous-chefs/repo-management
5.2.0 - 2021-01-24
- Sous Chefs Adoption
- Standardise files with files in sous-chefs/repo-management
5.1.1 (2021-01-04)
- Update to use --cask instead of cask command for compatibility with newer homebrew releases- @tas50
- resolved cookstyle error: resources/cask.rb:23:1 warning:
ChefDeprecations/ResourceUsesOnlyResourceName
- resolved cookstyle error: resources/tap.rb:23:1 warning:
ChefDeprecations/ResourceUsesOnlyResourceName
5.1.0 (2020-05-15)
- Rename the kitchen config - @tas50
- Cookstyle fixes - @tas50
- OS X -> macOS in the readme - @tas50
- Require Chef 12.15+ - @tas50
- Update default install script from ruby to bash - @bbros-dev
- Resole chefspec failures - @tas50
5.0.8 (2018-10-04)
- Updates homebrew cask tap to homebrew/cask
- Updates URLs to the homebrew cask repository
5.0.7 (2018-09-26)
- Fix cask resource running each chef-client run
5.0.6 (2018-09-26)
- Avoid CHEF-25 Deprecation warnings by making the tap/cask resources no-ops on modern chef-client releases
5.0.5 (2018-09-04)
- Update name of macos in kitchen config
- Add deprecation notice for the homebrew_tap and homebrew_cask resources. These resources are now built into Chef 14 and they will be removed from this cookbook when Chef 13 goes EOL, April 2019.
5.0.4 (2018-03-16)
- Fix backwards logic in the cask install action
5.0.3 (2018-03-09)
- Resolve method missing errors in the library
5.0.2 (2018-03-09)
- Remove some legacy logic around the Chef Homebrew user module
- Use lazy to prevent compilation failures on non-macOS platforms
5.0.1 (2018-03-08)
- Added a cask_name and tap_name property to the cask/tap resources. These are name_properties which allow you to set the tap/cask name to something other than the resources name. Handy for avoiding resource cloning.
5.0.0 (2018-03-08)
- Added a new homebrew_path property to cask/tap for the homebrew binary
- Added a new owner property to cash/tap for setting the homebrew owner
- Converted execute resources in the resources to converge_by and shellout to provide better converge messaging in line with other core Chef resources=
- Renamed the :uninstall action in the cask resource to :remove. This aligns with other chef package resources. The previous action will continue to function.
- Fully documented the resource actions and properties in the readme
- Removed deprecated taps out of the test recipe
- Removed the ChefSpec matchers that are now autogenerated by ChefSpec in modern releases of ChefDK. If this causes failures you need to upgrade ChefDK
4.3.0 (2018-01-13)
- Allow Cask name to be scoped to tap
- Disable Foodcrtiic's FC108 since it doesn't apply here
- Automatically install caskroom/cask in the cask resource. This eliminates the need for the cask recipe.
- Resolve Chef 14 deprecation warnings
4.2.2 (2018-01-13)
- Fix failures in the cask resource
- Improve inspec output for file mode test
4.2.1 (2018-01-13)
- Remove double shellout from a bad merge
- Test on modern macOS releases
- Use full file modes throughout the recipes
- Add 2 retries for downloading the homebrew script in case it fails
4.2.0 (2017-05-30)
- Remove class_eval and require Chef 12.7+
4.1.0 (2017-04-25)
- Extend the tap resource to use the --full option. See the readme for details and examples
4.0.0 (2017-04-19)
- Convert the tap and cask resources from LWRPs to custom resources which simplifies the code and fixes an incompatibility with Chef 13
- Uses the homebrew_owner as the user to check if a cask has been casked
- Fixed the location of the tap dir to properly prevent trying to install a tap twice
- Refactor the mixin to be a simpler helper that is easier to test
- Resolved failures in the Chefspecs on Travis
- Test with Local Delivery and not Rake
- Use standardize Apache 2 license string
- Only check if homebrew exists once in the default recipe
3.0.0 (2016-12-19)
- The homebrew package provider has been removed from this cookbook. It ships with Chef 12.0+. This cookbook now requires a minimum of Chef 12.1 or later.
- This cookbook no longer depends on build-essential as it wasn't using it directly
- Properly define the chefspec matchers
- Add chef_version metadata and remove OS X server which isn't an actual platform from ohai
- Don't grab homebrew_go script if homebrew is already installed.
- Add ability to disable sending analytics data via a new attribute
- Move testing to a test cookbook to make it easier to expand in the future. Also convert integration tests to InSpec from ServerSpec
2.1.2 (2016-09-07)
- Allow passing custom options to brew packages
2.1.1 (2016-09-06)
- Run chefspecs as OS X
- Update cask recipe to not create /opt/homebrew-cask and /opt/homebrew-cask/Caskroom
- Update tests
v2.1.0 (2016-03-29)
- Make homebrew install script url configurable
- Make package_info more efficient
v2.0.5 (2016-01-25)
- Updated execute resources to pass in the HOME/USER environmental variables so homebrew commands are properly executed
- Removed redundant code from recipes and providers
- Removed brew-cask installation and the upgade execute that are no longer necessary
- Added directory creation of /Library/Caches/Homebrew/Casks in case it's not present
- Updated creation of /opt/homebrew-cask to be recursive in case /opt hasn't been created yet
v2.0.4 (2016-01-20)
- Use the officially supported method of querying homebrew data vs. unsupported internal APIs
- Fixed environmental variables in the homebrew command execution
v2.0.3 (2015-12-09)
- Fixed poor name matching in determining if a cask had been installed already, which prevented some casks from installing
v2.0.2 (2015-12-04)
- Prevents casks from installing on every chef run
v2.0.1 (2015-12-03)
- Fixed already-installed casks breaking builds
v2.0.0 (2015-12-01)
- Removed all Chef 10 compatibility code
- 77 Update the tap provider to properly notify on changes
- 73 Allow specifying versions (or HEAD) of formulas (see readme for usage)
- Updated contributing, testing, and maintainers docs
- Updated contents of chefignore and .gitignore files
- Updated development dependencies in the Gemfile
- Added Travis CI and supermarket version badges to the readme
- Added Chef standard rubocop file and resolved all warnings
- Added super metadata for Supermarket
- Added testing in Travis CI
- 75 Fix Chefspecs to properly run on Linux hosts (like Travis)
- Add Rakefile for simplified testing
- Resolved all foodcritic warnings
v1.13.0 (2015-06-23)
- 72 Massage Chef12HomebrewUser.find_homebrew_uid into username
- 69 Add options to cask
v1.12.0 (2015-01-29)
- 67 Add attribute and recipe for installing homebrew taps
v1.11.0 (2015-01-12)
- 59 Update Homebrew Cask if auto-update attribute is true
- 52 Manage Homebrew Cask's install directories
- 56 Fix check for existing casks
- 61 Fix owner class for Chef 12
- Depend on build-essential cookbook 2.1.2+ to support OS X 10.10
- 64, #66 add and fix ChefSpec tests for default recipe
v1.10.0 (2014-12-09)
- 55 This cookbook no longer sets its
homebrew_package
as the -
package
provider for OS X when running under Chef 12 - List CHEF as the maintainer instead of Chef.
v1.9.2 (2014-10-09)
Bug Fixes:
- 57 Update url per homebrew error: Upstream, the homebrew project
- has changed the URL for the installation script. All users of this
- cookbook are advised to update to this version.
v1.9.0 (2014-07-29)
Improvements:
- 35 Modernize the cask provider (use why run mode, inline resources)
- 43 Use
brew cask list
to determine if casks are installed - 45 Add
default_action
and print warning messages on earlier - versions of Chef (10.10)
New Features:
- 44 Add
:install
and:uninstall
actions and alias previous:cask
, -
:uncask
actions to them
Bug Fixes:
- 27 Fix name for taps adding the
/homebrew
prefix - 28 Set
RUBYOPT
tonil
so Chef can execute in a bundle (bundler - sets
RUBYOPT
and this can cause issues when running the - underlying
brew
commands) - 40 Fix regex for cask to match current homebrew conventions
- 42 Fix attribute for list of formulas to match the README and
- maintain backward compat for 6 day old version
v1.8.0 (2014-07-23)
- Add recipes to install an array of formulas/casks
v1.7.2 (2014-06-26)
- Implement attribute to control auto-update
v1.7.0 (2014-06-26)
- Add homebrew::cask recipe (#38)
v1.6.6 (2014-05-29)
- [COOK-3283] Use homebrew_owner for cask and tap
- [COOK-4670] homebrew_tap provider is not idempotent
- [COOK-4671] Syntax Error in README
v1.6.4 (2014-05-08)
- Fixing cask provider correctly this time. "brew cask list"
v1.6.2 (2014-05-08)
- Fixing typo in cask provider: 's/brew brew/brew/'
v1.6.0 (2014-04-23)
- [COOK-3960] Added LWRP for brew cask
- [COOK-4508] Add ChefSpec matchers for homebrew_tap
- [COOK-4566] Guard against "HEAD only" formulae
v1.5.4
- [COOK-4023] Fix installer script's URL.
- Fixing up style for rubocop
v1.5.2
- [COOK-3825] setting $HOME on homebrew_package
v1.5.0
Bug
- [COOK-3589] - Add homebrew as the default package manager on OS X Server
v1.4.0
Bug
- [COOK-3283] - Support running homebrew cookbook as root user, with sudo, or a non-privileged user
v1.3.2
- [COOK-1793] - use homebrew "go" script to install homebrew
- [COOK-1821] - Discovered version using Homebrew Formula factory fails check that verifies that version is a String
- [COOK-1843] - Homebrew README.md contains non-ASCII characters, triggering same issue as COOK-522
v1.3.0
- [COOK-1425] - use new json output format for formula
- [COOK-1578] - Use shell_out! instead of popen4
v1.2.0
Chef Software has taken maintenance of this cookbook as the original author has other commitments. This is the initial release with Chef Software as maintainer.
Changes in this release:
- [pull/2] - support for option passing to brew
- [pull/3] - add brew upgrade and control return value from command
- [pull/9] - added LWRP for "brew tap"
- README is now markdown, not rdoc.
Collaborator Number Metric
5.4.4 passed this metric
Contributing File Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Cookstyle Metric
5.4.4 failed this metric
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): homebrew/resources/cask.rb: 1
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): homebrew/resources/tap.rb: 1
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
No Binaries Metric
5.4.4 passed this metric
Testing File Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.4.4 passed this metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Cookstyle Metric
5.4.4 failed this metric
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): homebrew/resources/cask.rb: 1
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): homebrew/resources/tap.rb: 1
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
No Binaries Metric
5.4.4 passed this metric
Testing File Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.4.4 failed this metric
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): homebrew/resources/tap.rb: 1
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
5.4.4 passed this metric
Testing File Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.4.4 failed this metric
5.4.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number