commit
0c75ee391b
@ -1,5 +1,4 @@
|
|||||||
/target
|
/target
|
||||||
.idea
|
.idea
|
||||||
Cargo.lock
|
|
||||||
/pkg
|
/pkg
|
||||||
*tar*
|
*tar*
|
@ -0,0 +1,292 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "Malachite"
|
||||||
|
version = "1.3.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"mimalloc",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"toml",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atty"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cc"
|
||||||
|
version = "1.0.73"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "3.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1df386a2d0f35bdefc0642fd8bcb2cd28243959f028abfd22fbade6f7d30980e"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"bitflags",
|
||||||
|
"clap_derive",
|
||||||
|
"clap_lex",
|
||||||
|
"indexmap",
|
||||||
|
"once_cell",
|
||||||
|
"strsim",
|
||||||
|
"termcolor",
|
||||||
|
"textwrap",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_derive"
|
||||||
|
version = "3.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7b740354ad9fcf20e27b46d921be4bb3712f5b3c2c7a89ba68a72a8e51d3a47f"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro-error",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_lex"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
|
||||||
|
dependencies = [
|
||||||
|
"os_str_bytes",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.11.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hermit-abi"
|
||||||
|
version = "0.1.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indexmap"
|
||||||
|
version = "1.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"hashbrown",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.126"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libmimalloc-sys"
|
||||||
|
version = "0.1.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "11ca136052550448f55df7898c6dbe651c6b574fe38a0d9ea687a9f8088a2e2c"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mimalloc"
|
||||||
|
version = "0.1.29"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2f64ad83c969af2e732e907564deb0d0ed393cec4af80776f77dd77a1a427698"
|
||||||
|
dependencies = [
|
||||||
|
"libmimalloc-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "once_cell"
|
||||||
|
version = "1.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "os_str_bytes"
|
||||||
|
version = "6.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-error-attr",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error-attr"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.39"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.137"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.137"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "1.0.96"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "termcolor"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "textwrap"
|
||||||
|
version = "0.15.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "toml"
|
||||||
|
version = "0.5.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "version_check"
|
||||||
|
version = "0.9.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
@ -1,21 +1,25 @@
|
|||||||
mode = "repository"
|
mode = "repository"
|
||||||
name = "test"
|
name = "test"
|
||||||
|
|
||||||
repo = ["1::ame",
|
repo = [
|
||||||
"1::jade",
|
"1::amethyst",
|
||||||
"2::notop-git",
|
"1::jade",
|
||||||
"3::slippy-rb"]
|
"2::notop-git",
|
||||||
|
"3::slippy-rb"
|
||||||
|
]
|
||||||
|
|
||||||
urls = ["https://git.tar.black/crystal/%repo%",
|
urls = [
|
||||||
"https://aur.archlinux.org/%repo%",
|
"https://github.com/crystal-linux/%repo%",
|
||||||
"https://github.com/jnats/%repo%"]
|
"https://aur.archlinux.org/%repo%",
|
||||||
|
"https://github.com/jnats/%repo%"
|
||||||
|
]
|
||||||
|
|
||||||
# in this example, mlc will create a repository called "test", with 4 packages
|
# in this example, mlc will create a repository called "test", with 4 packages
|
||||||
# these packages will be expanded based on the index number they have (index_number::package)
|
# these packages will be expanded based on the index number they have (index_number::package)
|
||||||
# to demonstrate, the ones in this config will expand to the following:
|
# to demonstrate, the ones in this config will expand to the following:
|
||||||
#
|
#
|
||||||
# https://git.tar.black/crystal/ame
|
# https://github.com/crystal-linux/ame
|
||||||
# https://git.tar.black/crystal/jade
|
# https://github.com/crystal-linux/jade
|
||||||
# https://aur.archlinux.org/notop-git
|
# https://aur.archlinux.org/notop-git
|
||||||
# https://github.com/jnats/slippy-rb
|
# https://github.com/jnats/slippy-rb
|
||||||
#
|
#
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"naersk": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1655042882,
|
||||||
|
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "naersk",
|
||||||
|
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "naersk",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1658150454,
|
||||||
|
"narHash": "sha256-dhyOQvRT8oYWN0SwsNyujohBsJqwF5W7fnhEcfgBk7E=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3110964916469ad6ed9fea72a0a3119a0959a14e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1658260742,
|
||||||
|
"narHash": "sha256-wpamr67wf4xKa2KFg+H/kN0vRGnQ76obLu+NAw5h9Jw=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7ecd637ffa005222a4efb7771b3e8ad69460dcb9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"naersk": "naersk",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"utils": "utils"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1656928814,
|
||||||
|
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs";
|
||||||
|
utils.url = "github:numtide/flake-utils";
|
||||||
|
naersk.url = "github:nix-community/naersk";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, utils, naersk }:
|
||||||
|
utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages."${system}";
|
||||||
|
naersk-lib = naersk.lib."${system}";
|
||||||
|
in rec
|
||||||
|
{
|
||||||
|
packages.malachite = naersk-lib.buildPackage {
|
||||||
|
pname = "mlc";
|
||||||
|
root = ./.;
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.default = packages.malachite;
|
||||||
|
|
||||||
|
apps.malachite = utils.lib.mkApp {
|
||||||
|
drv = packages.malachite;
|
||||||
|
};
|
||||||
|
|
||||||
|
apps.default = apps.malachite;
|
||||||
|
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
|
rustfmt
|
||||||
|
cargo-audit
|
||||||
|
clippy
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
formatter = pkgs.alejandra;
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
use clap::{ArgAction, Parser, Subcommand};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Parser)]
|
||||||
|
#[clap(name="Malachite", version=env!("CARGO_PKG_VERSION"), about=env!("CARGO_PKG_DESCRIPTION"))]
|
||||||
|
pub struct Args {
|
||||||
|
#[clap(subcommand)]
|
||||||
|
pub subcommand: Option<Operation>,
|
||||||
|
|
||||||
|
/// Sets the level of verbosity
|
||||||
|
#[clap(long, short, global(true), action=ArgAction::Count)]
|
||||||
|
pub verbose: u8,
|
||||||
|
|
||||||
|
/// Complete operations without prompting user
|
||||||
|
#[clap(long="noconfirm", global(true), action=ArgAction::SetTrue)]
|
||||||
|
pub no_confirm: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Subcommand)]
|
||||||
|
pub enum Operation {
|
||||||
|
/// Builds the given packages
|
||||||
|
#[clap(name="build", aliases=&["b"])]
|
||||||
|
Build {
|
||||||
|
/// The packages to operate on
|
||||||
|
#[clap(name="package(s)", action=ArgAction::Append, index=1)]
|
||||||
|
packages: Vec<String>,
|
||||||
|
|
||||||
|
/// Builds all packages in mlc.toml (except if -x is specified)
|
||||||
|
#[clap(long="all", takes_value=false, action=ArgAction::SetTrue, conflicts_with="package(s)")]
|
||||||
|
all: bool,
|
||||||
|
|
||||||
|
/// Excludes packages from given operation
|
||||||
|
#[clap(short='x', long="exclude", action=ArgAction::Append, takes_value=true)]
|
||||||
|
exclude: Vec<String>,
|
||||||
|
|
||||||
|
/// Does not regenerate repository after building given package(s)
|
||||||
|
#[clap(short='n', long="no-regen", action=ArgAction::SetTrue)]
|
||||||
|
no_regen: bool,
|
||||||
|
},
|
||||||
|
|
||||||
|
/// Generates repository from built packages
|
||||||
|
#[clap(name="repo-gen", aliases=&["r"])]
|
||||||
|
RepoGen,
|
||||||
|
|
||||||
|
/// Prunes duplicate packages from the repository
|
||||||
|
#[clap(name="prune", aliases=&["p"])]
|
||||||
|
Prune,
|
||||||
|
|
||||||
|
/// Clones all git repositories from mlc.toml branching from current directory
|
||||||
|
#[clap(name="init", aliases=&["i"])]
|
||||||
|
Init,
|
||||||
|
|
||||||
|
/// Pulls in git repositories from mlc.toml branching from current directory
|
||||||
|
#[clap(name="pull", aliases=&["u"])]
|
||||||
|
Pull {
|
||||||
|
/// The packages to operate on
|
||||||
|
#[clap(name="package(s)", help="The packages to operate on", action=ArgAction::Append, index=1)]
|
||||||
|
packages: Vec<String>,
|
||||||
|
|
||||||
|
/// Pulls from all git repositories from mlc.toml branching from current directory
|
||||||
|
#[clap(long="all", action=ArgAction::SetTrue, conflicts_with="package(s)")]
|
||||||
|
all: bool,
|
||||||
|
|
||||||
|
/// Excludes packages from given operation
|
||||||
|
#[clap(short='x', long="exclude", action=ArgAction::Append, takes_value=true)]
|
||||||
|
exclude: Vec<String>,
|
||||||
|
},
|
||||||
|
|
||||||
|
/// Create and/or open local config file
|
||||||
|
#[clap(name="config", aliases=&["c"])]
|
||||||
|
Config,
|
||||||
|
}
|
@ -1,10 +1,4 @@
|
|||||||
mod strings;
|
mod strings;
|
||||||
pub mod structs;
|
pub mod structs;
|
||||||
|
|
||||||
pub fn info(a: String) {
|
pub use strings::*;
|
||||||
strings::info(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn crash(a: String, b: i32) {
|
|
||||||
strings::crash(a, b);
|
|
||||||
}
|
|
||||||
|
@ -1,27 +1,11 @@
|
|||||||
use clap::ArgMatches;
|
|
||||||
|
|
||||||
mod build;
|
mod build;
|
||||||
mod config;
|
mod config;
|
||||||
mod init;
|
mod init;
|
||||||
mod prune;
|
mod prune;
|
||||||
mod pull;
|
mod pull;
|
||||||
|
|
||||||
pub fn init() {
|
pub use build::*;
|
||||||
init::init();
|
pub use config::*;
|
||||||
}
|
pub use init::*;
|
||||||
|
pub use prune::*;
|
||||||
pub fn build(matches: &ArgMatches) {
|
pub use pull::*;
|
||||||
build::build(matches);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn pull(matches: &ArgMatches) {
|
|
||||||
pull::pull(matches);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn config() {
|
|
||||||
config::config();
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn prune() {
|
|
||||||
prune::prune();
|
|
||||||
}
|
|
||||||
|
@ -1,47 +1,39 @@
|
|||||||
use crate::info;
|
use crate::info;
|
||||||
use clap::ArgMatches;
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
pub fn pull(matches: &ArgMatches) {
|
fn do_the_pulling(packages: Vec<String>) {
|
||||||
let packages: Vec<String> = matches
|
for dir in packages {
|
||||||
.subcommand_matches("pull")
|
let current_dir = env::current_dir().unwrap();
|
||||||
.unwrap()
|
info(format!("Entering working directory: {}", dir));
|
||||||
.values_of_lossy("package(s)")
|
env::set_current_dir(dir).unwrap();
|
||||||
.unwrap_or_default();
|
Command::new("git")
|
||||||
|
.arg("pull")
|
||||||
|
.spawn()
|
||||||
|
.unwrap()
|
||||||
|
.wait()
|
||||||
|
.unwrap();
|
||||||
|
env::set_current_dir(current_dir).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if packages.is_empty() {
|
pub fn pull(packages: Vec<String>, exclude: Vec<String>) {
|
||||||
|
let all = packages.is_empty();
|
||||||
|
if all {
|
||||||
let stdout = Command::new("ls").arg("-1").output().unwrap().stdout;
|
let stdout = Command::new("ls").arg("-1").output().unwrap().stdout;
|
||||||
let dirs_string = String::from_utf8_lossy(&stdout);
|
let dirs_string = String::from_utf8_lossy(&stdout);
|
||||||
|
|
||||||
let mut dirs = dirs_string.lines().collect::<Vec<&str>>();
|
let mut dirs = dirs_string.lines().collect::<Vec<&str>>();
|
||||||
|
|
||||||
dirs.retain(|x| *x != "mlc.toml");
|
dirs.retain(|x| *x != "mlc.toml");
|
||||||
|
for x in exclude {
|
||||||
for dir in dirs {
|
dirs.retain(|y| *y != x);
|
||||||
let cdir = env::current_dir().unwrap();
|
|
||||||
info(format!("Entering working directory: {}", dir));
|
|
||||||
env::set_current_dir(dir).unwrap();
|
|
||||||
Command::new("git")
|
|
||||||
.arg("pull")
|
|
||||||
.spawn()
|
|
||||||
.unwrap()
|
|
||||||
.wait()
|
|
||||||
.unwrap();
|
|
||||||
env::set_current_dir(cdir).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let dirs_mapped = dirs.iter().map(|x| x.to_string()).collect();
|
||||||
|
|
||||||
|
do_the_pulling(dirs_mapped);
|
||||||
} else {
|
} else {
|
||||||
for dir in packages {
|
do_the_pulling(packages);
|
||||||
let cdir = env::current_dir().unwrap();
|
|
||||||
info(format!("Entering working directory: {}", dir));
|
|
||||||
env::set_current_dir(dir).unwrap();
|
|
||||||
Command::new("git")
|
|
||||||
.arg("pull")
|
|
||||||
.spawn()
|
|
||||||
.unwrap()
|
|
||||||
.wait()
|
|
||||||
.unwrap();
|
|
||||||
env::set_current_dir(cdir).unwrap();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
use crate::internal::structs::Config;
|
|
||||||
|
|
||||||
mod read;
|
mod read;
|
||||||
|
|
||||||
pub fn read_cfg() -> Config {
|
pub use read::*;
|
||||||
read::read_cfg()
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue