Internals
ArtifactUtils.communicate
— Methodcommunicate(cmd, input) -> output::Vector{UInt8}
Run cmd
, write input
to its stdin, and return the bytes output
read from its stdout. stderr is redirected to Base.stdout
.
ArtifactUtils.copy_mode
— Methodcopy_mode(src, dst)
Copy mode of src
to dst
recursively in a way compatible to how Pkg
(Git) compute the tree hash.
See Pkg.GitTools.gitmode
comment for how the file mode is handled specially in Windows: https://github.com/JuliaLang/Pkg.jl/blob/247a4062bfde19d93bdcbaccc9737df496fd0c2b/src/GitTools.jl#L189-L192
copy_mode
is based on: https://github.com/JuliaIO/Tar.jl/blob/6a946029685639b69ce5a7cc4c4a6c0e6c6b2697/src/extract.jl#L145-L153
ArtifactUtils.gist_from_file
— Methodgist_from_file(filepath::AbstractString; private::Bool = true) -> fileurl::String
Create a new gist from file at filepath
. Return the "raw" HTTPS URL of the file.
ArtifactUtils.git_empty_history
— Methodgit_empty_history(git_dir)
Empty the history of the current branch. Create an empty commit to start fresh.
ArtifactUtils.open_atomic_write
— Methodopen_atomic_write(f, path) -> y
Evaluate y = f(io::IO)
, atomically replace the file with a new file with the content of io
(in well-behaving file systems) and then return y
; i.e., it's an atomic version of open(f, path; write = true)
.
ArtifactUtils.threaded_progress_foreach
— Methodthreaded_progress_foreach(
f,
xs;
nworkers::Integer = Sys.CPU_THREADS,
progresstitle::AbstractString = "",
)
Like foreach(f, xs)
but threaded and with progress bar.
ArtifactUtils.with_new_gist
— Methodwith_new_gist(f; private::Bool = true) -> repo_http::AbstractString
Create a new gist, check it out as a local git repository at a temporary directory git_dir
, call f(git_dir)
, and then push it to remote. Return the canonical gist HTTPS URL.