diff options
author | Karl Berry <karl@freefriends.org> | 2018-08-24 22:18:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-08-24 22:18:02 +0000 |
commit | 9067afb3f8bce172638d12a6f926ab82547590e6 (patch) | |
tree | fa13c48c4ed98564fbcee7220e7c1b76b4fbfefe /Master/texmf-dist/tex/latex/l3experimental/l3sys-shell | |
parent | 8d113437aa8a3fae9dc8603507fa4aa9f64c5517 (diff) |
l3 (24aug18)
git-svn-id: svn://tug.org/texlive/trunk@48476 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3experimental/l3sys-shell')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty new file mode 100644 index 00000000000..b3c0cb8095a --- /dev/null +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty @@ -0,0 +1,177 @@ +%% +%% This is file `l3sys-shell.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3sys-shell.dtx (with options: `package') +%% +%% Copyright (C) 2018 The LaTeX3 Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This file is part of the "l3experimental bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project +\RequirePackage{expl3} +\ProvidesExplPackage{l3sys-shell}{2018-08-24}{} + {L3 Experimental system shell functions} +\cs_new:Npn \__sys_path_to_win:n #1 + { + \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \q_stop + } +\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \q_stop + { + \__sys_path_to_win:N #1 \q_nil + \tl_if_empty:nF {#2} + { + \c_space_tl + \__sys_path_to_win:w #2 \q_stop + } + } +\cs_new:Npn \__sys_path_to_win:N #1 + { + \quark_if_nil:NF #1 + { + \token_if_eq_meaning:NNTF #1 / + { \c_backslash_str } + {#1} + \__sys_path_to_win:N + } + } +\cs_new_protected:Npx \sys_shell_cp:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + cp~-f~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ + \exp_not:N \__sys_path_to_win:n {#2} + } + } + } + } +\cs_new_protected:Npx \sys_shell_mkdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { + if~not~exist~ + \exp_not:N \__sys_path_to_win:n { #1 / nul } ~ + mkdir~ \exp_not:N \__sys_path_to_win:n {#1} + } + } + } + } +\cs_new_protected:Npx \sys_shell_mv:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + mv~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ + \exp_not:N \__sys_path_to_win:n {#2} + \token_to_str:N & \token_to_str:N & + del~/f~/q~\exp_not:N \__sys_path_to_win:n {#1} + } + } + } + } +\cs_new_protected:Npx \sys_shell_rm:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-f~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { del~/f~/q~ \exp_not:N \__sys_path_to_win:n {#1} } + } + } + } +\cs_new_protected:Npx \sys_shell_rmdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_mkdir:n {#1} + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-rf~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { rmdir~/s~/q~ \exp_not:N \__sys_path_to_win:n {#1} } + } + } + } +\tl_new:N \l__sys_tmp_tl +\cs_new_protected:Npx \sys_shell_get_pwd:N #1 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl + { + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_space:N \exp_not:N \ % + } + { + \sys_if_platform_unix:T { pwd } + \sys_if_platform_windows:T { cd } + } + \str_set:NV #1 \exp_not:N \l__sys_tmp_tl + } + } +\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl + { + \ExplSyntaxOff + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_other:n { 13 } + } + { + \sys_if_platform_unix:T { ls~-1~ #1 } + \sys_if_platform_windows:T { dir~/b~ #1 } + } + \str_set:NV \exp_not:N \l__sys_tmp_tl \exp_not:N \l__sys_tmp_tl + \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } } + \exp_not:N \l__sys_tmp_tl + \seq_pop_right:NN #2 \exp_not:N \l__sys_tmp_tl + } + } +%% +%% +%% End of file `l3sys-shell.sty'. |