#下载 #microsoft #提取 #sharepoint

bin+lib demsf-rs

对 https://github.com/phlbrz/demsf 的重写 - DEMSF 是用于下载和提取 Microsoft Sharepoint 文件的 bash 脚本

1 个稳定版本

1.0.2 2023年8月8日

#411压缩

每月下载量 44

GPL-3.0 许可证

28KB
158 代码行

DEMSF-RS - 使用 Rust 编写的下载和提取 Microsoft Sharepoint 文件的工具

我创建了这个 Rust 工具程序,专为 SRE、DevOps 和开发者设计,用于从 Microsoft Sharepoint 仓库下载文件。
该项目是从其原始源码 https://github.com/phlbrz/demsf 进行重写的,原始代码使用了 bash 工具脚本。过渡到 Rust 的过程是在 ChatGPT 的帮助下开始的。
这些脚本主要用于 CI 管道或本地设置(开发环境)的自动化。
由于我分享的 Sharepoint 链接是公开的,不需要认证,因此该工具提供无缝访问。
当前实现使用了一些 crates 进行下载和解压,但如果您希望使用其他解压器,请通过提出问题告诉我。

Build status Crates.io

仓库结构

tree -I target demsf-rs/

demsf-rs/
├── Cargo.toml # crate/libs from crates.io
├── LICENSE
├── README.md
└── src
    ├── args.rs # a struct and impl mod to encapsulate args from input.
    ├── download.rs # Download a Microsoft Sharepoint File.
    ├── lib.rs # Declared mods.
    ├── main.rs # Execute the program.
    └── unzip.rs # Unzip a file downloaded from Microsoft Sharepoint.

要求

  • Linux
  • Rust

使用方法

  • 创建您的 workspace
mkdir $HOME/workspace-rust/
cd $HOME/workspace-rust/
  • 克隆此仓库
git clone https://github.com/phlbrz/demsf-rs.git
cd demsf-rs

OUTPUT_FOLDER="/home/user/workspace/demsf_output/"
OUPUT_FILENAME="file-name.zip"
URL="https://some-shared-repo.sharepoint.com/:u:/s/SharedRepo/XXXxXXxXxXxXxxXxXxxxxxxXXx1xxxx2X3X4XxxxXXxXXX?e=XXxxX1"

# If you want to extract a zip
cargo run -- "$OUTPUT_FOLDER" "$OUTPUT_FILENAME" "$URL" true

# If you don't need to extract a zip
cargo run -- "$OUTPUT_FOLDER" "$OUTPUT_FILENAME" "$URL" false

如何使用 crate

  • 要从 Microsoft Sharepoint 下载文件,必须将 unzip 设置为 false
  • 要从文件系统解压文件,必须将 unzip 设置为 true,或者不调用下载函数。
use log::{debug, error};

use demsf_rs::args::Args;
use demsf_rs::download::download;
use demsf_rs::unzip::unzip;

fn main() {
    env_logger::init();
    match Args::parse_arguments() {
        Err(why) => {
            error!("Error");
            panic!("{:?}", why)
        }
        Ok(mut value) => {
            debug!("call download."); // if you don't want to download, comment this line.
            download(&mut value); // if you don't want to download, comment this line.
            debug!("call unzip? value={:#?}", &value.unzip); // if you want to unzip, set true
            match &value.unzip.parse() {
                Ok(true) => unzip(&value),
                Ok(false) => (),
                Err(_) => panic!("Only true or false is valid for unzip option."),
            }
        }
    }
}
  • Rust 文件 download.rs:下载 Microsoft Sharepoint 文件

该脚本便于从 Microsoft Sharepoint 获取文件。
它利用了预填充了 OUTPUT_FOLDEROUTPUT_FILENAMEURLargs.rs 模块。

  • Rust 文件 unzip.rs:从 Microsoft Sharepoint 下载的文件解压

这将解压文件。
它利用了预填充了 OUTPUT_FOLDEROUTPUT_FILENAMEURLargs.rs 模块,您必须在命令行中调用程序时将 true 设置为 true

来源

依赖

~10–23MB
~353K SLoC