Commit 83d5f0dd authored by Wohlgemuth, Jason's avatar Wohlgemuth, Jason
Browse files

feat: Implement container attribute for Commands; Pave way for non-conda...

feat: Implement container attribute for Commands; Pave way for non-conda virtual environment managers
parent 7ef788aa
Loading
Loading
Loading
Loading
Loading
+514 −487
Original line number Diff line number Diff line
@@ -108,145 +108,145 @@ LH:0
end_of_record
TN:
SF:/root/dev/command/pipe-cli/src/commands/run/mod.rs
FN:16,run
FN:17,run
FNF:1
FNDA:0,run
DA:16,0
DA:26,0
DA:17,0
DA:27,0
DA:28,0
DA:30,0
DA:29,0
DA:31,0
DA:33,0
DA:35,0
DA:32,0
DA:34,0
DA:36,0
DA:37,0
DA:39,0
DA:38,0
DA:40,0
DA:42,0
DA:41,0
DA:43,0
DA:44,0
DA:47,0
DA:45,0
DA:48,0
DA:50,0
DA:49,0
DA:51,0
DA:52,0
DA:53,0
DA:54,0
DA:55,0
DA:59,0
DA:62,0
DA:56,0
DA:60,0
DA:63,0
DA:64,0
DA:66,0
DA:65,0
DA:67,0
DA:73,0
DA:75,0
DA:77,0
DA:79,0
DA:81,0
DA:84,0
DA:68,0
DA:74,0
DA:76,0
DA:78,0
DA:80,0
DA:82,0
DA:85,0
DA:86,0
DA:89,0
DA:91,0
DA:87,0
DA:90,0
DA:92,0
DA:93,0
DA:95,0
DA:100,0
DA:102,0
DA:104,0
DA:106,0
DA:94,0
DA:96,0
DA:101,0
DA:103,0
DA:105,0
DA:107,0
DA:111,0
DA:108,0
DA:112,0
DA:113,0
DA:116,0
DA:118,0
DA:114,0
DA:117,0
DA:119,0
DA:121,0
DA:124,0
DA:120,0
DA:122,0
DA:125,0
DA:127,0
DA:126,0
DA:128,0
DA:130,0
DA:129,0
DA:131,0
DA:132,0
DA:133,0
DA:134,0
DA:135,0
DA:137,0
DA:141,0
DA:142,0
DA:143,0
DA:144,0
DA:146,0
DA:136,0
DA:138,0
DA:148,0
DA:149,0
DA:150,0
DA:152,0
DA:154,0
DA:155,0
DA:151,0
DA:153,0
DA:157,0
DA:159,0
DA:163,0
DA:164,0
DA:165,0
DA:161,0
DA:162,0
DA:166,0
DA:168,0
DA:173,0
DA:174,0
DA:176,0
DA:177,0
DA:178,0
DA:179,0
DA:181,0
DA:184,0
DA:186,0
DA:188,0
DA:187,0
DA:191,0
DA:192,0
DA:193,0
DA:194,0
DA:195,0
DA:196,0
DA:197,0
DA:198,0
DA:199,0
DA:200,0
DA:202,0
DA:201,0
DA:204,0
DA:205,0
DA:206,0
DA:207,0
DA:208,0
DA:209,0
DA:210,0
DA:211,0
DA:212,0
DA:213,0
DA:214,0
DA:215,0
DA:216,0
DA:217,0
DA:218,0
DA:219,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:235,0
DA:234,0
DA:237,0
DA:239,0
DA:240,0
DA:241,0
DA:242,0
DA:243,0
DA:244,0
DA:247,0
DA:245,0
DA:246,0
DA:248,0
DA:250,0
DA:251,0
DA:252,0
DA:253,0
DA:254,0
DA:255,0
DA:256,0
DA:259,0
DA:262,0
DA:257,0
DA:260,0
DA:261,0
DA:263,0
DA:264,0
DA:265,0
DA:266,0
DA:267,0
DA:270,0
DA:269,0
DA:272,0
DA:275,0
DA:278,0
DA:280,0
DA:283,0
DA:285,0
LF:136
LH:0
end_of_record
@@ -370,63 +370,64 @@ LH:0
end_of_record
TN:
SF:/root/dev/command/pipe-lib/src/lib.rs
FN:388,Command::test
FN:411,Config::read
FN:435,Config::read_json
FN:456,Config::read_yaml
FN:473,Config::set_environment_variables
FN:487,<impl PartialEq for Details>::eq
FN:494,EnvironmentValue::from_string
FN:497,EnvironmentValue::from_value
FN:505,EnvironmentValue::prepend_prefix
FN:509,EnvironmentValue::trim_prefix
FN:513,EnvironmentValue::get_from_config
FN:520,EnvironmentValue::get_from_serde
FN:534,EnvironmentValue::get_all
FN:544,EnvironmentValue::print_all
FN:549,EnvironmentValue::set_variable
FN:559,EnvironmentValue::set_variables
FN:566,Extension::from_string
FN:575,Label::dry_run
FN:579,Label::invalid
FN:583,Label::fail
FN:587,Label::found
FN:591,Label::not_found
FN:595,Label::output
FN:599,Label::read
FN:603,Label::rejected
FN:607,Label::run
FN:611,Label::using
FN:617,ModuleUri<'_>::from
FN:627,ModuleUri<'_>::hash
FN:651,ModuleUri<'_>::get_whitelist
FN:654,ModuleUri<'_>::is_allowed
FN:657,ModuleUri<'_>::test
FN:658,ModuleUri<'_>::test::check
FN:675,ModuleUri<'_>::working_directory
FN:687,SemanticVersion::from_string
FN:710,Script::expand_arguments
FN:745,Script::expand_arguments_from
FN:780,Script::from_module
FN:838,Script::from_path
FN:861,Script::from_template
FN:878,Script::get_command
FN:884,Script::get_arguments
FN:895,Script::maybe_create_conda_environment
FN:928,Script::maybe_git_clone
FN:935,Script::python_default
FN:949,Script::run
FN:1019,Script::with_current_dir
FN:1057,Script::with_environment
FN:1062,Script::with_envs
FN:1071,StringTemplate::new
FN:1080,StringTemplate::expand
FN:1087,StringTemplate::get_variable
FN:1117,StringTemplate::is_handlebars
FN:1152,StringTemplate::remove_spaces
FN:1162,add_dot_slash
FN:1170,add_forward_slash
FNF:56
FN:427,Command::test
FN:450,Config::read
FN:474,Config::read_json
FN:495,Config::read_yaml
FN:512,Config::set_environment_variables
FN:526,<impl PartialEq for Details>::eq
FN:533,EnvironmentValue::from_string
FN:536,EnvironmentValue::from_value
FN:544,EnvironmentValue::prepend_prefix
FN:548,EnvironmentValue::trim_prefix
FN:552,EnvironmentValue::get_from_config
FN:559,EnvironmentValue::get_from_serde
FN:573,EnvironmentValue::get_all
FN:583,EnvironmentValue::print_all
FN:588,EnvironmentValue::set_variable
FN:598,EnvironmentValue::set_variables
FN:605,Extension::from_string
FN:614,Label::dry_run
FN:618,Label::invalid
FN:622,Label::fail
FN:626,Label::found
FN:630,Label::not_found
FN:634,Label::output
FN:638,Label::read
FN:642,Label::rejected
FN:646,Label::run
FN:650,Label::using
FN:656,ModuleUri<'_>::from
FN:666,ModuleUri<'_>::hash
FN:690,ModuleUri<'_>::get_whitelist
FN:693,ModuleUri<'_>::is_allowed
FN:696,ModuleUri<'_>::test
FN:697,ModuleUri<'_>::test::check
FN:714,ModuleUri<'_>::working_directory
FN:726,SemanticVersion::from_string
FN:749,Script::expand_arguments
FN:784,Script::expand_arguments_from
FN:819,Script::from_module
FN:877,Script::from_path
FN:900,Script::from_template
FN:925,Script::get_command
FN:935,Script::get_arguments
FN:966,Script::maybe_create_virtual_environment
FN:1003,Script::maybe_git_clone
FN:1010,Script::python_default
FN:1024,Script::run
FN:1091,Script::with_container
FN:1098,Script::with_current_dir
FN:1103,Script::with_envs
FN:1142,Script::with_virtual_environment
FN:1151,StringTemplate::new
FN:1160,StringTemplate::expand
FN:1167,StringTemplate::get_variable
FN:1197,StringTemplate::is_handlebars
FN:1232,StringTemplate::remove_spaces
FN:1242,add_dot_slash
FN:1250,add_forward_slash
FNF:57
FNDA:1,Command::test
FNDA:1,Config::read
FNDA:1,Config::read_json
@@ -469,13 +470,14 @@ FNDA:1,Script::from_path
FNDA:1,Script::from_template
FNDA:1,Script::get_command
FNDA:1,Script::get_arguments
FNDA:0,Script::maybe_create_conda_environment
FNDA:0,Script::maybe_create_virtual_environment
FNDA:1,Script::maybe_git_clone
FNDA:0,Script::python_default
FNDA:1,Script::run
FNDA:1,Script::with_container
FNDA:1,Script::with_current_dir
FNDA:1,Script::with_environment
FNDA:0,Script::with_envs
FNDA:1,Script::with_virtual_environment
FNDA:1,StringTemplate::new
FNDA:1,StringTemplate::expand
FNDA:1,StringTemplate::get_variable
@@ -483,426 +485,451 @@ FNDA:1,StringTemplate::is_handlebars
FNDA:1,StringTemplate::remove_spaces
FNDA:1,add_dot_slash
FNDA:1,add_forward_slash
DA:388,1
DA:389,2
DA:390,1
DA:391,3
DA:392,2
DA:394,3
DA:395,1
DA:398,0
DA:399,0
DA:404,3
DA:405,1
DA:411,1
DA:412,2
DA:413,2
DA:414,1
DA:415,0
DA:417,2
DA:418,1
DA:419,0
DA:423,2
DA:424,1
DA:426,0
DA:427,0
DA:435,1
DA:436,2
DA:437,2
DA:439,0
DA:440,0
DA:443,2
DA:444,2
DA:445,4
DA:446,0
DA:448,6
DA:449,2
DA:456,1
DA:457,2
DA:458,1
DA:460,0
DA:461,0
DA:464,2
DA:465,1
DA:466,2
DA:467,0
DA:469,3
DA:470,1
DA:473,0
DA:474,0
DA:475,0
DA:476,0
DA:477,0
DA:427,1
DA:428,2
DA:429,1
DA:430,4
DA:431,4
DA:433,6
DA:434,2
DA:437,0
DA:438,0
DA:443,3
DA:444,1
DA:450,1
DA:451,2
DA:452,2
DA:453,1
DA:454,0
DA:456,2
DA:457,1
DA:458,0
DA:462,2
DA:463,1
DA:465,0
DA:466,0
DA:474,1
DA:475,2
DA:476,2
DA:478,0
DA:483,0
DA:487,1
DA:488,1
DA:494,0
DA:495,0
DA:497,0
DA:498,0
DA:479,0
DA:482,3
DA:483,2
DA:484,4
DA:485,0
DA:487,6
DA:488,2
DA:495,1
DA:496,2
DA:497,1
DA:499,0
DA:500,0
DA:501,0
DA:502,0
DA:505,0
DA:503,2
DA:504,1
DA:505,2
DA:506,0
DA:508,3
DA:509,1
DA:510,1
DA:511,2
DA:512,0
DA:513,0
DA:514,0
DA:515,0
DA:516,0
DA:517,0
DA:518,0
DA:520,0
DA:521,0
DA:522,0
DA:523,0
DA:524,0
DA:525,0
DA:526,0
DA:527,0
DA:528,0
DA:530,0
DA:532,0
DA:534,1
DA:535,1
DA:536,2
DA:537,2
DA:538,2
DA:539,2
DA:540,1
DA:526,1
DA:527,1
DA:533,0
DA:534,0
DA:536,0
DA:537,0
DA:538,0
DA:539,0
DA:540,0
DA:541,0
DA:544,0
DA:545,0
DA:546,0
DA:549,0
DA:550,0
DA:551,0
DA:548,1
DA:549,1
DA:550,2
DA:552,0
DA:553,0
DA:554,0
DA:555,0
DA:556,0
DA:557,0
DA:559,0
DA:560,0
DA:561,0
DA:562,0
DA:566,1
DA:567,2
DA:568,2
DA:569,3
DA:570,0
DA:575,0
DA:576,0
DA:577,0
DA:579,0
DA:580,0
DA:581,0
DA:563,0
DA:564,0
DA:565,0
DA:566,0
DA:567,0
DA:569,0
DA:571,0
DA:573,1
DA:574,1
DA:575,2
DA:576,2
DA:577,2
DA:578,2
DA:579,1
DA:583,0
DA:584,0
DA:585,0
DA:587,0
DA:588,0
DA:589,0
DA:590,0
DA:591,0
DA:592,0
DA:593,0
DA:595,1
DA:596,3
DA:597,3
DA:594,0
DA:598,0
DA:599,0
DA:600,0
DA:601,0
DA:603,0
DA:604,0
DA:605,0
DA:607,0
DA:608,0
DA:605,1
DA:606,2
DA:607,2
DA:608,3
DA:609,0
DA:611,0
DA:612,0
DA:613,0
DA:617,2
DA:618,2
DA:619,5
DA:620,2
DA:621,2
DA:614,0
DA:615,0
DA:616,0
DA:618,0
DA:619,0
DA:620,0
DA:622,0
DA:624,1
DA:627,1
DA:628,1
DA:629,1
DA:630,1
DA:631,2
DA:623,0
DA:624,0
DA:626,0
DA:627,0
DA:628,0
DA:630,0
DA:631,0
DA:632,0
DA:634,4
DA:638,4
DA:639,4
DA:641,4
DA:642,2
DA:644,2
DA:634,1
DA:635,3
DA:636,3
DA:638,0
DA:639,0
DA:640,0
DA:642,0
DA:643,0
DA:644,0
DA:646,0
DA:647,0
DA:648,0
DA:650,0
DA:651,0
DA:652,0
DA:654,0
DA:655,0
DA:657,0
DA:658,0
DA:659,0
DA:656,2
DA:657,2
DA:658,5
DA:659,2
DA:660,2
DA:661,0
DA:662,0
DA:663,0
DA:664,0
DA:665,0
DA:666,0
DA:667,0
DA:669,0
DA:663,1
DA:666,1
DA:667,1
DA:668,1
DA:669,1
DA:670,2
DA:671,0
DA:675,0
DA:676,0
DA:677,0
DA:678,0
DA:679,0
DA:681,0
DA:682,0
DA:687,1
DA:688,1
DA:689,3
DA:690,3
DA:691,3
DA:710,1
DA:711,2
DA:714,2
DA:715,1
DA:716,2
DA:717,1
DA:718,1
DA:720,2
DA:724,1
DA:725,1
DA:745,1
DA:746,2
DA:749,2
DA:750,1
DA:751,2
DA:752,2
DA:673,4
DA:677,4
DA:678,4
DA:680,4
DA:681,2
DA:683,2
DA:686,0
DA:690,0
DA:691,0
DA:693,0
DA:694,0
DA:696,0
DA:697,0
DA:698,0
DA:700,0
DA:701,0
DA:702,0
DA:703,0
DA:704,0
DA:705,0
DA:706,0
DA:708,0
DA:710,0
DA:714,0
DA:715,0
DA:716,0
DA:717,0
DA:718,0
DA:720,0
DA:721,0
DA:726,1
DA:727,1
DA:728,3
DA:729,3
DA:730,3
DA:749,1
DA:750,2
DA:753,2
DA:754,1
DA:755,2
DA:756,1
DA:757,1
DA:759,2
DA:763,1
DA:764,1
DA:780,0
DA:782,0
DA:783,0
DA:784,0
DA:787,0
DA:788,0
DA:789,0
DA:790,0
DA:791,0
DA:793,0
DA:794,0
DA:795,0
DA:798,0
DA:799,0
DA:800,0
DA:801,0
DA:804,0
DA:805,0
DA:806,0
DA:809,0
DA:811,0
DA:812,0
DA:815,0
DA:784,1
DA:785,2
DA:788,2
DA:789,1
DA:790,2
DA:791,2
DA:794,2
DA:796,1
DA:798,2
DA:802,1
DA:803,1
DA:819,0
DA:821,0
DA:822,0
DA:838,1
DA:839,2
DA:840,1
DA:842,0
DA:823,0
DA:826,0
DA:827,0
DA:828,0
DA:829,0
DA:830,0
DA:832,0
DA:833,0
DA:834,0
DA:837,0
DA:838,0
DA:839,0
DA:840,0
DA:843,0
DA:846,2
DA:847,1
DA:848,1
DA:861,1
DA:862,1
DA:863,3
DA:867,2
DA:869,2
DA:871,2
DA:874,1
DA:875,2
DA:876,3
DA:878,1
DA:844,0
DA:845,0
DA:848,0
DA:850,0
DA:851,0
DA:854,0
DA:860,0
DA:861,0
DA:877,1
DA:878,2
DA:879,1
DA:880,1
DA:881,1
DA:884,1
DA:885,1
DA:881,0
DA:882,0
DA:885,2
DA:886,1
DA:887,1
DA:888,2
DA:889,1
DA:891,1
DA:895,0
DA:896,0
DA:897,0
DA:898,0
DA:900,0
DA:901,0
DA:902,0
DA:903,0
DA:904,0
DA:905,0
DA:907,0
DA:908,0
DA:909,0
DA:910,0
DA:911,0
DA:912,0
DA:913,0
DA:915,0
DA:916,0
DA:919,0
DA:923,0
DA:924,0
DA:900,1
DA:901,1
DA:902,3
DA:906,2
DA:908,2
DA:910,2
DA:913,1
DA:914,1
DA:915,2
DA:916,1
DA:918,2
DA:919,1
DA:920,1
DA:921,1
DA:923,1
DA:925,1
DA:926,1
DA:927,1
DA:928,1
DA:929,2
DA:930,2
DA:930,1
DA:931,2
DA:932,3
DA:933,1
DA:935,0
DA:936,0
DA:937,0
DA:945,0
DA:932,1
DA:935,1
DA:936,1
DA:937,1
DA:938,1
DA:939,1
DA:940,1
DA:942,0
DA:943,0
DA:946,2
DA:947,1
DA:949,1
DA:950,1
DA:951,1
DA:952,2
DA:953,2
DA:954,3
DA:955,1
DA:956,7
DA:952,1
DA:953,1
DA:954,2
DA:955,2
DA:957,2
DA:958,1
DA:959,1
DA:960,1
DA:961,1
DA:966,2
DA:967,1
DA:969,0
DA:970,0
DA:973,1
DA:974,1
DA:975,2
DA:976,2
DA:979,2
DA:980,1
DA:966,0
DA:971,0
DA:972,0
DA:973,0
DA:975,0
DA:976,0
DA:977,0
DA:978,0
DA:979,0
DA:980,0
DA:982,0
DA:983,0
DA:986,1
DA:987,1
DA:988,2
DA:989,0
DA:984,0
DA:985,0
DA:986,0
DA:987,0
DA:988,0
DA:990,0
DA:993,2
DA:994,1
DA:995,3
DA:996,1
DA:997,3
DA:998,3
DA:999,1
DA:1001,0
DA:1002,0
DA:1003,0
DA:1006,0
DA:1007,0
DA:1008,0
DA:991,0
DA:994,0
DA:998,0
DA:999,0
DA:1003,1
DA:1004,2
DA:1005,2
DA:1006,2
DA:1007,3
DA:1008,1
DA:1010,0
DA:1011,0
DA:1012,0
DA:1013,0
DA:1019,1
DA:1020,2
DA:1021,1
DA:1057,1
DA:1058,1
DA:1059,1
DA:1062,0
DA:1063,0
DA:1020,0
DA:1024,1
DA:1025,1
DA:1026,1
DA:1027,2
DA:1028,2
DA:1029,3
DA:1030,1
DA:1031,7
DA:1032,2
DA:1033,1
DA:1034,1
DA:1035,1
DA:1036,1
DA:1041,2
DA:1042,1
DA:1044,0
DA:1045,0
DA:1048,1
DA:1049,1
DA:1050,2
DA:1051,2
DA:1054,2
DA:1055,1
DA:1057,0
DA:1058,0
DA:1061,1
DA:1062,1
DA:1063,2
DA:1064,0
DA:1065,0
DA:1068,2
DA:1069,1
DA:1070,3
DA:1071,1
DA:1073,1
DA:1080,1
DA:1081,4
DA:1082,3
DA:1087,1
DA:1088,2
DA:1089,2
DA:1090,1
DA:1091,2
DA:1093,0
DA:1117,1
DA:1118,2
DA:1119,2
DA:1120,1
DA:1121,0
DA:1123,0
DA:1152,1
DA:1153,2
DA:1154,1
DA:1155,0
DA:1157,3
DA:1158,1
DA:1162,1
DA:1163,2
DA:1164,2
DA:1166,3
DA:1072,3
DA:1073,3
DA:1074,1
DA:1076,0
DA:1077,0
DA:1078,0
DA:1081,0
DA:1082,0
DA:1083,0
DA:1087,0
DA:1088,0
DA:1091,1
DA:1092,1
DA:1093,1
DA:1098,1
DA:1099,2
DA:1100,1
DA:1103,0
DA:1104,0
DA:1105,0
DA:1142,1
DA:1143,1
DA:1144,1
DA:1151,1
DA:1153,1
DA:1160,1
DA:1161,4
DA:1162,3
DA:1167,1
DA:1168,2
DA:1169,2
DA:1170,1
DA:1171,2
DA:1172,0
DA:1174,2
DA:1187,1
DA:1188,2
DA:1189,2
DA:1190,2
DA:1191,2
DA:1192,5
DA:1195,1
DA:1197,2
DA:1199,4
DA:1202,0
DA:1229,1
DA:1230,1
DA:1231,1
DA:1232,6
DA:1244,1
DA:1246,0
DA:1261,1
DA:1262,1
DA:1265,1
DA:1266,3
DA:1278,1
DA:1279,1
DA:1173,0
DA:1197,1
DA:1198,2
DA:1199,2
DA:1200,1
DA:1201,0
DA:1203,0
DA:1232,1
DA:1233,2
DA:1234,1
DA:1235,0
DA:1237,3
DA:1238,1
DA:1242,1
DA:1243,2
DA:1244,2
DA:1246,3
DA:1250,1
DA:1251,2
DA:1252,0
DA:1254,2
DA:1267,1
DA:1268,2
DA:1269,2
DA:1270,2
DA:1271,2
DA:1272,5
DA:1275,1
DA:1277,2
DA:1279,4
DA:1282,0
DA:1283,0
DA:1284,0
DA:1286,0
DA:1290,0
DA:1291,0
DA:1292,0
DA:1294,0
DA:1308,2
DA:1309,2
DA:1310,6
DA:1311,4
DA:1312,12
DA:1313,8
DA:1315,1
DA:1316,3
DA:1317,1
DA:1320,1
DA:1322,1
DA:1323,4
LF:420
LH:222
DA:1309,1
DA:1310,1
DA:1311,1
DA:1312,6
DA:1324,1
DA:1326,0
DA:1341,1
DA:1342,1
DA:1345,1
DA:1346,3
DA:1358,1
DA:1359,1
DA:1362,0
DA:1363,0
DA:1364,0
DA:1366,0
DA:1370,0
DA:1371,0
DA:1372,0
DA:1374,0
DA:1388,2
DA:1389,2
DA:1390,6
DA:1391,4
DA:1392,12
DA:1393,8
DA:1395,1
DA:1396,3
DA:1397,1
DA:1400,1
DA:1402,1
DA:1403,4
LF:445
LH:245
end_of_record
+17 −4
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ use clap_verbosity_flag::Verbosity;
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 rayon::prelude::*;
use std::convert::TryFrom;
@@ -138,7 +139,13 @@ pub fn run(
                                    }
                                }
                                // TODO: Check script repository with is_valid_pipe_module_python
                                if let Some(script) = Script::maybe_create_conda_environment(module_root, verbose.log_level()) {
                                // TODO: Add support for designating virtual environment manager
                                // let manager = match &module.template {
                                //     | Some(TemplateAttribute::Template(ScriptTemplate { manager, .. })) => manager,
                                //     | Some(TemplateAttribute::Path(_)) => &None,
                                //     | _ => &None,
                                // };
                                if let Some(script) = Script::maybe_create_virtual_environment(module_root, None, verbose.log_level()) {
                                    if dry_run {
                                        let cwd = script.clone().current_dir;
                                        info!(module = module.name, script = script.to_string(), cwd, "=> {}", Label::dry_run());
@@ -160,7 +167,13 @@ pub fn run(
                                    programming_language
                                );
                                // TODO: Check script repository with is_valid_pipe_module_python
                                if let Some(script) = Script::maybe_create_conda_environment(uri.to_string(), verbose.log_level()) {
                                // TODO: Add support for designating virtual environment manager
                                // let manager = match &module.template {
                                //     | Some(TemplateAttribute::Template(ScriptTemplate { manager, .. })) => manager,
                                //     | Some(TemplateAttribute::Path(_)) => &None,
                                //     | _ => &None,
                                // };
                                if let Some(script) = Script::maybe_create_virtual_environment(uri.to_string(), None, verbose.log_level()) {
                                    if dry_run {
                                        let cwd = script.clone().current_dir;
                                        info!(module = module.name, script = script.to_string(), cwd, "=> {}", Label::dry_run());
@@ -238,7 +251,7 @@ pub fn run(
                        );
                        let loaded = Script::from_module(module.clone(), Some(root.clone()));
                        let environment = match get_conda_environment_name(manifest_path) {
                            | Some(value) => Some(value),
                            | Some(value) => Some(VirtualEnvironment::init().name(value).build()),
                            | None => match &module.template {
                                | Some(_) => loaded.clone().command.virtual_environment,
                                | None => None,
@@ -248,7 +261,7 @@ pub fn run(
                        let script = loaded
                            .expand_arguments_from(envs)
                            .with_current_dir(working_dir)
                            .with_environment(environment);
                            .with_virtual_environment(environment);
                        if dry_run {
                            EnvironmentValue::print_all();
                            info!(
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ edition = "2021"
[dependencies]
bon = "2.0.1"
clap = { version = "4.4.2" }
derive_more = { version = "1.0.0", features = ["display"] }
derive_more = { version = "1.0.0", features = ["display", "from_str"] }
env_logger = "0.11.3"
fancy-regex = "0.13.0"
is-terminal = "0.4.9"
+111 −31

File changed.

Preview size limit exceeded, changes collapsed.

+57 −12
Original line number Diff line number Diff line
@@ -25,9 +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 python = Command::init().name("python".to_string()).virtual_environment("base".to_string()).build();
    assert_eq!(python.name, "python".to_string());
    assert_eq!(python.virtual_environment, Some("base".to_string()));
    let base = VirtualEnvironment::init().name("base".to_string()).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());
    if cfg!(target_os = "windows") {
        let command = Command::init().name("cmd".to_string()).build();
        assert!(command.test());
@@ -144,7 +145,9 @@ fn test_get_conda_environment_list() {
fn test_get_conda_environment_name() {
    let path = format!("{}/environment.yml", FIXTURES);
    let manifest_path = PathBuf::from(path);
    assert!(get_conda_environment_name(manifest_path).unwrap().starts_with("some-really-interesting-name"));
    assert!(get_conda_environment_name(manifest_path)
        .unwrap()
        .starts_with("some-really-interesting-name"));
    let manifest_path = PathBuf::from("/non/existing/manifest.yml");
    assert_eq!(get_conda_environment_name(manifest_path), None);
}
@@ -261,16 +264,20 @@ fn test_script_expand_arguments() {
        script.clone().expand_arguments().arguments,
        vec!["-m", "lib", "--input", "/path/to/input", "--output", "/path/to/output"]
    );
    let environment = "foo".to_string();
    let environment = VirtualEnvironment::init().name("foo".to_string()).build();
    assert_eq!(
        script.clone().expand_arguments().with_environment(Some(environment.clone())).to_string(),
        script
            .clone()
            .expand_arguments()
            .with_virtual_environment(Some(environment.clone()))
            .to_string(),
        format!(
            "conda run --name {} --no-capture-output python -m lib --input /path/to/input --output /path/to/output",
            environment
        )
    );
    assert_eq!(
        script.clone().expand_arguments().with_environment(None).to_string(),
        script.clone().expand_arguments().with_virtual_environment(None).to_string(),
        "python -m lib --input /path/to/input --output /path/to/output"
    );
    let command = Command::init().name("echo".to_string()).build();
@@ -283,7 +290,7 @@ fn test_script_expand_arguments() {
    ]);
    let script = Script::init().command(command).arguments(arguments).build();
    assert_eq!(
        script.clone().expand_arguments().with_environment(None).to_string(),
        script.clone().expand_arguments().with_virtual_environment(None).to_string(),
        "echo one! two! and three! one! two! three! one!/three!"
    );
}
@@ -305,12 +312,12 @@ fn test_script_expand_arguments_from() {
        ("INPUT_DIRECTORY".to_string(), "FOO".to_string()),
        ("OUTPUT_DIRECTORY".to_string(), "BAR".to_string()),
    ]);
    let environment = "foo".to_string();
    let environment = VirtualEnvironment::init().name("foo".to_string()).build();
    assert_eq!(
        script
            .clone()
            .expand_arguments_from(envs.clone())
            .with_environment(Some(environment.clone()))
            .with_virtual_environment(Some(environment.clone()))
            .to_string(),
        format!(
            "conda run --name {} --no-capture-output python -m lib --input FOO --output BAR",
@@ -318,7 +325,11 @@ fn test_script_expand_arguments_from() {
        )
    );
    assert_eq!(
        script.clone().expand_arguments_from(envs.clone()).with_environment(None).to_string(),
        script
            .clone()
            .expand_arguments_from(envs.clone())
            .with_virtual_environment(None)
            .to_string(),
        "python -m lib --input FOO --output BAR"
    );
    let command = Command::init().name("echo".to_string()).build();
@@ -336,7 +347,11 @@ fn test_script_expand_arguments_from() {
    ]);
    let script = Script::init().command(command).arguments(arguments).build();
    assert_eq!(
        script.clone().expand_arguments_from(envs.clone()).with_environment(None).to_string(),
        script
            .clone()
            .expand_arguments_from(envs.clone())
            .with_virtual_environment(None)
            .to_string(),
        "echo one two and three one two three one/three"
    );
}
@@ -358,6 +373,36 @@ fn test_script_from_template() {
    );
    assert_eq!(script.command.name, "python");
    assert_eq!(script.arguments, expected_value);
    // Pixi virtual environment manager
    let path = PathBuf::from(format!("{}/template_pixi.json", FIXTURES));
    let script = Script::from_path(path);
    assert_eq!(
        format!("{}", script),
        "pixi run --environment cuda python -m lib --input {{INPUT_DIRECTORY}} --output {{OUTPUT_DIRECTORY}}"
    );
}

#[test]
fn test_script_get_arguments() {
    let command = Command::init().name("echo".to_string()).build();
    let manager = VirtualEnvironmentManager::Conda;
    let virtual_environment = VirtualEnvironment::init().name("base".to_string()).manager(manager).build();
    let container = ContainerEnvironment::init().name("CONTAINER".to_string()).build();
    let arguments = to_string(vec!["hello", "world"]);
    let script = Script::init().command(command).arguments(arguments).build();
    assert_eq!(format!("{}", script), "echo hello world");
    assert_eq!(
        format!("{}", script.clone().with_virtual_environment(Some(virtual_environment.clone()))),
        "conda run --name base --no-capture-output echo hello world"
    );
    assert_eq!(
        format!("{}", script.clone().with_container(container.clone())),
        "docker run --rm CONTAINER echo hello world"
    );
    assert_eq!(
        format!("{}", script.with_container(container).with_virtual_environment(Some(virtual_environment))),
        "docker run --rm CONTAINER conda run --name base --no-capture-output echo hello world"
    );
}

#[test]
Loading