Loading lcov.info +422 −423 Original line number Diff line number Diff line Loading @@ -108,99 +108,96 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-cli/src/commands/run/mod.rs FN:17,run FN:20,run FNF:1 FNDA:0,run DA:17,0 DA:27,0 DA:28,0 DA:29,0 DA:20,0 DA:30,0 DA:31,0 DA:32,0 DA:34,0 DA:36,0 DA:35,0 DA:37,0 DA:38,0 DA:39,0 DA:40,0 DA:41,0 DA:43,0 DA:44,0 DA:45,0 DA:46,0 DA:47,0 DA:48,0 DA:49,0 DA:51,0 DA:52,0 DA:53,0 DA:54,0 DA:55,0 DA:56,0 DA:60,0 DA:57,0 DA:58,0 DA:59,0 DA:63,0 DA:64,0 DA:65,0 DA:66,0 DA:67,0 DA:68,0 DA:74,0 DA:76,0 DA:78,0 DA:80,0 DA:82,0 DA:70,0 DA:71,0 DA:77,0 DA:79,0 DA:81,0 DA:83,0 DA:85,0 DA:86,0 DA:87,0 DA:88,0 DA:89,0 DA:90,0 DA:92,0 DA:93,0 DA:94,0 DA:95,0 DA:96,0 DA:101,0 DA:103,0 DA:105,0 DA:107,0 DA:97,0 DA:99,0 DA:104,0 DA:106,0 DA:108,0 DA:112,0 DA:113,0 DA:114,0 DA:110,0 DA:111,0 DA:115,0 DA:116,0 DA:117,0 DA:119,0 DA:120,0 DA:122,0 DA:123,0 DA:125,0 DA:126,0 DA:128,0 DA:129,0 DA:131,0 DA:132,0 DA:133,0 DA:134,0 DA:135,0 DA:136,0 DA:137,0 DA:138,0 DA:148,0 DA:149,0 DA:150,0 DA:139,0 DA:141,0 DA:151,0 DA:152,0 DA:153,0 DA:157,0 DA:159,0 DA:161,0 DA:154,0 DA:156,0 DA:160,0 DA:162,0 DA:166,0 DA:176,0 DA:177,0 DA:178,0 DA:164,0 DA:165,0 DA:169,0 DA:179,0 DA:180,0 DA:181,0 DA:186,0 DA:187,0 DA:191,0 DA:182,0 DA:184,0 DA:189,0 DA:190,0 DA:194,0 DA:197,0 DA:199,0 DA:201,0 DA:200,0 DA:202,0 DA:204,0 DA:205,0 DA:206,0 DA:207,0 DA:208,0 DA:209,0 Loading @@ -208,46 +205,55 @@ DA:210,0 DA:211,0 DA:212,0 DA:213,0 DA:214,0 DA:215,0 DA:216,0 DA:218,0 DA:221,0 DA:224,0 DA:226,0 DA:227,0 DA:228,0 DA:229,0 DA:230,0 DA:231,0 DA:232,0 DA:233,0 DA:234,0 DA:235,0 DA:237,0 DA:240,0 DA:244,0 DA:245,0 DA:246,0 DA:243,0 DA:247,0 DA:248,0 DA:249,0 DA:250,0 DA:252,0 DA:251,0 DA:253,0 DA:254,0 DA:255,0 DA:256,0 DA:257,0 DA:260,0 DA:259,0 DA:261,0 DA:263,0 DA:264,0 DA:265,0 DA:266,0 DA:267,0 DA:269,0 DA:271,0 DA:272,0 DA:274,0 DA:275,0 DA:277,0 DA:278,0 DA:279,0 DA:280,0 DA:281,0 DA:283,0 DA:285,0 LF:136 DA:286,0 DA:289,0 DA:292,0 DA:294,0 DA:297,0 DA:299,0 LF:142 LH:0 end_of_record TN: Loading Loading @@ -370,63 +376,63 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-lib/src/lib.rs FN:445,Command::test FN:468,Config::read FN:492,Config::read_json FN:513,Config::read_yaml FN:530,Config::set_environment_variables FN:544,<impl PartialEq for Details>::eq FN:551,EnvironmentValue::from_string FN:554,EnvironmentValue::from_value FN:562,EnvironmentValue::prepend_prefix FN:566,EnvironmentValue::trim_prefix FN:570,EnvironmentValue::get_from_config FN:577,EnvironmentValue::get_from_serde FN:591,EnvironmentValue::get_all FN:601,EnvironmentValue::print_all FN:606,EnvironmentValue::set_variable FN:616,EnvironmentValue::set_variables FN:623,Extension::from_string FN:632,Label::dry_run FN:636,Label::invalid FN:640,Label::fail FN:644,Label::found FN:648,Label::not_found FN:652,Label::output FN:656,Label::read FN:660,Label::rejected FN:664,Label::run FN:668,Label::using FN:674,ModuleUri<'_>::from FN:684,ModuleUri<'_>::hash FN:708,ModuleUri<'_>::get_whitelist FN:711,ModuleUri<'_>::is_allowed FN:714,ModuleUri<'_>::test FN:715,ModuleUri<'_>::test::check FN:732,ModuleUri<'_>::working_directory FN:744,SemanticVersion::from_string FN:767,Script::expand_arguments FN:802,Script::expand_arguments_from FN:837,Script::from_module FN:895,Script::from_path FN:918,Script::from_template FN:947,Script::get_command FN:957,Script::get_arguments FN:997,Script::maybe_create_virtual_environment FN:1034,Script::maybe_git_clone FN:1041,Script::python_default FN:1055,Script::run FN:1122,Script::with_container FN:1129,Script::with_current_dir FN:1134,Script::with_envs FN:1173,Script::with_virtual_environment FN:1182,StringTemplate::new FN:1191,StringTemplate::expand FN:1198,StringTemplate::get_variable FN:1228,StringTemplate::is_handlebars FN:1263,StringTemplate::remove_spaces FN:1273,add_dot_slash FN:1281,add_forward_slash FN:444,Command::test FN:467,Config::read FN:491,Config::read_json FN:512,Config::read_yaml FN:529,Config::set_environment_variables FN:543,<impl PartialEq for Details>::eq FN:550,EnvironmentValue::from_string FN:553,EnvironmentValue::from_value FN:561,EnvironmentValue::prepend_prefix FN:565,EnvironmentValue::trim_prefix FN:569,EnvironmentValue::get_from_config FN:576,EnvironmentValue::get_from_serde FN:590,EnvironmentValue::get_all FN:600,EnvironmentValue::print_all FN:605,EnvironmentValue::set_variable FN:615,EnvironmentValue::set_variables FN:622,Extension::from_string FN:631,Label::dry_run FN:635,Label::invalid FN:639,Label::fail FN:643,Label::found FN:647,Label::not_found FN:651,Label::output FN:655,Label::read FN:659,Label::rejected FN:663,Label::run FN:667,Label::using FN:673,ModuleUri<'_>::from FN:683,ModuleUri<'_>::hash FN:707,ModuleUri<'_>::get_whitelist FN:710,ModuleUri<'_>::is_allowed FN:713,ModuleUri<'_>::test FN:714,ModuleUri<'_>::test::check FN:731,ModuleUri<'_>::working_directory FN:743,SemanticVersion::from_string FN:766,Script::expand_arguments FN:801,Script::expand_arguments_from FN:836,Script::from_module FN:894,Script::from_path FN:917,Script::from_template FN:937,Script::get_command FN:947,Script::get_arguments FN:987,Script::maybe_create_virtual_environment FN:1024,Script::maybe_git_clone FN:1031,Script::python_default FN:1045,Script::run FN:1112,Script::with_container FN:1119,Script::with_current_dir FN:1124,Script::with_envs FN:1166,Script::with_virtual_environment FN:1175,StringTemplate::new FN:1184,StringTemplate::expand FN:1191,StringTemplate::get_variable FN:1221,StringTemplate::is_handlebars FN:1256,StringTemplate::remove_spaces FN:1266,add_dot_slash FN:1274,add_forward_slash FNF:57 FNDA:1,Command::test FNDA:1,Config::read Loading Loading @@ -478,86 +484,87 @@ FNDA:1,Script::with_container FNDA:1,Script::with_current_dir FNDA:0,Script::with_envs FNDA:1,Script::with_virtual_environment FNDA:2,StringTemplate::new FNDA:1,StringTemplate::new FNDA:1,StringTemplate::expand FNDA:1,StringTemplate::get_variable FNDA:2,StringTemplate::is_handlebars FNDA:1,StringTemplate::is_handlebars FNDA:1,StringTemplate::remove_spaces FNDA:1,add_dot_slash FNDA:1,add_forward_slash DA:445,1 DA:446,2 DA:447,1 DA:448,3 DA:449,2 DA:451,6 DA:452,2 DA:444,1 DA:445,2 DA:446,1 DA:447,4 DA:448,4 DA:450,6 DA:451,2 DA:454,0 DA:455,0 DA:456,0 DA:461,3 DA:462,1 DA:468,1 DA:460,3 DA:461,1 DA:467,1 DA:468,2 DA:469,2 DA:470,2 DA:471,1 DA:472,0 DA:474,2 DA:475,1 DA:476,0 DA:480,2 DA:481,1 DA:470,1 DA:471,0 DA:473,2 DA:474,1 DA:475,0 DA:479,2 DA:480,1 DA:482,0 DA:483,0 DA:484,0 DA:492,1 DA:491,1 DA:492,2 DA:493,2 DA:494,2 DA:495,0 DA:496,0 DA:497,0 DA:499,3 DA:500,2 DA:501,1 DA:502,2 DA:503,0 DA:505,3 DA:506,1 DA:513,1 DA:514,2 DA:515,1 DA:501,4 DA:502,0 DA:504,6 DA:505,2 DA:512,1 DA:513,2 DA:514,1 DA:516,0 DA:517,0 DA:518,0 DA:521,2 DA:522,1 DA:523,2 DA:524,0 DA:526,3 DA:527,1 DA:520,2 DA:521,1 DA:522,2 DA:523,0 DA:525,3 DA:526,1 DA:529,0 DA:530,0 DA:531,0 DA:532,0 DA:533,0 DA:534,0 DA:535,0 DA:540,0 DA:539,0 DA:543,1 DA:544,1 DA:545,1 DA:550,0 DA:551,0 DA:552,0 DA:553,0 DA:554,0 DA:555,0 DA:556,0 DA:557,0 DA:558,0 DA:559,0 DA:561,0 DA:562,0 DA:563,0 DA:565,1 DA:566,1 DA:567,1 DA:568,2 DA:567,2 DA:569,0 DA:570,0 DA:571,0 DA:572,0 DA:573,0 DA:574,0 DA:575,0 DA:576,0 DA:577,0 DA:578,0 DA:579,0 Loading @@ -566,377 +573,369 @@ DA:581,0 DA:582,0 DA:583,0 DA:584,0 DA:585,0 DA:587,0 DA:589,0 DA:586,0 DA:588,0 DA:590,1 DA:591,1 DA:592,1 DA:592,2 DA:593,2 DA:594,2 DA:595,2 DA:596,2 DA:597,1 DA:596,1 DA:600,0 DA:601,0 DA:602,0 DA:603,0 DA:605,0 DA:606,0 DA:607,0 DA:608,0 DA:609,0 DA:610,0 DA:611,0 DA:612,0 DA:615,0 DA:616,0 DA:617,0 DA:619,0 DA:623,1 DA:618,0 DA:622,1 DA:623,2 DA:624,2 DA:625,2 DA:626,3 DA:627,0 DA:625,3 DA:626,0 DA:631,0 DA:632,0 DA:633,0 DA:634,0 DA:635,0 DA:636,0 DA:637,0 DA:638,0 DA:639,0 DA:640,0 DA:641,0 DA:642,0 DA:643,0 DA:644,0 DA:645,0 DA:646,0 DA:647,0 DA:648,0 DA:649,0 DA:650,0 DA:652,1 DA:653,2 DA:654,1 DA:651,1 DA:652,3 DA:653,3 DA:655,0 DA:656,0 DA:657,0 DA:658,0 DA:659,0 DA:660,0 DA:661,0 DA:662,0 DA:663,0 DA:664,0 DA:665,0 DA:666,0 DA:667,0 DA:668,0 DA:669,0 DA:670,0 DA:673,2 DA:674,2 DA:675,2 DA:676,5 DA:675,5 DA:676,2 DA:677,2 DA:678,2 DA:679,0 DA:681,1 DA:678,0 DA:680,1 DA:683,1 DA:684,1 DA:685,1 DA:686,1 DA:687,1 DA:688,2 DA:689,0 DA:691,4 DA:687,2 DA:688,0 DA:690,4 DA:694,4 DA:695,4 DA:696,4 DA:698,4 DA:699,2 DA:701,2 DA:704,0 DA:697,4 DA:698,2 DA:700,2 DA:703,0 DA:707,0 DA:708,0 DA:709,0 DA:710,0 DA:711,0 DA:712,0 DA:713,0 DA:714,0 DA:715,0 DA:716,0 DA:717,0 DA:718,0 DA:719,0 DA:720,0 DA:721,0 DA:722,0 DA:723,0 DA:724,0 DA:726,0 DA:728,0 DA:725,0 DA:727,0 DA:731,0 DA:732,0 DA:733,0 DA:734,0 DA:735,0 DA:736,0 DA:737,0 DA:738,0 DA:739,0 DA:743,1 DA:744,1 DA:745,1 DA:745,3 DA:746,3 DA:747,3 DA:748,3 DA:767,1 DA:768,2 DA:771,2 DA:772,1 DA:773,2 DA:766,1 DA:767,2 DA:770,2 DA:771,1 DA:772,2 DA:773,1 DA:774,1 DA:775,1 DA:777,2 DA:776,2 DA:780,1 DA:781,1 DA:782,1 DA:802,1 DA:803,2 DA:806,2 DA:807,1 DA:801,1 DA:802,2 DA:805,2 DA:806,1 DA:807,2 DA:808,2 DA:809,2 DA:812,2 DA:814,1 DA:816,2 DA:811,2 DA:813,1 DA:815,2 DA:819,1 DA:820,1 DA:821,1 DA:837,0 DA:836,0 DA:838,0 DA:839,0 DA:840,0 DA:841,0 DA:843,0 DA:844,0 DA:845,0 DA:846,0 DA:847,0 DA:848,0 DA:849,0 DA:850,0 DA:851,0 DA:852,0 DA:854,0 DA:855,0 DA:856,0 DA:857,0 DA:858,0 DA:860,0 DA:861,0 DA:862,0 DA:863,0 DA:866,0 DA:865,0 DA:867,0 DA:868,0 DA:869,0 DA:872,0 DA:871,0 DA:877,0 DA:878,0 DA:879,0 DA:895,1 DA:896,2 DA:897,1 DA:894,1 DA:895,2 DA:896,1 DA:898,0 DA:899,0 DA:900,0 DA:903,2 DA:902,2 DA:903,1 DA:904,1 DA:905,1 DA:917,1 DA:918,1 DA:919,1 DA:920,3 DA:924,2 DA:926,2 DA:928,2 DA:919,3 DA:923,2 DA:925,2 DA:927,2 DA:931,1 DA:932,1 DA:933,2 DA:934,1 DA:936,1 DA:933,1 DA:935,2 DA:937,1 DA:938,1 DA:941,1 DA:939,1 DA:940,1 DA:942,1 DA:943,1 DA:945,2 DA:943,2 DA:944,1 DA:947,1 DA:948,1 DA:949,1 DA:950,1 DA:951,1 DA:952,1 DA:953,2 DA:954,1 DA:957,1 DA:958,1 DA:959,1 DA:953,0 DA:955,0 DA:956,0 DA:959,2 DA:960,1 DA:961,1 DA:962,1 DA:963,0 DA:965,0 DA:966,0 DA:969,2 DA:964,1 DA:965,1 DA:966,1 DA:967,2 DA:968,2 DA:970,1 DA:972,1 DA:974,1 DA:975,1 DA:976,1 DA:977,2 DA:978,2 DA:972,2 DA:973,2 DA:975,0 DA:976,0 DA:979,1 DA:980,1 DA:982,2 DA:983,2 DA:985,0 DA:986,0 DA:989,1 DA:990,1 DA:992,1 DA:982,1 DA:987,0 DA:992,0 DA:993,0 DA:994,0 DA:996,0 DA:997,0 DA:1002,0 DA:998,0 DA:999,0 DA:1000,0 DA:1001,0 DA:1003,0 DA:1004,0 DA:1005,0 DA:1006,0 DA:1007,0 DA:1008,0 DA:1009,0 DA:1010,0 DA:1011,0 DA:1013,0 DA:1014,0 DA:1012,0 DA:1015,0 DA:1016,0 DA:1017,0 DA:1018,0 DA:1019,0 DA:1021,0 DA:1022,0 DA:1025,0 DA:1029,0 DA:1030,0 DA:1034,1 DA:1035,2 DA:1036,2 DA:1037,2 DA:1038,3 DA:1039,1 DA:1020,0 DA:1024,1 DA:1025,2 DA:1026,2 DA:1027,2 DA:1028,3 DA:1029,1 DA:1031,0 DA:1032,0 DA:1033,0 DA:1041,0 DA:1042,0 DA:1043,0 DA:1051,0 DA:1045,1 DA:1046,1 DA:1047,1 DA:1048,2 DA:1049,2 DA:1050,3 DA:1051,1 DA:1052,7 DA:1053,2 DA:1054,1 DA:1055,1 DA:1056,1 DA:1057,1 DA:1058,2 DA:1059,2 DA:1060,3 DA:1061,1 DA:1062,7 DA:1063,2 DA:1064,1 DA:1065,1 DA:1066,1 DA:1067,1 DA:1062,2 DA:1063,1 DA:1065,0 DA:1066,0 DA:1069,1 DA:1070,1 DA:1071,2 DA:1072,2 DA:1073,1 DA:1075,0 DA:1076,0 DA:1079,1 DA:1080,1 DA:1081,2 DA:1082,2 DA:1085,2 DA:1086,1 DA:1088,0 DA:1089,0 DA:1075,2 DA:1076,1 DA:1078,0 DA:1079,0 DA:1082,1 DA:1083,1 DA:1084,2 DA:1085,0 DA:1086,0 DA:1089,2 DA:1090,1 DA:1091,3 DA:1092,1 DA:1093,1 DA:1094,2 DA:1095,0 DA:1096,0 DA:1099,2 DA:1100,1 DA:1101,3 DA:1102,1 DA:1103,3 DA:1104,3 DA:1105,1 DA:1107,0 DA:1093,3 DA:1094,3 DA:1095,1 DA:1097,0 DA:1098,0 DA:1099,0 DA:1102,0 DA:1103,0 DA:1104,0 DA:1108,0 DA:1109,0 DA:1112,0 DA:1113,0 DA:1114,0 DA:1118,0 DA:1119,0 DA:1122,1 DA:1123,1 DA:1124,1 DA:1129,1 DA:1130,2 DA:1131,1 DA:1134,0 DA:1135,0 DA:1136,0 DA:1173,1 DA:1174,1 DA:1112,1 DA:1113,1 DA:1114,1 DA:1119,1 DA:1120,2 DA:1121,1 DA:1124,0 DA:1125,0 DA:1126,0 DA:1166,1 DA:1167,1 DA:1168,1 DA:1175,1 DA:1182,2 DA:1184,2 DA:1177,1 DA:1184,1 DA:1185,4 DA:1186,3 DA:1191,1 DA:1192,6 DA:1193,5 DA:1198,1 DA:1199,2 DA:1200,2 DA:1201,1 DA:1202,2 DA:1204,0 DA:1228,2 DA:1229,4 DA:1230,4 DA:1231,2 DA:1232,0 DA:1234,0 DA:1263,1 DA:1264,2 DA:1265,1 DA:1266,0 DA:1268,3 DA:1269,1 DA:1273,1 DA:1274,2 DA:1192,2 DA:1193,2 DA:1194,1 DA:1195,2 DA:1197,0 DA:1221,1 DA:1222,2 DA:1223,2 DA:1224,1 DA:1225,0 DA:1227,0 DA:1256,1 DA:1257,2 DA:1258,1 DA:1259,0 DA:1261,3 DA:1262,1 DA:1266,1 DA:1267,2 DA:1268,2 DA:1270,3 DA:1274,1 DA:1275,2 DA:1277,3 DA:1281,1 DA:1282,2 DA:1283,0 DA:1285,2 DA:1298,1 DA:1299,2 DA:1300,2 DA:1276,0 DA:1278,2 DA:1291,1 DA:1292,2 DA:1293,2 DA:1294,2 DA:1295,2 DA:1296,5 DA:1299,1 DA:1301,2 DA:1302,2 DA:1303,5 DA:1306,1 DA:1308,2 DA:1310,4 DA:1313,0 DA:1340,1 DA:1341,1 DA:1342,1 DA:1343,6 DA:1355,1 DA:1357,0 DA:1372,1 DA:1373,1 DA:1376,1 DA:1377,3 DA:1389,1 DA:1390,1 DA:1393,0 DA:1303,4 DA:1306,0 DA:1333,1 DA:1334,1 DA:1335,1 DA:1336,6 DA:1348,1 DA:1350,0 DA:1365,1 DA:1366,1 DA:1369,1 DA:1370,3 DA:1382,1 DA:1383,1 DA:1386,0 DA:1387,0 DA:1388,0 DA:1390,0 DA:1394,0 DA:1395,0 DA:1397,0 DA:1401,0 DA:1402,0 DA:1403,0 DA:1405,0 DA:1419,2 DA:1420,2 DA:1421,6 DA:1422,3 DA:1423,12 DA:1424,8 DA:1396,0 DA:1398,0 DA:1412,2 DA:1413,2 DA:1414,6 DA:1415,4 DA:1416,12 DA:1417,8 DA:1419,1 DA:1420,3 DA:1421,1 DA:1424,1 DA:1426,1 DA:1427,3 DA:1428,1 DA:1431,1 DA:1433,1 DA:1434,4 LF:452 LH:249 DA:1427,4 LF:445 LH:242 end_of_record pipe-cli/src/commands/run/mod.rs +28 −14 Original line number Diff line number Diff line Loading @@ -3,7 +3,10 @@ use color_eyre::eyre::Report; use exitcode; use nanoid::nanoid; use pipe_lib::VirtualEnvironment; use pipe_lib::{get_conda_environment_name, get_parent, Command, Config, EnvironmentValue, Label, ModuleLanguage, ModuleType, ModuleUri, Script}; use pipe_lib::{ get_conda_environment_name, get_parent, Command, Config, EnvironmentValue, Label, ModuleLanguage, ModuleType, ModuleUri, Script, TemplateAttribute, VirtualEnvironmentManager, }; use rayon::prelude::*; use std::convert::TryFrom; use std::env; Loading Loading @@ -242,26 +245,37 @@ pub fn run( } | ModuleLanguage::Python => { let working_dir = ModuleUri::from(uri).working_directory(Some(root.clone())); let manifest_path = PathBuf::from(&working_dir).join("environment.yml"); let loaded = Script::from_module(module.clone(), Some(root.clone())); let virtual_environment = match &module.template { | Some(TemplateAttribute::Template(value)) => match &value.virtual_environment { | Some(virtual_environment) => Some(virtual_environment.clone()), | None => { let conda_manifest_path = PathBuf::from(&working_dir).join("environment.yml"); match conda_manifest_path.try_exists() { | Ok(_) => match get_conda_environment_name(conda_manifest_path.clone()) { | Some(value) => { debug!( module = module.name, path = manifest_path.to_str().unwrap(), path = conda_manifest_path.to_str().unwrap(), "=> {} Manifest file", Label::using() ); let loaded = Script::from_module(module.clone(), Some(root.clone())); let environment = match get_conda_environment_name(manifest_path) { | Some(value) => Some(VirtualEnvironment::init().name(value).build()), | None => match &module.template { | Some(_) => loaded.clone().command.virtual_environment, Some(VirtualEnvironment::init().name(value).manager(VirtualEnvironmentManager::Conda).build()) } | None => None, }, | Err(_) => None, } } }, | Some(TemplateAttribute::Path(_)) => None, | None => None, }; let envs = EnvironmentValue::get_from_config(&cfg, Some(module.clone())); let script = loaded .expand_arguments_from(envs) .with_current_dir(working_dir) .with_virtual_environment(environment); .with_virtual_environment(virtual_environment); if dry_run { EnvironmentValue::print_all(); info!( Loading pipe-lib/src/lib.rs +9 −16 Original line number Diff line number Diff line Loading @@ -410,9 +410,8 @@ pub struct Script { pub struct ScriptTemplate { pub command: String, pub container: Option<ContainerEnvironment>, pub manager: Option<VirtualEnvironmentManager>, #[serde(alias = "environment")] pub virtual_environment: Option<String>, pub virtual_environment: Option<VirtualEnvironment>, pub arguments: Instruction, } #[derive(Clone, Debug, Deserialize, Serialize)] Loading Loading @@ -928,19 +927,10 @@ impl Script { .map(|value| StringTemplate::new(&value).remove_spaces().value) .collect(), }; let manager = template.manager; let virtual_environment = match template.virtual_environment { | Some(name) => Some(VirtualEnvironment::init().name(name).maybe_manager(manager).build()), | None => None, }; let container = match template.container { | Some(value) => Some(value), | None => None, }; let command = Command::init() .name(template.command) .maybe_container(container) .maybe_virtual_environment(virtual_environment) .maybe_container(template.container) .maybe_virtual_environment(template.virtual_environment) .build(); Script::init().command(command).arguments(arguments).build() } Loading Loading @@ -1162,12 +1152,15 @@ impl Script { /// /// Run using "module-a" Conda virtual environment (basically executes script with `conda run -n <name>`) /// ``` /// use pipe_lib::{to_string, Command, Script, VirtualEnvironment}; /// use pipe_lib::{to_string, Command, Script, VirtualEnvironment, VirtualEnvironmentManager}; /// /// let command = Command::init().name("python".to_string()).build(); /// let arguments = to_string(vec!["-m", "lib"]); /// let script = Script::init().command(command).arguments(arguments).build(); /// let virtual_environment = VirtualEnvironment::init().name("module-a".to_string()).build(); /// let virtual_environment = VirtualEnvironment::init() /// .name("module-a".to_string()) /// .manager(VirtualEnvironmentManager::Conda) /// .build(); /// let output = script.with_virtual_environment(Some(virtual_environment)).run(); /// ``` pub fn with_virtual_environment(mut self, value: Option<VirtualEnvironment>) -> Self { Loading Loading @@ -1424,7 +1417,7 @@ pub fn read_file(path: PathBuf) -> Result<String, Box<dyn Error>> { file.read_to_string(&mut content) } | Err(err) => { error!(path = path.to_str().unwrap(), "=> {}", Label::fail()); error!(path = path.to_str().unwrap(), "=> {} Cannot read file", Label::fail()); Err(err) } }; Loading pipe-lib/src/tests.rs +12 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,10 @@ fn test_add_forward_slash() { fn test_command() { let nonexistent: Command = Command::init().name("does-not-exist".to_string()).build(); assert!(!nonexistent.test()); let base = VirtualEnvironment::init().name("base".to_string()).build(); let base = VirtualEnvironment::init() .name("base".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); let python = Command::init().name("python".to_string()).virtual_environment(base).build(); assert_eq!(python.clone().name, "python".to_string()); assert_eq!(python.clone().virtual_environment.unwrap().to_string(), "base".to_string()); Loading Loading @@ -264,7 +267,10 @@ fn test_script_expand_arguments() { script.clone().expand_arguments().arguments, vec!["-m", "lib", "--input", "/path/to/input", "--output", "/path/to/output"] ); let environment = VirtualEnvironment::init().name("foo".to_string()).build(); let environment = VirtualEnvironment::init() .name("foo".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); assert_eq!( script .clone() Loading Loading @@ -312,7 +318,10 @@ fn test_script_expand_arguments_from() { ("INPUT_DIRECTORY".to_string(), "FOO".to_string()), ("OUTPUT_DIRECTORY".to_string(), "BAR".to_string()), ]); let environment = VirtualEnvironment::init().name("foo".to_string()).build(); let environment = VirtualEnvironment::init() .name("foo".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); assert_eq!( script .clone() Loading tests/fixtures/template_docker_pixi.json +4 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,10 @@ "name": "CONTAINER", "runtime": "docker" }, "manager": "pixi", "environment": "ENVIRONMENT", "environment": { "name": "ENVIRONMENT", "manager": "pixi" }, "arguments": [ "-m", "lib", Loading Loading
lcov.info +422 −423 Original line number Diff line number Diff line Loading @@ -108,99 +108,96 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-cli/src/commands/run/mod.rs FN:17,run FN:20,run FNF:1 FNDA:0,run DA:17,0 DA:27,0 DA:28,0 DA:29,0 DA:20,0 DA:30,0 DA:31,0 DA:32,0 DA:34,0 DA:36,0 DA:35,0 DA:37,0 DA:38,0 DA:39,0 DA:40,0 DA:41,0 DA:43,0 DA:44,0 DA:45,0 DA:46,0 DA:47,0 DA:48,0 DA:49,0 DA:51,0 DA:52,0 DA:53,0 DA:54,0 DA:55,0 DA:56,0 DA:60,0 DA:57,0 DA:58,0 DA:59,0 DA:63,0 DA:64,0 DA:65,0 DA:66,0 DA:67,0 DA:68,0 DA:74,0 DA:76,0 DA:78,0 DA:80,0 DA:82,0 DA:70,0 DA:71,0 DA:77,0 DA:79,0 DA:81,0 DA:83,0 DA:85,0 DA:86,0 DA:87,0 DA:88,0 DA:89,0 DA:90,0 DA:92,0 DA:93,0 DA:94,0 DA:95,0 DA:96,0 DA:101,0 DA:103,0 DA:105,0 DA:107,0 DA:97,0 DA:99,0 DA:104,0 DA:106,0 DA:108,0 DA:112,0 DA:113,0 DA:114,0 DA:110,0 DA:111,0 DA:115,0 DA:116,0 DA:117,0 DA:119,0 DA:120,0 DA:122,0 DA:123,0 DA:125,0 DA:126,0 DA:128,0 DA:129,0 DA:131,0 DA:132,0 DA:133,0 DA:134,0 DA:135,0 DA:136,0 DA:137,0 DA:138,0 DA:148,0 DA:149,0 DA:150,0 DA:139,0 DA:141,0 DA:151,0 DA:152,0 DA:153,0 DA:157,0 DA:159,0 DA:161,0 DA:154,0 DA:156,0 DA:160,0 DA:162,0 DA:166,0 DA:176,0 DA:177,0 DA:178,0 DA:164,0 DA:165,0 DA:169,0 DA:179,0 DA:180,0 DA:181,0 DA:186,0 DA:187,0 DA:191,0 DA:182,0 DA:184,0 DA:189,0 DA:190,0 DA:194,0 DA:197,0 DA:199,0 DA:201,0 DA:200,0 DA:202,0 DA:204,0 DA:205,0 DA:206,0 DA:207,0 DA:208,0 DA:209,0 Loading @@ -208,46 +205,55 @@ DA:210,0 DA:211,0 DA:212,0 DA:213,0 DA:214,0 DA:215,0 DA:216,0 DA:218,0 DA:221,0 DA:224,0 DA:226,0 DA:227,0 DA:228,0 DA:229,0 DA:230,0 DA:231,0 DA:232,0 DA:233,0 DA:234,0 DA:235,0 DA:237,0 DA:240,0 DA:244,0 DA:245,0 DA:246,0 DA:243,0 DA:247,0 DA:248,0 DA:249,0 DA:250,0 DA:252,0 DA:251,0 DA:253,0 DA:254,0 DA:255,0 DA:256,0 DA:257,0 DA:260,0 DA:259,0 DA:261,0 DA:263,0 DA:264,0 DA:265,0 DA:266,0 DA:267,0 DA:269,0 DA:271,0 DA:272,0 DA:274,0 DA:275,0 DA:277,0 DA:278,0 DA:279,0 DA:280,0 DA:281,0 DA:283,0 DA:285,0 LF:136 DA:286,0 DA:289,0 DA:292,0 DA:294,0 DA:297,0 DA:299,0 LF:142 LH:0 end_of_record TN: Loading Loading @@ -370,63 +376,63 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-lib/src/lib.rs FN:445,Command::test FN:468,Config::read FN:492,Config::read_json FN:513,Config::read_yaml FN:530,Config::set_environment_variables FN:544,<impl PartialEq for Details>::eq FN:551,EnvironmentValue::from_string FN:554,EnvironmentValue::from_value FN:562,EnvironmentValue::prepend_prefix FN:566,EnvironmentValue::trim_prefix FN:570,EnvironmentValue::get_from_config FN:577,EnvironmentValue::get_from_serde FN:591,EnvironmentValue::get_all FN:601,EnvironmentValue::print_all FN:606,EnvironmentValue::set_variable FN:616,EnvironmentValue::set_variables FN:623,Extension::from_string FN:632,Label::dry_run FN:636,Label::invalid FN:640,Label::fail FN:644,Label::found FN:648,Label::not_found FN:652,Label::output FN:656,Label::read FN:660,Label::rejected FN:664,Label::run FN:668,Label::using FN:674,ModuleUri<'_>::from FN:684,ModuleUri<'_>::hash FN:708,ModuleUri<'_>::get_whitelist FN:711,ModuleUri<'_>::is_allowed FN:714,ModuleUri<'_>::test FN:715,ModuleUri<'_>::test::check FN:732,ModuleUri<'_>::working_directory FN:744,SemanticVersion::from_string FN:767,Script::expand_arguments FN:802,Script::expand_arguments_from FN:837,Script::from_module FN:895,Script::from_path FN:918,Script::from_template FN:947,Script::get_command FN:957,Script::get_arguments FN:997,Script::maybe_create_virtual_environment FN:1034,Script::maybe_git_clone FN:1041,Script::python_default FN:1055,Script::run FN:1122,Script::with_container FN:1129,Script::with_current_dir FN:1134,Script::with_envs FN:1173,Script::with_virtual_environment FN:1182,StringTemplate::new FN:1191,StringTemplate::expand FN:1198,StringTemplate::get_variable FN:1228,StringTemplate::is_handlebars FN:1263,StringTemplate::remove_spaces FN:1273,add_dot_slash FN:1281,add_forward_slash FN:444,Command::test FN:467,Config::read FN:491,Config::read_json FN:512,Config::read_yaml FN:529,Config::set_environment_variables FN:543,<impl PartialEq for Details>::eq FN:550,EnvironmentValue::from_string FN:553,EnvironmentValue::from_value FN:561,EnvironmentValue::prepend_prefix FN:565,EnvironmentValue::trim_prefix FN:569,EnvironmentValue::get_from_config FN:576,EnvironmentValue::get_from_serde FN:590,EnvironmentValue::get_all FN:600,EnvironmentValue::print_all FN:605,EnvironmentValue::set_variable FN:615,EnvironmentValue::set_variables FN:622,Extension::from_string FN:631,Label::dry_run FN:635,Label::invalid FN:639,Label::fail FN:643,Label::found FN:647,Label::not_found FN:651,Label::output FN:655,Label::read FN:659,Label::rejected FN:663,Label::run FN:667,Label::using FN:673,ModuleUri<'_>::from FN:683,ModuleUri<'_>::hash FN:707,ModuleUri<'_>::get_whitelist FN:710,ModuleUri<'_>::is_allowed FN:713,ModuleUri<'_>::test FN:714,ModuleUri<'_>::test::check FN:731,ModuleUri<'_>::working_directory FN:743,SemanticVersion::from_string FN:766,Script::expand_arguments FN:801,Script::expand_arguments_from FN:836,Script::from_module FN:894,Script::from_path FN:917,Script::from_template FN:937,Script::get_command FN:947,Script::get_arguments FN:987,Script::maybe_create_virtual_environment FN:1024,Script::maybe_git_clone FN:1031,Script::python_default FN:1045,Script::run FN:1112,Script::with_container FN:1119,Script::with_current_dir FN:1124,Script::with_envs FN:1166,Script::with_virtual_environment FN:1175,StringTemplate::new FN:1184,StringTemplate::expand FN:1191,StringTemplate::get_variable FN:1221,StringTemplate::is_handlebars FN:1256,StringTemplate::remove_spaces FN:1266,add_dot_slash FN:1274,add_forward_slash FNF:57 FNDA:1,Command::test FNDA:1,Config::read Loading Loading @@ -478,86 +484,87 @@ FNDA:1,Script::with_container FNDA:1,Script::with_current_dir FNDA:0,Script::with_envs FNDA:1,Script::with_virtual_environment FNDA:2,StringTemplate::new FNDA:1,StringTemplate::new FNDA:1,StringTemplate::expand FNDA:1,StringTemplate::get_variable FNDA:2,StringTemplate::is_handlebars FNDA:1,StringTemplate::is_handlebars FNDA:1,StringTemplate::remove_spaces FNDA:1,add_dot_slash FNDA:1,add_forward_slash DA:445,1 DA:446,2 DA:447,1 DA:448,3 DA:449,2 DA:451,6 DA:452,2 DA:444,1 DA:445,2 DA:446,1 DA:447,4 DA:448,4 DA:450,6 DA:451,2 DA:454,0 DA:455,0 DA:456,0 DA:461,3 DA:462,1 DA:468,1 DA:460,3 DA:461,1 DA:467,1 DA:468,2 DA:469,2 DA:470,2 DA:471,1 DA:472,0 DA:474,2 DA:475,1 DA:476,0 DA:480,2 DA:481,1 DA:470,1 DA:471,0 DA:473,2 DA:474,1 DA:475,0 DA:479,2 DA:480,1 DA:482,0 DA:483,0 DA:484,0 DA:492,1 DA:491,1 DA:492,2 DA:493,2 DA:494,2 DA:495,0 DA:496,0 DA:497,0 DA:499,3 DA:500,2 DA:501,1 DA:502,2 DA:503,0 DA:505,3 DA:506,1 DA:513,1 DA:514,2 DA:515,1 DA:501,4 DA:502,0 DA:504,6 DA:505,2 DA:512,1 DA:513,2 DA:514,1 DA:516,0 DA:517,0 DA:518,0 DA:521,2 DA:522,1 DA:523,2 DA:524,0 DA:526,3 DA:527,1 DA:520,2 DA:521,1 DA:522,2 DA:523,0 DA:525,3 DA:526,1 DA:529,0 DA:530,0 DA:531,0 DA:532,0 DA:533,0 DA:534,0 DA:535,0 DA:540,0 DA:539,0 DA:543,1 DA:544,1 DA:545,1 DA:550,0 DA:551,0 DA:552,0 DA:553,0 DA:554,0 DA:555,0 DA:556,0 DA:557,0 DA:558,0 DA:559,0 DA:561,0 DA:562,0 DA:563,0 DA:565,1 DA:566,1 DA:567,1 DA:568,2 DA:567,2 DA:569,0 DA:570,0 DA:571,0 DA:572,0 DA:573,0 DA:574,0 DA:575,0 DA:576,0 DA:577,0 DA:578,0 DA:579,0 Loading @@ -566,377 +573,369 @@ DA:581,0 DA:582,0 DA:583,0 DA:584,0 DA:585,0 DA:587,0 DA:589,0 DA:586,0 DA:588,0 DA:590,1 DA:591,1 DA:592,1 DA:592,2 DA:593,2 DA:594,2 DA:595,2 DA:596,2 DA:597,1 DA:596,1 DA:600,0 DA:601,0 DA:602,0 DA:603,0 DA:605,0 DA:606,0 DA:607,0 DA:608,0 DA:609,0 DA:610,0 DA:611,0 DA:612,0 DA:615,0 DA:616,0 DA:617,0 DA:619,0 DA:623,1 DA:618,0 DA:622,1 DA:623,2 DA:624,2 DA:625,2 DA:626,3 DA:627,0 DA:625,3 DA:626,0 DA:631,0 DA:632,0 DA:633,0 DA:634,0 DA:635,0 DA:636,0 DA:637,0 DA:638,0 DA:639,0 DA:640,0 DA:641,0 DA:642,0 DA:643,0 DA:644,0 DA:645,0 DA:646,0 DA:647,0 DA:648,0 DA:649,0 DA:650,0 DA:652,1 DA:653,2 DA:654,1 DA:651,1 DA:652,3 DA:653,3 DA:655,0 DA:656,0 DA:657,0 DA:658,0 DA:659,0 DA:660,0 DA:661,0 DA:662,0 DA:663,0 DA:664,0 DA:665,0 DA:666,0 DA:667,0 DA:668,0 DA:669,0 DA:670,0 DA:673,2 DA:674,2 DA:675,2 DA:676,5 DA:675,5 DA:676,2 DA:677,2 DA:678,2 DA:679,0 DA:681,1 DA:678,0 DA:680,1 DA:683,1 DA:684,1 DA:685,1 DA:686,1 DA:687,1 DA:688,2 DA:689,0 DA:691,4 DA:687,2 DA:688,0 DA:690,4 DA:694,4 DA:695,4 DA:696,4 DA:698,4 DA:699,2 DA:701,2 DA:704,0 DA:697,4 DA:698,2 DA:700,2 DA:703,0 DA:707,0 DA:708,0 DA:709,0 DA:710,0 DA:711,0 DA:712,0 DA:713,0 DA:714,0 DA:715,0 DA:716,0 DA:717,0 DA:718,0 DA:719,0 DA:720,0 DA:721,0 DA:722,0 DA:723,0 DA:724,0 DA:726,0 DA:728,0 DA:725,0 DA:727,0 DA:731,0 DA:732,0 DA:733,0 DA:734,0 DA:735,0 DA:736,0 DA:737,0 DA:738,0 DA:739,0 DA:743,1 DA:744,1 DA:745,1 DA:745,3 DA:746,3 DA:747,3 DA:748,3 DA:767,1 DA:768,2 DA:771,2 DA:772,1 DA:773,2 DA:766,1 DA:767,2 DA:770,2 DA:771,1 DA:772,2 DA:773,1 DA:774,1 DA:775,1 DA:777,2 DA:776,2 DA:780,1 DA:781,1 DA:782,1 DA:802,1 DA:803,2 DA:806,2 DA:807,1 DA:801,1 DA:802,2 DA:805,2 DA:806,1 DA:807,2 DA:808,2 DA:809,2 DA:812,2 DA:814,1 DA:816,2 DA:811,2 DA:813,1 DA:815,2 DA:819,1 DA:820,1 DA:821,1 DA:837,0 DA:836,0 DA:838,0 DA:839,0 DA:840,0 DA:841,0 DA:843,0 DA:844,0 DA:845,0 DA:846,0 DA:847,0 DA:848,0 DA:849,0 DA:850,0 DA:851,0 DA:852,0 DA:854,0 DA:855,0 DA:856,0 DA:857,0 DA:858,0 DA:860,0 DA:861,0 DA:862,0 DA:863,0 DA:866,0 DA:865,0 DA:867,0 DA:868,0 DA:869,0 DA:872,0 DA:871,0 DA:877,0 DA:878,0 DA:879,0 DA:895,1 DA:896,2 DA:897,1 DA:894,1 DA:895,2 DA:896,1 DA:898,0 DA:899,0 DA:900,0 DA:903,2 DA:902,2 DA:903,1 DA:904,1 DA:905,1 DA:917,1 DA:918,1 DA:919,1 DA:920,3 DA:924,2 DA:926,2 DA:928,2 DA:919,3 DA:923,2 DA:925,2 DA:927,2 DA:931,1 DA:932,1 DA:933,2 DA:934,1 DA:936,1 DA:933,1 DA:935,2 DA:937,1 DA:938,1 DA:941,1 DA:939,1 DA:940,1 DA:942,1 DA:943,1 DA:945,2 DA:943,2 DA:944,1 DA:947,1 DA:948,1 DA:949,1 DA:950,1 DA:951,1 DA:952,1 DA:953,2 DA:954,1 DA:957,1 DA:958,1 DA:959,1 DA:953,0 DA:955,0 DA:956,0 DA:959,2 DA:960,1 DA:961,1 DA:962,1 DA:963,0 DA:965,0 DA:966,0 DA:969,2 DA:964,1 DA:965,1 DA:966,1 DA:967,2 DA:968,2 DA:970,1 DA:972,1 DA:974,1 DA:975,1 DA:976,1 DA:977,2 DA:978,2 DA:972,2 DA:973,2 DA:975,0 DA:976,0 DA:979,1 DA:980,1 DA:982,2 DA:983,2 DA:985,0 DA:986,0 DA:989,1 DA:990,1 DA:992,1 DA:982,1 DA:987,0 DA:992,0 DA:993,0 DA:994,0 DA:996,0 DA:997,0 DA:1002,0 DA:998,0 DA:999,0 DA:1000,0 DA:1001,0 DA:1003,0 DA:1004,0 DA:1005,0 DA:1006,0 DA:1007,0 DA:1008,0 DA:1009,0 DA:1010,0 DA:1011,0 DA:1013,0 DA:1014,0 DA:1012,0 DA:1015,0 DA:1016,0 DA:1017,0 DA:1018,0 DA:1019,0 DA:1021,0 DA:1022,0 DA:1025,0 DA:1029,0 DA:1030,0 DA:1034,1 DA:1035,2 DA:1036,2 DA:1037,2 DA:1038,3 DA:1039,1 DA:1020,0 DA:1024,1 DA:1025,2 DA:1026,2 DA:1027,2 DA:1028,3 DA:1029,1 DA:1031,0 DA:1032,0 DA:1033,0 DA:1041,0 DA:1042,0 DA:1043,0 DA:1051,0 DA:1045,1 DA:1046,1 DA:1047,1 DA:1048,2 DA:1049,2 DA:1050,3 DA:1051,1 DA:1052,7 DA:1053,2 DA:1054,1 DA:1055,1 DA:1056,1 DA:1057,1 DA:1058,2 DA:1059,2 DA:1060,3 DA:1061,1 DA:1062,7 DA:1063,2 DA:1064,1 DA:1065,1 DA:1066,1 DA:1067,1 DA:1062,2 DA:1063,1 DA:1065,0 DA:1066,0 DA:1069,1 DA:1070,1 DA:1071,2 DA:1072,2 DA:1073,1 DA:1075,0 DA:1076,0 DA:1079,1 DA:1080,1 DA:1081,2 DA:1082,2 DA:1085,2 DA:1086,1 DA:1088,0 DA:1089,0 DA:1075,2 DA:1076,1 DA:1078,0 DA:1079,0 DA:1082,1 DA:1083,1 DA:1084,2 DA:1085,0 DA:1086,0 DA:1089,2 DA:1090,1 DA:1091,3 DA:1092,1 DA:1093,1 DA:1094,2 DA:1095,0 DA:1096,0 DA:1099,2 DA:1100,1 DA:1101,3 DA:1102,1 DA:1103,3 DA:1104,3 DA:1105,1 DA:1107,0 DA:1093,3 DA:1094,3 DA:1095,1 DA:1097,0 DA:1098,0 DA:1099,0 DA:1102,0 DA:1103,0 DA:1104,0 DA:1108,0 DA:1109,0 DA:1112,0 DA:1113,0 DA:1114,0 DA:1118,0 DA:1119,0 DA:1122,1 DA:1123,1 DA:1124,1 DA:1129,1 DA:1130,2 DA:1131,1 DA:1134,0 DA:1135,0 DA:1136,0 DA:1173,1 DA:1174,1 DA:1112,1 DA:1113,1 DA:1114,1 DA:1119,1 DA:1120,2 DA:1121,1 DA:1124,0 DA:1125,0 DA:1126,0 DA:1166,1 DA:1167,1 DA:1168,1 DA:1175,1 DA:1182,2 DA:1184,2 DA:1177,1 DA:1184,1 DA:1185,4 DA:1186,3 DA:1191,1 DA:1192,6 DA:1193,5 DA:1198,1 DA:1199,2 DA:1200,2 DA:1201,1 DA:1202,2 DA:1204,0 DA:1228,2 DA:1229,4 DA:1230,4 DA:1231,2 DA:1232,0 DA:1234,0 DA:1263,1 DA:1264,2 DA:1265,1 DA:1266,0 DA:1268,3 DA:1269,1 DA:1273,1 DA:1274,2 DA:1192,2 DA:1193,2 DA:1194,1 DA:1195,2 DA:1197,0 DA:1221,1 DA:1222,2 DA:1223,2 DA:1224,1 DA:1225,0 DA:1227,0 DA:1256,1 DA:1257,2 DA:1258,1 DA:1259,0 DA:1261,3 DA:1262,1 DA:1266,1 DA:1267,2 DA:1268,2 DA:1270,3 DA:1274,1 DA:1275,2 DA:1277,3 DA:1281,1 DA:1282,2 DA:1283,0 DA:1285,2 DA:1298,1 DA:1299,2 DA:1300,2 DA:1276,0 DA:1278,2 DA:1291,1 DA:1292,2 DA:1293,2 DA:1294,2 DA:1295,2 DA:1296,5 DA:1299,1 DA:1301,2 DA:1302,2 DA:1303,5 DA:1306,1 DA:1308,2 DA:1310,4 DA:1313,0 DA:1340,1 DA:1341,1 DA:1342,1 DA:1343,6 DA:1355,1 DA:1357,0 DA:1372,1 DA:1373,1 DA:1376,1 DA:1377,3 DA:1389,1 DA:1390,1 DA:1393,0 DA:1303,4 DA:1306,0 DA:1333,1 DA:1334,1 DA:1335,1 DA:1336,6 DA:1348,1 DA:1350,0 DA:1365,1 DA:1366,1 DA:1369,1 DA:1370,3 DA:1382,1 DA:1383,1 DA:1386,0 DA:1387,0 DA:1388,0 DA:1390,0 DA:1394,0 DA:1395,0 DA:1397,0 DA:1401,0 DA:1402,0 DA:1403,0 DA:1405,0 DA:1419,2 DA:1420,2 DA:1421,6 DA:1422,3 DA:1423,12 DA:1424,8 DA:1396,0 DA:1398,0 DA:1412,2 DA:1413,2 DA:1414,6 DA:1415,4 DA:1416,12 DA:1417,8 DA:1419,1 DA:1420,3 DA:1421,1 DA:1424,1 DA:1426,1 DA:1427,3 DA:1428,1 DA:1431,1 DA:1433,1 DA:1434,4 LF:452 LH:249 DA:1427,4 LF:445 LH:242 end_of_record
pipe-cli/src/commands/run/mod.rs +28 −14 Original line number Diff line number Diff line Loading @@ -3,7 +3,10 @@ use color_eyre::eyre::Report; use exitcode; use nanoid::nanoid; use pipe_lib::VirtualEnvironment; use pipe_lib::{get_conda_environment_name, get_parent, Command, Config, EnvironmentValue, Label, ModuleLanguage, ModuleType, ModuleUri, Script}; use pipe_lib::{ get_conda_environment_name, get_parent, Command, Config, EnvironmentValue, Label, ModuleLanguage, ModuleType, ModuleUri, Script, TemplateAttribute, VirtualEnvironmentManager, }; use rayon::prelude::*; use std::convert::TryFrom; use std::env; Loading Loading @@ -242,26 +245,37 @@ pub fn run( } | ModuleLanguage::Python => { let working_dir = ModuleUri::from(uri).working_directory(Some(root.clone())); let manifest_path = PathBuf::from(&working_dir).join("environment.yml"); let loaded = Script::from_module(module.clone(), Some(root.clone())); let virtual_environment = match &module.template { | Some(TemplateAttribute::Template(value)) => match &value.virtual_environment { | Some(virtual_environment) => Some(virtual_environment.clone()), | None => { let conda_manifest_path = PathBuf::from(&working_dir).join("environment.yml"); match conda_manifest_path.try_exists() { | Ok(_) => match get_conda_environment_name(conda_manifest_path.clone()) { | Some(value) => { debug!( module = module.name, path = manifest_path.to_str().unwrap(), path = conda_manifest_path.to_str().unwrap(), "=> {} Manifest file", Label::using() ); let loaded = Script::from_module(module.clone(), Some(root.clone())); let environment = match get_conda_environment_name(manifest_path) { | Some(value) => Some(VirtualEnvironment::init().name(value).build()), | None => match &module.template { | Some(_) => loaded.clone().command.virtual_environment, Some(VirtualEnvironment::init().name(value).manager(VirtualEnvironmentManager::Conda).build()) } | None => None, }, | Err(_) => None, } } }, | Some(TemplateAttribute::Path(_)) => None, | None => None, }; let envs = EnvironmentValue::get_from_config(&cfg, Some(module.clone())); let script = loaded .expand_arguments_from(envs) .with_current_dir(working_dir) .with_virtual_environment(environment); .with_virtual_environment(virtual_environment); if dry_run { EnvironmentValue::print_all(); info!( Loading
pipe-lib/src/lib.rs +9 −16 Original line number Diff line number Diff line Loading @@ -410,9 +410,8 @@ pub struct Script { pub struct ScriptTemplate { pub command: String, pub container: Option<ContainerEnvironment>, pub manager: Option<VirtualEnvironmentManager>, #[serde(alias = "environment")] pub virtual_environment: Option<String>, pub virtual_environment: Option<VirtualEnvironment>, pub arguments: Instruction, } #[derive(Clone, Debug, Deserialize, Serialize)] Loading Loading @@ -928,19 +927,10 @@ impl Script { .map(|value| StringTemplate::new(&value).remove_spaces().value) .collect(), }; let manager = template.manager; let virtual_environment = match template.virtual_environment { | Some(name) => Some(VirtualEnvironment::init().name(name).maybe_manager(manager).build()), | None => None, }; let container = match template.container { | Some(value) => Some(value), | None => None, }; let command = Command::init() .name(template.command) .maybe_container(container) .maybe_virtual_environment(virtual_environment) .maybe_container(template.container) .maybe_virtual_environment(template.virtual_environment) .build(); Script::init().command(command).arguments(arguments).build() } Loading Loading @@ -1162,12 +1152,15 @@ impl Script { /// /// Run using "module-a" Conda virtual environment (basically executes script with `conda run -n <name>`) /// ``` /// use pipe_lib::{to_string, Command, Script, VirtualEnvironment}; /// use pipe_lib::{to_string, Command, Script, VirtualEnvironment, VirtualEnvironmentManager}; /// /// let command = Command::init().name("python".to_string()).build(); /// let arguments = to_string(vec!["-m", "lib"]); /// let script = Script::init().command(command).arguments(arguments).build(); /// let virtual_environment = VirtualEnvironment::init().name("module-a".to_string()).build(); /// let virtual_environment = VirtualEnvironment::init() /// .name("module-a".to_string()) /// .manager(VirtualEnvironmentManager::Conda) /// .build(); /// let output = script.with_virtual_environment(Some(virtual_environment)).run(); /// ``` pub fn with_virtual_environment(mut self, value: Option<VirtualEnvironment>) -> Self { Loading Loading @@ -1424,7 +1417,7 @@ pub fn read_file(path: PathBuf) -> Result<String, Box<dyn Error>> { file.read_to_string(&mut content) } | Err(err) => { error!(path = path.to_str().unwrap(), "=> {}", Label::fail()); error!(path = path.to_str().unwrap(), "=> {} Cannot read file", Label::fail()); Err(err) } }; Loading
pipe-lib/src/tests.rs +12 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,10 @@ fn test_add_forward_slash() { fn test_command() { let nonexistent: Command = Command::init().name("does-not-exist".to_string()).build(); assert!(!nonexistent.test()); let base = VirtualEnvironment::init().name("base".to_string()).build(); let base = VirtualEnvironment::init() .name("base".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); let python = Command::init().name("python".to_string()).virtual_environment(base).build(); assert_eq!(python.clone().name, "python".to_string()); assert_eq!(python.clone().virtual_environment.unwrap().to_string(), "base".to_string()); Loading Loading @@ -264,7 +267,10 @@ fn test_script_expand_arguments() { script.clone().expand_arguments().arguments, vec!["-m", "lib", "--input", "/path/to/input", "--output", "/path/to/output"] ); let environment = VirtualEnvironment::init().name("foo".to_string()).build(); let environment = VirtualEnvironment::init() .name("foo".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); assert_eq!( script .clone() Loading Loading @@ -312,7 +318,10 @@ fn test_script_expand_arguments_from() { ("INPUT_DIRECTORY".to_string(), "FOO".to_string()), ("OUTPUT_DIRECTORY".to_string(), "BAR".to_string()), ]); let environment = VirtualEnvironment::init().name("foo".to_string()).build(); let environment = VirtualEnvironment::init() .name("foo".to_string()) .manager(VirtualEnvironmentManager::Conda) .build(); assert_eq!( script .clone() Loading
tests/fixtures/template_docker_pixi.json +4 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,10 @@ "name": "CONTAINER", "runtime": "docker" }, "manager": "pixi", "environment": "ENVIRONMENT", "environment": { "name": "ENVIRONMENT", "manager": "pixi" }, "arguments": [ "-m", "lib", Loading