Class: Thermite::Tasks
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Thermite::Tasks
- Includes:
- Cargo, CustomBinary, GithubReleaseBinary, Package, Util
- Defined in:
- lib/thermite/tasks.rb
Overview
Create the following rake tasks:
thermite:buildthermite:cleanthermite:testthermite:tarball
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
The configuration used for the Rake tasks.
-
#options ⇒ Object
readonly
Possible configuration options for Thermite tasks:.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Tasks
constructor
Define the Thermite tasks with the given configuration parameters (see #options).
Methods included from Util
Methods included from Package
#build_package, #prepare_downloaded_library, #unpack_tarball
Methods included from GithubReleaseBinary
#download_binary_from_github_release
Methods included from CustomBinary
#download_binary_from_custom_uri
Methods included from Cargo
#cargo, #cargo_manifest_path_args, #cargo_msg, #cargo_recommended_msg, #cargo_required_msg, #inform_user_about_cargo, #run_cargo, #run_cargo_if_exists, #run_cargo_rustc
Constructor Details
#initialize(options = {}) ⇒ Tasks
Define the Thermite tasks with the given configuration parameters (see #options).
Example:
Thermite::Tasks.new(cargo_project_path: 'rust')
106 107 108 109 110 111 112 113 114 |
# File 'lib/thermite/tasks.rb', line 106 def initialize( = {}) = @config = Config.new() .merge!(@config.toml_config) define_build_task define_clean_task define_test_task define_package_task end |
Instance Attribute Details
#config ⇒ Object (readonly)
The configuration used for the Rake tasks. See: Config
51 52 53 |
# File 'lib/thermite/tasks.rb', line 51 def config @config end |
#options ⇒ Object (readonly)
Possible configuration options for Thermite tasks:
binary_uri_format- if set, the interpolation-formatted string used to construct the download URI for the pre-built native extension. If the environment variableTHERMITE_BINARY_URI_FORMATis set, it takes precedence over this option. Either method of setting this option overrides thegithub_releasesoption. Example:https://example.com/download/%{version}/%{filename}. Replacement variables:filename- The value of Config#tarball_filenameversion- the crate version from theCargo.tomlfile
cargo_project_path- the path to the Cargo project. Defaults to the current working directory.cargo_workspace_member- if set, the relative path to the Cargo workspace member. Usually used when it is part of a repository containing multiple crates.github_releases- whether to look for rust binaries via GitHub releases when installing the gem, andcargois not found. Defaults tofalse.github_release_type- whengithub_releasesistrue, the mode to use to download the Rust binary from GitHub releases.'cargo'(the default) uses the version inCargo.toml, along with thegit_tag_formatoption (described below) to determine the download URI.'latest'takes the latest release matching thegit_tag_regexoption (described below) to determine the download URI.git_tag_format- whengithub_release_typeis'cargo'(the default), the format string used to determine the tag used in the GitHub download URI. Defaults tov%s, where%sis the version inCargo.toml.git_tag_regex- whengithub_releasesis enabled andgithub_release_typeis'latest', a regular expression (expressed as aString) that determines which tagged releases to look for precompiled Rust tarballs. One group must be specified that indicates the version number to be used in the tarball filename. Defaults tovN.N.N, whereNis any n-digit number. In this case, the group is around the entire expression.optional_rust_extension- prints a warning to STDERR instead of raising an exception, if Cargo is unavailable andgithub_releasesis either disabled or unavailable. Useful for projects where either fallback code exists, or a native extension is desirable but not required. Defaults tofalse.ruby_project_path- the toplevel directory of the Ruby gem's project. Defaults to the current working directory.
These values can be overridden by values with the same key name in the
package.metadata.thermite section of Cargo.toml, if that section exists. The exceptions
to this are cargo_project_path and cargo_workspace_member, since they are both used to
find the Cargo.toml file.
95 96 97 |
# File 'lib/thermite/tasks.rb', line 95 def end |