Loading ROADMAP.md +2 −2 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ - [X] Auto-create (Conda/[Mamba](https://mamba.readthedocs.io/en/latest/index.html)) virtual environments - [X] Parallelize module preparation - [ ] Enhanced URL security - [ ] Provide `--offline` flag to disable reachability check - [X] Provide `--offline` flag to disable reachability check - [ ] Filter remote module URLs against white list - [ ] Check remote URLs are valid and reachable - [ ] Multi-platform release binaries published to GitLab repository Loading @@ -59,7 +59,7 @@ - [ ] Add Docker (and Podman) environment - [ ] Add Apptainer environment - [ ] Add Pixi environment - [ ] `--skip-verify-requirements` flag for running workflow without verifying environment - [X] `--skip-verify-requirements` flag for running workflow without verifying environment - [ ] "Check" subcommand - [X] Create standardized function signature for check modules ```rust Loading lcov.info +434 −432 Original line number Diff line number Diff line Loading @@ -133,105 +133,103 @@ DA:51,0 DA:52,0 DA:53,0 DA:54,0 DA:58,0 DA:55,0 DA:59,0 DA:60,0 DA:62,0 DA:63,0 DA:68,0 DA:70,0 DA:64,0 DA:66,0 DA:67,0 DA:72,0 DA:74,0 DA:75,0 DA:76,0 DA:78,0 DA:79,0 DA:80,0 DA:82,0 DA:83,0 DA:85,0 DA:86,0 DA:84,0 DA:87,0 DA:89,0 DA:94,0 DA:96,0 DA:90,0 DA:91,0 DA:93,0 DA:98,0 DA:100,0 DA:101,0 DA:102,0 DA:104,0 DA:105,0 DA:106,0 DA:107,0 DA:109,0 DA:110,0 DA:112,0 DA:113,0 DA:115,0 DA:118,0 DA:111,0 DA:114,0 DA:116,0 DA:117,0 DA:119,0 DA:121,0 DA:122,0 DA:124,0 DA:123,0 DA:125,0 DA:126,0 DA:127,0 DA:128,0 DA:129,0 DA:130,0 DA:131,0 DA:132,0 DA:133,0 DA:135,0 DA:136,0 DA:137,0 DA:138,0 DA:139,0 DA:140,0 DA:141,0 DA:142,0 DA:144,0 DA:146,0 DA:148,0 DA:149,0 DA:150,0 DA:152,0 DA:153,0 DA:157,0 DA:158,0 DA:159,0 DA:160,0 DA:161,0 DA:162,0 DA:167,0 DA:168,0 DA:163,0 DA:164,0 DA:166,0 DA:171,0 DA:172,0 DA:175,0 DA:178,0 DA:180,0 DA:176,0 DA:179,0 DA:182,0 DA:185,0 DA:187,0 DA:184,0 DA:186,0 DA:189,0 DA:191,0 DA:194,0 DA:193,0 DA:195,0 DA:196,0 DA:198,0 DA:199,0 DA:200,0 DA:202,0 DA:204,0 DA:205,0 DA:206,0 DA:208,0 DA:209,0 DA:210,0 DA:212,0 DA:213,0 DA:214,0 DA:217,0 DA:218,0 DA:219,0 DA:221,0 DA:222,0 DA:224,0 DA:225,0 DA:223,0 DA:226,0 DA:228,0 DA:229,0 DA:232,0 DA:233,0 DA:234,0 DA:235,0 DA:236,0 DA:237,0 DA:238,0 DA:239,0 DA:240,0 DA:241,0 DA:242,0 DA:243,0 DA:244,0 DA:245,0 DA:246,0 Loading @@ -239,14 +237,18 @@ DA:247,0 DA:248,0 DA:249,0 DA:250,0 DA:251,0 DA:252,0 DA:255,0 DA:258,0 DA:261,0 DA:263,0 DA:266,0 DA:268,0 LF:135 DA:253,0 DA:254,0 DA:256,0 DA:259,0 DA:262,0 DA:265,0 DA:267,0 DA:270,0 DA:272,0 LF:137 LH:0 end_of_record TN: Loading Loading @@ -369,67 +371,67 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-lib/src/lib.rs FN:364,Command::test FN:391,Config::read FN:415,Config::read_json FN:436,Config::read_yaml FN:453,Config::set_environment_variables FN:467,<impl PartialEq for Details>::eq FN:474,EnvironmentValue::from_string FN:477,EnvironmentValue::from_value FN:485,EnvironmentValue::prepend_prefix FN:489,EnvironmentValue::trim_prefix FN:493,EnvironmentValue::get_from_serde FN:507,EnvironmentValue::get_all FN:517,EnvironmentValue::print_all FN:522,EnvironmentValue::set_variable FN:532,EnvironmentValue::set_variables FN:539,Extension::from_string FN:548,Label::dry_run FN:552,Label::fail FN:556,Label::found FN:560,Label::not_found FN:564,Label::output FN:568,Label::read FN:572,Label::rejected FN:576,Label::run FN:580,Label::using FN:586,ModuleUri<'_>::from FN:596,ModuleUri<'_>::hash FN:620,ModuleUri<'_>::get_whitelist FN:623,ModuleUri<'_>::is_allowed FN:626,ModuleUri<'_>::test FN:627,ModuleUri<'_>::test::check FN:644,ModuleUri<'_>::working_directory FN:656,SemanticVersion::from_string FN:679,Script::expand_arguments FN:714,Script::expand_arguments_from FN:746,Script::from_template FN:774,Script::from_path FN:786,Script::get_command FN:792,Script::get_arguments FN:803,Script::maybe_create_conda_environment FN:836,Script::maybe_git_clone FN:843,Script::python_default FN:857,Script::run FN:928,Script::with_current_dir FN:966,Script::with_environment FN:971,Script::with_envs FN:980,StringTemplate::new FN:989,StringTemplate::expand FN:996,StringTemplate::get_variable FN:1026,StringTemplate::is_handlebars FN:1061,StringTemplate::remove_spaces FN:1071,add_forward_slash FN:1079,get_conda_environment_list FN:1121,get_conda_environment_name FN:1153,get_extension FN:1157,get_parent FN:1170,has_extension FN:1174,is_stdin_piped FN:1182,is_stdout_piped FN:1200,read_file FN:1214,to_string FN:386,Command::test FN:413,Config::read FN:437,Config::read_json FN:458,Config::read_yaml FN:475,Config::set_environment_variables FN:489,<impl PartialEq for Details>::eq FN:496,EnvironmentValue::from_string FN:499,EnvironmentValue::from_value FN:507,EnvironmentValue::prepend_prefix FN:511,EnvironmentValue::trim_prefix FN:515,EnvironmentValue::get_from_serde FN:529,EnvironmentValue::get_all FN:539,EnvironmentValue::print_all FN:544,EnvironmentValue::set_variable FN:554,EnvironmentValue::set_variables FN:561,Extension::from_string FN:570,Label::dry_run FN:574,Label::fail FN:578,Label::found FN:582,Label::not_found FN:586,Label::output FN:590,Label::read FN:594,Label::rejected FN:598,Label::run FN:602,Label::using FN:608,ModuleUri<'_>::from FN:618,ModuleUri<'_>::hash FN:642,ModuleUri<'_>::get_whitelist FN:645,ModuleUri<'_>::is_allowed FN:648,ModuleUri<'_>::test FN:649,ModuleUri<'_>::test::check FN:666,ModuleUri<'_>::working_directory FN:678,SemanticVersion::from_string FN:701,Script::expand_arguments FN:736,Script::expand_arguments_from FN:768,Script::from_template FN:796,Script::from_path FN:808,Script::get_command FN:814,Script::get_arguments FN:825,Script::maybe_create_conda_environment FN:858,Script::maybe_git_clone FN:865,Script::python_default FN:879,Script::run FN:950,Script::with_current_dir FN:988,Script::with_environment FN:993,Script::with_envs FN:1002,StringTemplate::new FN:1011,StringTemplate::expand FN:1018,StringTemplate::get_variable FN:1048,StringTemplate::is_handlebars FN:1083,StringTemplate::remove_spaces FN:1093,add_forward_slash FN:1101,get_conda_environment_list FN:1143,get_conda_environment_name FN:1175,get_extension FN:1179,get_parent FN:1192,has_extension FN:1196,is_stdin_piped FN:1204,is_stdout_piped FN:1222,read_file FN:1236,to_string FNF:61 FNDA:1,Command::test FNDA:1,Config::read Loading Loading @@ -468,8 +470,8 @@ FNDA:1,Script::expand_arguments FNDA:1,Script::expand_arguments_from FNDA:1,Script::from_template FNDA:1,Script::from_path FNDA:1,Script::get_command FNDA:1,Script::get_arguments FNDA:2,Script::get_command FNDA:2,Script::get_arguments FNDA:0,Script::maybe_create_conda_environment FNDA:1,Script::maybe_git_clone FNDA:0,Script::python_default Loading @@ -492,389 +494,389 @@ FNDA:0,is_stdin_piped FNDA:0,is_stdout_piped FNDA:1,read_file FNDA:1,to_string DA:364,1 DA:365,1 DA:369,2 DA:372,1 DA:373,1 DA:375,2 DA:376,1 DA:377,2 DA:378,4 DA:380,6 DA:381,2 DA:384,3 DA:385,1 DA:391,1 DA:392,2 DA:393,2 DA:386,1 DA:387,1 DA:391,2 DA:394,1 DA:396,0 DA:397,0 DA:400,2 DA:401,1 DA:403,0 DA:404,0 DA:415,1 DA:416,2 DA:417,4 DA:395,1 DA:397,2 DA:398,1 DA:399,2 DA:400,4 DA:402,6 DA:403,2 DA:406,3 DA:407,1 DA:413,1 DA:414,2 DA:415,2 DA:416,1 DA:418,0 DA:419,0 DA:420,0 DA:423,4 DA:424,2 DA:425,4 DA:422,2 DA:423,1 DA:425,0 DA:426,0 DA:428,6 DA:429,2 DA:436,1 DA:437,2 DA:438,1 DA:440,0 DA:437,1 DA:438,2 DA:439,4 DA:441,0 DA:444,2 DA:445,1 DA:442,0 DA:445,4 DA:446,2 DA:447,0 DA:449,3 DA:450,1 DA:453,0 DA:454,0 DA:455,0 DA:456,0 DA:457,0 DA:458,0 DA:447,4 DA:448,0 DA:450,6 DA:451,2 DA:458,1 DA:459,2 DA:460,1 DA:462,0 DA:463,0 DA:466,2 DA:467,1 DA:468,1 DA:474,0 DA:468,2 DA:469,0 DA:471,3 DA:472,1 DA:475,0 DA:476,0 DA:477,0 DA:478,0 DA:479,0 DA:480,0 DA:481,0 DA:482,0 DA:485,0 DA:486,0 DA:489,1 DA:490,1 DA:491,2 DA:493,0 DA:494,0 DA:495,0 DA:496,0 DA:497,0 DA:498,0 DA:499,0 DA:500,0 DA:501,0 DA:502,0 DA:503,0 DA:505,0 DA:507,1 DA:508,1 DA:509,2 DA:510,2 DA:511,2 DA:512,2 DA:513,1 DA:504,0 DA:507,0 DA:508,0 DA:511,1 DA:512,1 DA:513,2 DA:515,0 DA:516,0 DA:517,0 DA:518,0 DA:519,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:532,0 DA:533,0 DA:535,0 DA:539,1 DA:540,2 DA:541,2 DA:542,3 DA:543,0 DA:529,1 DA:530,1 DA:531,2 DA:532,2 DA:533,2 DA:534,2 DA:535,1 DA:539,0 DA:540,0 DA:541,0 DA:544,0 DA:545,0 DA:546,0 DA:547,0 DA:548,0 DA:549,0 DA:550,0 DA:552,0 DA:553,0 DA:554,0 DA:556,0 DA:555,0 DA:557,0 DA:558,0 DA:560,0 DA:561,0 DA:562,0 DA:564,1 DA:565,3 DA:566,3 DA:568,0 DA:569,0 DA:561,1 DA:562,2 DA:563,2 DA:564,3 DA:565,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 DA:580,0 DA:581,0 DA:582,0 DA:583,0 DA:584,0 DA:586,1 DA:587,1 DA:588,2 DA:589,1 DA:590,2 DA:587,3 DA:588,3 DA:590,0 DA:591,0 DA:593,1 DA:596,1 DA:597,1 DA:598,1 DA:599,1 DA:600,1 DA:601,0 DA:603,2 DA:607,2 DA:608,2 DA:592,0 DA:594,0 DA:595,0 DA:596,0 DA:598,0 DA:599,0 DA:600,0 DA:602,0 DA:603,0 DA:604,0 DA:608,1 DA:609,1 DA:610,2 DA:611,2 DA:613,1 DA:616,0 DA:620,0 DA:621,0 DA:611,1 DA:612,2 DA:613,0 DA:615,1 DA:618,1 DA:619,1 DA:620,1 DA:621,1 DA:622,1 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:633,0 DA:634,0 DA:635,0 DA:636,0 DA:625,3 DA:629,4 DA:630,4 DA:632,4 DA:633,2 DA:635,2 DA:638,0 DA:640,0 DA:644,0 DA:642,0 DA:643,0 DA:645,0 DA:646,0 DA:647,0 DA:648,0 DA:649,0 DA:650,0 DA:651,0 DA:656,1 DA:657,1 DA:658,3 DA:659,3 DA:660,3 DA:652,0 DA:653,0 DA:654,0 DA:655,0 DA:656,0 DA:657,0 DA:658,0 DA:660,0 DA:662,0 DA:666,0 DA:667,0 DA:668,0 DA:669,0 DA:670,0 DA:672,0 DA:673,0 DA:678,1 DA:679,1 DA:680,2 DA:683,2 DA:684,1 DA:685,2 DA:686,1 DA:687,1 DA:689,2 DA:693,1 DA:694,1 DA:714,1 DA:715,2 DA:718,2 DA:719,1 DA:720,2 DA:721,2 DA:724,2 DA:726,1 DA:728,2 DA:732,1 DA:733,1 DA:746,1 DA:747,1 DA:748,3 DA:752,2 DA:754,2 DA:756,2 DA:759,1 DA:760,2 DA:761,3 DA:774,1 DA:775,2 DA:776,1 DA:778,0 DA:779,0 DA:680,3 DA:681,3 DA:682,3 DA:701,1 DA:702,2 DA:705,2 DA:706,1 DA:707,2 DA:708,1 DA:709,1 DA:711,2 DA:715,1 DA:716,1 DA:736,1 DA:737,2 DA:740,2 DA:741,1 DA:742,2 DA:743,2 DA:746,2 DA:748,1 DA:750,2 DA:754,1 DA:755,1 DA:768,1 DA:769,1 DA:770,3 DA:774,2 DA:776,2 DA:778,2 DA:781,1 DA:782,2 DA:783,1 DA:784,1 DA:786,1 DA:787,1 DA:788,1 DA:789,1 DA:792,1 DA:793,1 DA:794,2 DA:795,2 DA:796,4 DA:783,3 DA:796,1 DA:797,2 DA:799,1 DA:803,0 DA:804,0 DA:805,0 DA:806,0 DA:808,0 DA:809,0 DA:810,0 DA:811,0 DA:812,0 DA:813,0 DA:815,0 DA:816,0 DA:817,0 DA:818,0 DA:819,0 DA:820,0 DA:821,0 DA:823,0 DA:824,0 DA:798,1 DA:800,0 DA:801,0 DA:804,2 DA:805,1 DA:806,1 DA:808,2 DA:809,2 DA:810,1 DA:811,2 DA:814,2 DA:815,2 DA:816,1 DA:817,1 DA:818,3 DA:819,2 DA:821,2 DA:825,0 DA:826,0 DA:827,0 DA:828,0 DA:830,0 DA:831,0 DA:832,0 DA:836,1 DA:837,2 DA:838,2 DA:839,2 DA:840,3 DA:841,1 DA:833,0 DA:834,0 DA:835,0 DA:837,0 DA:838,0 DA:839,0 DA:840,0 DA:841,0 DA:842,0 DA:843,0 DA:844,0 DA:845,0 DA:846,0 DA:849,0 DA:853,0 DA:857,1 DA:854,0 DA:858,1 DA:859,1 DA:859,2 DA:860,2 DA:861,2 DA:862,3 DA:863,1 DA:864,9 DA:865,2 DA:866,1 DA:867,1 DA:868,1 DA:869,1 DA:874,2 DA:875,2 DA:877,0 DA:878,0 DA:881,1 DA:882,2 DA:883,3 DA:884,4 DA:885,3 DA:888,3 DA:865,0 DA:866,0 DA:867,0 DA:875,0 DA:879,1 DA:880,2 DA:881,2 DA:882,4 DA:883,4 DA:884,5 DA:885,1 DA:886,13 DA:887,4 DA:888,2 DA:889,2 DA:891,0 DA:892,0 DA:895,1 DA:896,2 DA:897,3 DA:898,0 DA:890,2 DA:891,2 DA:896,4 DA:897,2 DA:899,0 DA:902,3 DA:903,1 DA:904,5 DA:905,2 DA:906,4 DA:907,5 DA:908,1 DA:910,3 DA:911,3 DA:912,2 DA:915,0 DA:916,0 DA:917,0 DA:900,0 DA:903,2 DA:904,2 DA:905,4 DA:906,6 DA:907,4 DA:910,4 DA:911,2 DA:913,0 DA:914,0 DA:917,2 DA:918,2 DA:919,4 DA:920,0 DA:921,0 DA:922,0 DA:928,1 DA:929,2 DA:930,1 DA:966,2 DA:967,2 DA:968,2 DA:971,0 DA:972,0 DA:973,0 DA:980,2 DA:982,1 DA:989,1 DA:990,4 DA:991,3 DA:996,1 DA:997,2 DA:998,2 DA:999,1 DA:1000,2 DA:1002,0 DA:1026,1 DA:1027,2 DA:1028,2 DA:1029,1 DA:1030,0 DA:1032,0 DA:1061,1 DA:1062,2 DA:1063,1 DA:1064,0 DA:1066,3 DA:1067,1 DA:1071,1 DA:1072,2 DA:1073,0 DA:1075,2 DA:1079,1 DA:1080,2 DA:1081,2 DA:1082,2 DA:1083,2 DA:1084,5 DA:1087,1 DA:1089,2 DA:1091,4 DA:1094,0 DA:1121,1 DA:1122,1 DA:1123,1 DA:1124,6 DA:1136,1 DA:1138,0 DA:1153,1 DA:1154,1 DA:1157,1 DA:1158,3 DA:1170,1 DA:1171,1 DA:1174,0 DA:1175,0 DA:1176,0 DA:1178,0 DA:1182,0 DA:1183,0 DA:1184,0 DA:1186,0 DA:1200,1 DA:1201,1 DA:1202,6 DA:1203,3 DA:1204,9 DA:1205,7 DA:1207,1 DA:1208,3 DA:1209,1 DA:1212,4 DA:1214,1 DA:1215,4 DA:924,4 DA:925,2 DA:926,6 DA:927,2 DA:928,6 DA:929,6 DA:930,2 DA:932,3 DA:933,3 DA:934,2 DA:937,0 DA:938,0 DA:939,0 DA:943,0 DA:944,0 DA:950,1 DA:951,2 DA:952,1 DA:988,2 DA:989,2 DA:990,2 DA:993,0 DA:994,0 DA:995,0 DA:1002,2 DA:1004,2 DA:1011,1 DA:1012,4 DA:1013,3 DA:1018,1 DA:1019,2 DA:1020,2 DA:1021,1 DA:1022,2 DA:1024,0 DA:1048,1 DA:1049,2 DA:1050,2 DA:1051,1 DA:1052,0 DA:1054,0 DA:1083,1 DA:1084,2 DA:1085,1 DA:1086,0 DA:1088,3 DA:1089,1 DA:1093,1 DA:1094,2 DA:1095,0 DA:1097,2 DA:1101,1 DA:1102,2 DA:1103,2 DA:1104,2 DA:1105,2 DA:1106,5 DA:1109,1 DA:1111,2 DA:1113,4 DA:1116,0 DA:1143,1 DA:1144,1 DA:1145,1 DA:1146,6 DA:1158,1 DA:1160,0 DA:1175,1 DA:1176,1 DA:1179,1 DA:1180,3 DA:1192,1 DA:1193,1 DA:1196,0 DA:1197,0 DA:1198,0 DA:1200,0 DA:1204,0 DA:1205,0 DA:1206,0 DA:1208,0 DA:1222,1 DA:1223,1 DA:1224,6 DA:1225,3 DA:1226,9 DA:1227,7 DA:1229,1 DA:1230,3 DA:1231,1 DA:1234,4 DA:1236,1 DA:1237,4 LF:383 LH:224 end_of_record pipe-lib/src/lib.rs +30 −8 Original line number Diff line number Diff line Loading @@ -171,6 +171,18 @@ pub enum TemplateType { Mustache, Unknown, } #[derive(Clone, Debug, Deserialize, Display, Serialize)] pub enum VirtualEnvironmentManager { /// [Conda package manager](https://github.com/conda/conda) Conda, /// Simple Python version management (https://github.com/pyenv/pyenv) Pyenv, /// Tool to create isolated Python environments (https://virtualenv.pypa.io/en/latest/) Virtualenv, /// [Pixi package manager](https://github.com/prefix-dev/pixi/) (that has functional parity with Conda) Pixi, Unknown, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Check { /// Glob string(s) describing files and folders to be checked Loading @@ -186,18 +198,15 @@ pub struct Check { #[display("{}", name)] #[builder(start_fn(name = init))] pub struct Command { /// Prefix string to modify command string /// /// This is commonly usef when running a command within a virtual environment like Conda /// /// Example: /// ```text /// "conda run --name base " /// ``` /// Command name (ex. "echo") #[builder(default)] pub name: String, /// Virtual environment struct that contains details about the associated virtual environment #[builder] pub virtual_environment: Option<String>, /// Container struct that contains details about the associated containerized environment #[builder] pub container: Option<Container>, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Config { Loading Loading @@ -236,6 +245,10 @@ pub struct Config { #[serde(alias = "artifacts")] pub output: Option<String>, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Container { pub image: String, } #[derive(Clone, Debug, Deserialize, Eq, Serialize, PartialOrd, Ord)] pub struct Details { // Results of applying check to given path Loading Loading @@ -349,6 +362,15 @@ pub struct StringTemplate { pub value: String, pub template_type: TemplateType, } #[derive(Clone, Debug, Deserialize, Serialize)] #[builder] pub struct VirtualEnvironment { pub name: String, #[builder] pub path: Option<String>, #[builder] pub manager: VirtualEnvironmentManager, } impl Command { /// Check if a command exists in current command line context /// Loading pipe-lib/src/tests.rs +1 −4 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ fn test_command() { assert_eq!(python.virtual_environment, Some("base".to_string())); let command = Command::init().name("ls".to_string()).build(); assert!(command.test()); let nonexistent: Command = Command { name: "does-not-exist".to_string(), virtual_environment: None, }; let nonexistent: Command = Command::init().name("does-not-exist".to_string()).build(); assert!(!nonexistent.test()); if cfg!(target_os = "windows") { // WIP Loading Loading
ROADMAP.md +2 −2 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ - [X] Auto-create (Conda/[Mamba](https://mamba.readthedocs.io/en/latest/index.html)) virtual environments - [X] Parallelize module preparation - [ ] Enhanced URL security - [ ] Provide `--offline` flag to disable reachability check - [X] Provide `--offline` flag to disable reachability check - [ ] Filter remote module URLs against white list - [ ] Check remote URLs are valid and reachable - [ ] Multi-platform release binaries published to GitLab repository Loading @@ -59,7 +59,7 @@ - [ ] Add Docker (and Podman) environment - [ ] Add Apptainer environment - [ ] Add Pixi environment - [ ] `--skip-verify-requirements` flag for running workflow without verifying environment - [X] `--skip-verify-requirements` flag for running workflow without verifying environment - [ ] "Check" subcommand - [X] Create standardized function signature for check modules ```rust Loading
lcov.info +434 −432 Original line number Diff line number Diff line Loading @@ -133,105 +133,103 @@ DA:51,0 DA:52,0 DA:53,0 DA:54,0 DA:58,0 DA:55,0 DA:59,0 DA:60,0 DA:62,0 DA:63,0 DA:68,0 DA:70,0 DA:64,0 DA:66,0 DA:67,0 DA:72,0 DA:74,0 DA:75,0 DA:76,0 DA:78,0 DA:79,0 DA:80,0 DA:82,0 DA:83,0 DA:85,0 DA:86,0 DA:84,0 DA:87,0 DA:89,0 DA:94,0 DA:96,0 DA:90,0 DA:91,0 DA:93,0 DA:98,0 DA:100,0 DA:101,0 DA:102,0 DA:104,0 DA:105,0 DA:106,0 DA:107,0 DA:109,0 DA:110,0 DA:112,0 DA:113,0 DA:115,0 DA:118,0 DA:111,0 DA:114,0 DA:116,0 DA:117,0 DA:119,0 DA:121,0 DA:122,0 DA:124,0 DA:123,0 DA:125,0 DA:126,0 DA:127,0 DA:128,0 DA:129,0 DA:130,0 DA:131,0 DA:132,0 DA:133,0 DA:135,0 DA:136,0 DA:137,0 DA:138,0 DA:139,0 DA:140,0 DA:141,0 DA:142,0 DA:144,0 DA:146,0 DA:148,0 DA:149,0 DA:150,0 DA:152,0 DA:153,0 DA:157,0 DA:158,0 DA:159,0 DA:160,0 DA:161,0 DA:162,0 DA:167,0 DA:168,0 DA:163,0 DA:164,0 DA:166,0 DA:171,0 DA:172,0 DA:175,0 DA:178,0 DA:180,0 DA:176,0 DA:179,0 DA:182,0 DA:185,0 DA:187,0 DA:184,0 DA:186,0 DA:189,0 DA:191,0 DA:194,0 DA:193,0 DA:195,0 DA:196,0 DA:198,0 DA:199,0 DA:200,0 DA:202,0 DA:204,0 DA:205,0 DA:206,0 DA:208,0 DA:209,0 DA:210,0 DA:212,0 DA:213,0 DA:214,0 DA:217,0 DA:218,0 DA:219,0 DA:221,0 DA:222,0 DA:224,0 DA:225,0 DA:223,0 DA:226,0 DA:228,0 DA:229,0 DA:232,0 DA:233,0 DA:234,0 DA:235,0 DA:236,0 DA:237,0 DA:238,0 DA:239,0 DA:240,0 DA:241,0 DA:242,0 DA:243,0 DA:244,0 DA:245,0 DA:246,0 Loading @@ -239,14 +237,18 @@ DA:247,0 DA:248,0 DA:249,0 DA:250,0 DA:251,0 DA:252,0 DA:255,0 DA:258,0 DA:261,0 DA:263,0 DA:266,0 DA:268,0 LF:135 DA:253,0 DA:254,0 DA:256,0 DA:259,0 DA:262,0 DA:265,0 DA:267,0 DA:270,0 DA:272,0 LF:137 LH:0 end_of_record TN: Loading Loading @@ -369,67 +371,67 @@ LH:0 end_of_record TN: SF:/root/dev/command/pipe-lib/src/lib.rs FN:364,Command::test FN:391,Config::read FN:415,Config::read_json FN:436,Config::read_yaml FN:453,Config::set_environment_variables FN:467,<impl PartialEq for Details>::eq FN:474,EnvironmentValue::from_string FN:477,EnvironmentValue::from_value FN:485,EnvironmentValue::prepend_prefix FN:489,EnvironmentValue::trim_prefix FN:493,EnvironmentValue::get_from_serde FN:507,EnvironmentValue::get_all FN:517,EnvironmentValue::print_all FN:522,EnvironmentValue::set_variable FN:532,EnvironmentValue::set_variables FN:539,Extension::from_string FN:548,Label::dry_run FN:552,Label::fail FN:556,Label::found FN:560,Label::not_found FN:564,Label::output FN:568,Label::read FN:572,Label::rejected FN:576,Label::run FN:580,Label::using FN:586,ModuleUri<'_>::from FN:596,ModuleUri<'_>::hash FN:620,ModuleUri<'_>::get_whitelist FN:623,ModuleUri<'_>::is_allowed FN:626,ModuleUri<'_>::test FN:627,ModuleUri<'_>::test::check FN:644,ModuleUri<'_>::working_directory FN:656,SemanticVersion::from_string FN:679,Script::expand_arguments FN:714,Script::expand_arguments_from FN:746,Script::from_template FN:774,Script::from_path FN:786,Script::get_command FN:792,Script::get_arguments FN:803,Script::maybe_create_conda_environment FN:836,Script::maybe_git_clone FN:843,Script::python_default FN:857,Script::run FN:928,Script::with_current_dir FN:966,Script::with_environment FN:971,Script::with_envs FN:980,StringTemplate::new FN:989,StringTemplate::expand FN:996,StringTemplate::get_variable FN:1026,StringTemplate::is_handlebars FN:1061,StringTemplate::remove_spaces FN:1071,add_forward_slash FN:1079,get_conda_environment_list FN:1121,get_conda_environment_name FN:1153,get_extension FN:1157,get_parent FN:1170,has_extension FN:1174,is_stdin_piped FN:1182,is_stdout_piped FN:1200,read_file FN:1214,to_string FN:386,Command::test FN:413,Config::read FN:437,Config::read_json FN:458,Config::read_yaml FN:475,Config::set_environment_variables FN:489,<impl PartialEq for Details>::eq FN:496,EnvironmentValue::from_string FN:499,EnvironmentValue::from_value FN:507,EnvironmentValue::prepend_prefix FN:511,EnvironmentValue::trim_prefix FN:515,EnvironmentValue::get_from_serde FN:529,EnvironmentValue::get_all FN:539,EnvironmentValue::print_all FN:544,EnvironmentValue::set_variable FN:554,EnvironmentValue::set_variables FN:561,Extension::from_string FN:570,Label::dry_run FN:574,Label::fail FN:578,Label::found FN:582,Label::not_found FN:586,Label::output FN:590,Label::read FN:594,Label::rejected FN:598,Label::run FN:602,Label::using FN:608,ModuleUri<'_>::from FN:618,ModuleUri<'_>::hash FN:642,ModuleUri<'_>::get_whitelist FN:645,ModuleUri<'_>::is_allowed FN:648,ModuleUri<'_>::test FN:649,ModuleUri<'_>::test::check FN:666,ModuleUri<'_>::working_directory FN:678,SemanticVersion::from_string FN:701,Script::expand_arguments FN:736,Script::expand_arguments_from FN:768,Script::from_template FN:796,Script::from_path FN:808,Script::get_command FN:814,Script::get_arguments FN:825,Script::maybe_create_conda_environment FN:858,Script::maybe_git_clone FN:865,Script::python_default FN:879,Script::run FN:950,Script::with_current_dir FN:988,Script::with_environment FN:993,Script::with_envs FN:1002,StringTemplate::new FN:1011,StringTemplate::expand FN:1018,StringTemplate::get_variable FN:1048,StringTemplate::is_handlebars FN:1083,StringTemplate::remove_spaces FN:1093,add_forward_slash FN:1101,get_conda_environment_list FN:1143,get_conda_environment_name FN:1175,get_extension FN:1179,get_parent FN:1192,has_extension FN:1196,is_stdin_piped FN:1204,is_stdout_piped FN:1222,read_file FN:1236,to_string FNF:61 FNDA:1,Command::test FNDA:1,Config::read Loading Loading @@ -468,8 +470,8 @@ FNDA:1,Script::expand_arguments FNDA:1,Script::expand_arguments_from FNDA:1,Script::from_template FNDA:1,Script::from_path FNDA:1,Script::get_command FNDA:1,Script::get_arguments FNDA:2,Script::get_command FNDA:2,Script::get_arguments FNDA:0,Script::maybe_create_conda_environment FNDA:1,Script::maybe_git_clone FNDA:0,Script::python_default Loading @@ -492,389 +494,389 @@ FNDA:0,is_stdin_piped FNDA:0,is_stdout_piped FNDA:1,read_file FNDA:1,to_string DA:364,1 DA:365,1 DA:369,2 DA:372,1 DA:373,1 DA:375,2 DA:376,1 DA:377,2 DA:378,4 DA:380,6 DA:381,2 DA:384,3 DA:385,1 DA:391,1 DA:392,2 DA:393,2 DA:386,1 DA:387,1 DA:391,2 DA:394,1 DA:396,0 DA:397,0 DA:400,2 DA:401,1 DA:403,0 DA:404,0 DA:415,1 DA:416,2 DA:417,4 DA:395,1 DA:397,2 DA:398,1 DA:399,2 DA:400,4 DA:402,6 DA:403,2 DA:406,3 DA:407,1 DA:413,1 DA:414,2 DA:415,2 DA:416,1 DA:418,0 DA:419,0 DA:420,0 DA:423,4 DA:424,2 DA:425,4 DA:422,2 DA:423,1 DA:425,0 DA:426,0 DA:428,6 DA:429,2 DA:436,1 DA:437,2 DA:438,1 DA:440,0 DA:437,1 DA:438,2 DA:439,4 DA:441,0 DA:444,2 DA:445,1 DA:442,0 DA:445,4 DA:446,2 DA:447,0 DA:449,3 DA:450,1 DA:453,0 DA:454,0 DA:455,0 DA:456,0 DA:457,0 DA:458,0 DA:447,4 DA:448,0 DA:450,6 DA:451,2 DA:458,1 DA:459,2 DA:460,1 DA:462,0 DA:463,0 DA:466,2 DA:467,1 DA:468,1 DA:474,0 DA:468,2 DA:469,0 DA:471,3 DA:472,1 DA:475,0 DA:476,0 DA:477,0 DA:478,0 DA:479,0 DA:480,0 DA:481,0 DA:482,0 DA:485,0 DA:486,0 DA:489,1 DA:490,1 DA:491,2 DA:493,0 DA:494,0 DA:495,0 DA:496,0 DA:497,0 DA:498,0 DA:499,0 DA:500,0 DA:501,0 DA:502,0 DA:503,0 DA:505,0 DA:507,1 DA:508,1 DA:509,2 DA:510,2 DA:511,2 DA:512,2 DA:513,1 DA:504,0 DA:507,0 DA:508,0 DA:511,1 DA:512,1 DA:513,2 DA:515,0 DA:516,0 DA:517,0 DA:518,0 DA:519,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:532,0 DA:533,0 DA:535,0 DA:539,1 DA:540,2 DA:541,2 DA:542,3 DA:543,0 DA:529,1 DA:530,1 DA:531,2 DA:532,2 DA:533,2 DA:534,2 DA:535,1 DA:539,0 DA:540,0 DA:541,0 DA:544,0 DA:545,0 DA:546,0 DA:547,0 DA:548,0 DA:549,0 DA:550,0 DA:552,0 DA:553,0 DA:554,0 DA:556,0 DA:555,0 DA:557,0 DA:558,0 DA:560,0 DA:561,0 DA:562,0 DA:564,1 DA:565,3 DA:566,3 DA:568,0 DA:569,0 DA:561,1 DA:562,2 DA:563,2 DA:564,3 DA:565,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 DA:580,0 DA:581,0 DA:582,0 DA:583,0 DA:584,0 DA:586,1 DA:587,1 DA:588,2 DA:589,1 DA:590,2 DA:587,3 DA:588,3 DA:590,0 DA:591,0 DA:593,1 DA:596,1 DA:597,1 DA:598,1 DA:599,1 DA:600,1 DA:601,0 DA:603,2 DA:607,2 DA:608,2 DA:592,0 DA:594,0 DA:595,0 DA:596,0 DA:598,0 DA:599,0 DA:600,0 DA:602,0 DA:603,0 DA:604,0 DA:608,1 DA:609,1 DA:610,2 DA:611,2 DA:613,1 DA:616,0 DA:620,0 DA:621,0 DA:611,1 DA:612,2 DA:613,0 DA:615,1 DA:618,1 DA:619,1 DA:620,1 DA:621,1 DA:622,1 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:633,0 DA:634,0 DA:635,0 DA:636,0 DA:625,3 DA:629,4 DA:630,4 DA:632,4 DA:633,2 DA:635,2 DA:638,0 DA:640,0 DA:644,0 DA:642,0 DA:643,0 DA:645,0 DA:646,0 DA:647,0 DA:648,0 DA:649,0 DA:650,0 DA:651,0 DA:656,1 DA:657,1 DA:658,3 DA:659,3 DA:660,3 DA:652,0 DA:653,0 DA:654,0 DA:655,0 DA:656,0 DA:657,0 DA:658,0 DA:660,0 DA:662,0 DA:666,0 DA:667,0 DA:668,0 DA:669,0 DA:670,0 DA:672,0 DA:673,0 DA:678,1 DA:679,1 DA:680,2 DA:683,2 DA:684,1 DA:685,2 DA:686,1 DA:687,1 DA:689,2 DA:693,1 DA:694,1 DA:714,1 DA:715,2 DA:718,2 DA:719,1 DA:720,2 DA:721,2 DA:724,2 DA:726,1 DA:728,2 DA:732,1 DA:733,1 DA:746,1 DA:747,1 DA:748,3 DA:752,2 DA:754,2 DA:756,2 DA:759,1 DA:760,2 DA:761,3 DA:774,1 DA:775,2 DA:776,1 DA:778,0 DA:779,0 DA:680,3 DA:681,3 DA:682,3 DA:701,1 DA:702,2 DA:705,2 DA:706,1 DA:707,2 DA:708,1 DA:709,1 DA:711,2 DA:715,1 DA:716,1 DA:736,1 DA:737,2 DA:740,2 DA:741,1 DA:742,2 DA:743,2 DA:746,2 DA:748,1 DA:750,2 DA:754,1 DA:755,1 DA:768,1 DA:769,1 DA:770,3 DA:774,2 DA:776,2 DA:778,2 DA:781,1 DA:782,2 DA:783,1 DA:784,1 DA:786,1 DA:787,1 DA:788,1 DA:789,1 DA:792,1 DA:793,1 DA:794,2 DA:795,2 DA:796,4 DA:783,3 DA:796,1 DA:797,2 DA:799,1 DA:803,0 DA:804,0 DA:805,0 DA:806,0 DA:808,0 DA:809,0 DA:810,0 DA:811,0 DA:812,0 DA:813,0 DA:815,0 DA:816,0 DA:817,0 DA:818,0 DA:819,0 DA:820,0 DA:821,0 DA:823,0 DA:824,0 DA:798,1 DA:800,0 DA:801,0 DA:804,2 DA:805,1 DA:806,1 DA:808,2 DA:809,2 DA:810,1 DA:811,2 DA:814,2 DA:815,2 DA:816,1 DA:817,1 DA:818,3 DA:819,2 DA:821,2 DA:825,0 DA:826,0 DA:827,0 DA:828,0 DA:830,0 DA:831,0 DA:832,0 DA:836,1 DA:837,2 DA:838,2 DA:839,2 DA:840,3 DA:841,1 DA:833,0 DA:834,0 DA:835,0 DA:837,0 DA:838,0 DA:839,0 DA:840,0 DA:841,0 DA:842,0 DA:843,0 DA:844,0 DA:845,0 DA:846,0 DA:849,0 DA:853,0 DA:857,1 DA:854,0 DA:858,1 DA:859,1 DA:859,2 DA:860,2 DA:861,2 DA:862,3 DA:863,1 DA:864,9 DA:865,2 DA:866,1 DA:867,1 DA:868,1 DA:869,1 DA:874,2 DA:875,2 DA:877,0 DA:878,0 DA:881,1 DA:882,2 DA:883,3 DA:884,4 DA:885,3 DA:888,3 DA:865,0 DA:866,0 DA:867,0 DA:875,0 DA:879,1 DA:880,2 DA:881,2 DA:882,4 DA:883,4 DA:884,5 DA:885,1 DA:886,13 DA:887,4 DA:888,2 DA:889,2 DA:891,0 DA:892,0 DA:895,1 DA:896,2 DA:897,3 DA:898,0 DA:890,2 DA:891,2 DA:896,4 DA:897,2 DA:899,0 DA:902,3 DA:903,1 DA:904,5 DA:905,2 DA:906,4 DA:907,5 DA:908,1 DA:910,3 DA:911,3 DA:912,2 DA:915,0 DA:916,0 DA:917,0 DA:900,0 DA:903,2 DA:904,2 DA:905,4 DA:906,6 DA:907,4 DA:910,4 DA:911,2 DA:913,0 DA:914,0 DA:917,2 DA:918,2 DA:919,4 DA:920,0 DA:921,0 DA:922,0 DA:928,1 DA:929,2 DA:930,1 DA:966,2 DA:967,2 DA:968,2 DA:971,0 DA:972,0 DA:973,0 DA:980,2 DA:982,1 DA:989,1 DA:990,4 DA:991,3 DA:996,1 DA:997,2 DA:998,2 DA:999,1 DA:1000,2 DA:1002,0 DA:1026,1 DA:1027,2 DA:1028,2 DA:1029,1 DA:1030,0 DA:1032,0 DA:1061,1 DA:1062,2 DA:1063,1 DA:1064,0 DA:1066,3 DA:1067,1 DA:1071,1 DA:1072,2 DA:1073,0 DA:1075,2 DA:1079,1 DA:1080,2 DA:1081,2 DA:1082,2 DA:1083,2 DA:1084,5 DA:1087,1 DA:1089,2 DA:1091,4 DA:1094,0 DA:1121,1 DA:1122,1 DA:1123,1 DA:1124,6 DA:1136,1 DA:1138,0 DA:1153,1 DA:1154,1 DA:1157,1 DA:1158,3 DA:1170,1 DA:1171,1 DA:1174,0 DA:1175,0 DA:1176,0 DA:1178,0 DA:1182,0 DA:1183,0 DA:1184,0 DA:1186,0 DA:1200,1 DA:1201,1 DA:1202,6 DA:1203,3 DA:1204,9 DA:1205,7 DA:1207,1 DA:1208,3 DA:1209,1 DA:1212,4 DA:1214,1 DA:1215,4 DA:924,4 DA:925,2 DA:926,6 DA:927,2 DA:928,6 DA:929,6 DA:930,2 DA:932,3 DA:933,3 DA:934,2 DA:937,0 DA:938,0 DA:939,0 DA:943,0 DA:944,0 DA:950,1 DA:951,2 DA:952,1 DA:988,2 DA:989,2 DA:990,2 DA:993,0 DA:994,0 DA:995,0 DA:1002,2 DA:1004,2 DA:1011,1 DA:1012,4 DA:1013,3 DA:1018,1 DA:1019,2 DA:1020,2 DA:1021,1 DA:1022,2 DA:1024,0 DA:1048,1 DA:1049,2 DA:1050,2 DA:1051,1 DA:1052,0 DA:1054,0 DA:1083,1 DA:1084,2 DA:1085,1 DA:1086,0 DA:1088,3 DA:1089,1 DA:1093,1 DA:1094,2 DA:1095,0 DA:1097,2 DA:1101,1 DA:1102,2 DA:1103,2 DA:1104,2 DA:1105,2 DA:1106,5 DA:1109,1 DA:1111,2 DA:1113,4 DA:1116,0 DA:1143,1 DA:1144,1 DA:1145,1 DA:1146,6 DA:1158,1 DA:1160,0 DA:1175,1 DA:1176,1 DA:1179,1 DA:1180,3 DA:1192,1 DA:1193,1 DA:1196,0 DA:1197,0 DA:1198,0 DA:1200,0 DA:1204,0 DA:1205,0 DA:1206,0 DA:1208,0 DA:1222,1 DA:1223,1 DA:1224,6 DA:1225,3 DA:1226,9 DA:1227,7 DA:1229,1 DA:1230,3 DA:1231,1 DA:1234,4 DA:1236,1 DA:1237,4 LF:383 LH:224 end_of_record
pipe-lib/src/lib.rs +30 −8 Original line number Diff line number Diff line Loading @@ -171,6 +171,18 @@ pub enum TemplateType { Mustache, Unknown, } #[derive(Clone, Debug, Deserialize, Display, Serialize)] pub enum VirtualEnvironmentManager { /// [Conda package manager](https://github.com/conda/conda) Conda, /// Simple Python version management (https://github.com/pyenv/pyenv) Pyenv, /// Tool to create isolated Python environments (https://virtualenv.pypa.io/en/latest/) Virtualenv, /// [Pixi package manager](https://github.com/prefix-dev/pixi/) (that has functional parity with Conda) Pixi, Unknown, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Check { /// Glob string(s) describing files and folders to be checked Loading @@ -186,18 +198,15 @@ pub struct Check { #[display("{}", name)] #[builder(start_fn(name = init))] pub struct Command { /// Prefix string to modify command string /// /// This is commonly usef when running a command within a virtual environment like Conda /// /// Example: /// ```text /// "conda run --name base " /// ``` /// Command name (ex. "echo") #[builder(default)] pub name: String, /// Virtual environment struct that contains details about the associated virtual environment #[builder] pub virtual_environment: Option<String>, /// Container struct that contains details about the associated containerized environment #[builder] pub container: Option<Container>, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Config { Loading Loading @@ -236,6 +245,10 @@ pub struct Config { #[serde(alias = "artifacts")] pub output: Option<String>, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Container { pub image: String, } #[derive(Clone, Debug, Deserialize, Eq, Serialize, PartialOrd, Ord)] pub struct Details { // Results of applying check to given path Loading Loading @@ -349,6 +362,15 @@ pub struct StringTemplate { pub value: String, pub template_type: TemplateType, } #[derive(Clone, Debug, Deserialize, Serialize)] #[builder] pub struct VirtualEnvironment { pub name: String, #[builder] pub path: Option<String>, #[builder] pub manager: VirtualEnvironmentManager, } impl Command { /// Check if a command exists in current command line context /// Loading
pipe-lib/src/tests.rs +1 −4 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ fn test_command() { assert_eq!(python.virtual_environment, Some("base".to_string())); let command = Command::init().name("ls".to_string()).build(); assert!(command.test()); let nonexistent: Command = Command { name: "does-not-exist".to_string(), virtual_environment: None, }; let nonexistent: Command = Command::init().name("does-not-exist".to_string()).build(); assert!(!nonexistent.test()); if cfg!(target_os = "windows") { // WIP Loading