summaryrefslogtreecommitdiffstats
path: root/src/job
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-11-16 14:25:16 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-11-16 14:25:16 +0100
commitc75c7d6929cac98f38fdc05075af0ad3d7c28704 (patch)
treeb590a0eedf16e5e2fe92f348a49653244c8fda68 /src/job
parentcf000f862b53847fa213375d7a14d20a3dd2630b (diff)
Pass package environment and package variables (as environment variables) to container
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/job')
-rw-r--r--src/job/runnable.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/job/runnable.rs b/src/job/runnable.rs
index 6de5622..67219fb 100644
--- a/src/job/runnable.rs
+++ b/src/job/runnable.rs
@@ -84,6 +84,40 @@ impl RunnableJob {
self.source_cache.source_for(&self.package())
}
+ pub fn environment(&self) -> Vec<(String, String)> {
+ let iter = self.resources
+ .iter()
+ .filter_map(JobResource::env)
+ .map(|(k, v)| (k.clone(), v.clone()));
+
+ if let Some(hm) = self.package().environment() {
+ iter.chain({
+ hm.iter().map(|(k, v)| (k.clone(), v.clone()))
+ }).collect()
+ } else {
+ iter.collect()
+ }
+ }
+
+ pub fn package_environment(&self) -> Vec<(String, String)> {
+ vec![
+ (
+ String::from("BUTIDO_PACKAGE_NAME"),
+ self.package().name().clone().to_string()
+ ),
+
+ (
+ String::from("BUTIDO_PACKAGE_VERSION"),
+ self.package().version().clone().to_string()
+ ),
+
+ (
+ String::from("BUTIDO_PACKAGE_VERSION_IS_SEMVER"),
+ String::from(if *self.package().version_is_semver() { "true" } else { "false" })
+ ),
+ ]
+ }
+
async fn build_resource(dep: &dyn ParseDependency, merged_stores: &MergedStores) -> Result<JobResource> {
let (name, vers) = dep.parse_as_name_and_version()?;
trace!("Copying dep: {:?} {:?}", name, vers);