Code Monkey home page Code Monkey logo

emplace's Introduction

emplace

Command-line tool to mirror installed software on multiple machines.

Build Status Downloads Version


Features

  • Outputs a human-readable (RON) file to sync between machines: .emplace

  • Version control with git to automatically push & pull updates

  • Automatic prompt after installing a package

  • Integrates well with dotfiles repositories

  • Parses history file

  • Package managers supported:

    OS Package Manager
    Apt
    GNU Guix
    Nix
    Pacman
    RUA
    Yay
    Zypper
    Snap
    DNF/YUM
    Homebrew
    Pkg
    Chocolatey
    Scoop
    Cargo
    Cargo B(inary)Install
    Rustup Component
    Python Pip
    Python Pip 3
    Node Package Manager
    Ruby Gem
    Go
  • Shells supported:

    Shell
    Bash
    Zsh
    Fish
    Nu

Installation Packaging status

Getting Started

  1. Install the emplace binary:

    Windows

    Scoop

    scoop install emplace

    NixOS

    nix-env -iA nixos.emplace

    Linux, MacOS, Windows

    Rust

    cargo install emplace

    Binary

    Download the latest binary from releases for your OS and put it somewhere in your PATH.

  2. Add the init script to your shell's config file:

    Bash

    Add the following to the end of ~/.bashrc:

    # ~/.bashrc
    
    source <(emplace init bash)

    Zsh

    Add the following to the end of ~/.zshrc:

    # ~/.zshrc
    
    eval "$(emplace init zsh)"

    Fish

    Add the following to the end of ~/.config/fish/config.fish:

    # ~/.config/fish/config.fish
    
    emplace init fish | source

    Nu

    Run the following in your shell:

    emplace init nu | config set_into prompt
  3. Change the configuration file (optional)

    When you want to use a different configuration file from the default one you can change emplace init $SHELL with emplace init $SHELL -c path/to/my/config.toml.

    This will set the EMPLACE_CONFIG="path/to/my/config.toml" environment variable. This can be overwritten with export EMPLACE_CONFIG="path/to/other/config.toml" after the init function, except in the Nu shell.

Usage

Mirroring Packages

Invoke the supported package manager of choice using the command line in a normal way and you will automatically be prompted to mirror the package, for example:

cargo install topgrade
# -- or --
cargo binstall zellij
# -- or --
rustup component add rustfmt
# -- or --
sudo apt install meld
# -- or --
pacman -S zsh
# -- or --
rua install peek
# -- or --
yay -S thunar
# -- or --
sudo snap install scrcpy
# -- or --
npm install -g release
# -- or --
pip3 install --user termtosvg
# -- or --
choco install neovim
# -- or --
scoop install curl
# -- or --
nix-env -iA nixpkgs.nixfmt
# -- or --
brew install wget
# -- or --
sudo dnf install htop
# -- or --
guix install 0ad
# -- or --
gem install aasm-diagram
# -- or --
go get colorgo
# -- or --
pkg install nginx

Synchronizing On Another Machine

Just invoke emplace install, and you will be prompted with the packages to install:

emplace install

History Analysis

You can also parse history files, this will try to extract installation commands from each line.

Bash & Zsh

emplace history $HISTFILE

Fish

emplace history ~/.local/share/fish/fish_history

Removing Synchronized Packages

Run emplace clean and select the packages you want to be cleaned, they won't be removed from your system.

Creating and modifying config files

Run emplace config --new to create a new config and configure the repository or emplace config --path to retrieve the path to the configuration file.

Development Status

This software isn't actively developed on by me anymore, I do however review and accept pull requests.

Contributors

Thanks goes to these wonderful people (emoji key):


Logan Magee

๐Ÿ’ป ๐Ÿ›

Vladimir

๐Ÿ“ฆ ๐Ÿ’ป ๐Ÿ› ๐Ÿšง ๐Ÿ‘€

Jozef Hollรฝ

๐Ÿค”

Oleksii Filonenko

๐Ÿ’ป ๐Ÿ“ฆ ๐Ÿ‘€

x0f5c3

๐Ÿ’ป

Benjamin S. Leveritt

๐Ÿค” ๐Ÿšง

Michael Borejdo

๐Ÿค”

Ken Tobias

๐Ÿ“ฆ

Adam Stephens

๐Ÿ›

omar

๐Ÿ›

5c0tt-b0t

๐Ÿค” ๐Ÿ›

Modded Gamers

๐Ÿ›

John Vandenberg

๐Ÿ› ๐Ÿค”

cryolithic

๐Ÿ“ฆ

This project follows the all-contributors specification. Contributions of any kind welcome!

emplace's People

Contributors

allcontributors[bot] avatar bensleveritt avatar br1ght0ne avatar dependabot-preview[bot] avatar dependabot[bot] avatar github-actions[bot] avatar jtrudel-ea avatar l1a avatar lberrymage avatar renovate[bot] avatar tversteeg avatar x0f5c3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

emplace's Issues

[BUG] **History command not working**

Describe the bug
Running the history command with the zsh and fish history file returns [ERROR] Critical Emplace error while path to history file is not provided

To Reproduce
Steps to reproduce the behavior:

  1. emplace history /home/user/.zsh_history
  2. or emplace history $HISTFILE

Expected behavior
Emplace to parse history file.

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Shell: Fish

Additional context
I have tried against the fish history file as well. I am not sure if I am using the command right because the same error is always returned.

Machine information

Software version

emplace 0.4.1

Operating system

Linux 5.6.0-1036-oem

Command-line

emplace bugreport

Environment variables

SHELL=/usr/bin/fish

Git version

> git --version
git version 2.25.1

Compile time information

  • Profile: release
  • Target triple: x86_64-unknown-linux-gnu
  • Family: unix
  • OS: linux
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2
  • Host: x86_64-unknown-linux-gnu

[BUG] Compilation failure

I am setting up a new macbook pro, and using brew's rust

% rustc --version
rustc 1.56.1
error[E0061]: this function takes 4 arguments but 3 arguments were supplied
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:50:13
    |
50  |             clap_generate::generate::<Bash, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------  ---------  ----------------- supplied 3 arguments
    |             |
    |             expected 4 arguments
    |
note: function defined here
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
    |
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
    |        ^^^^^^^^

error[E0061]: this function takes 4 arguments but 3 arguments were supplied
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:53:13
    |
53  |             clap_generate::generate::<Zsh, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------  ---------  ----------------- supplied 3 arguments
    |             |
    |             expected 4 arguments
    |
note: function defined here
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
    |
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
    |        ^^^^^^^^

error[E0061]: this function takes 4 arguments but 3 arguments were supplied
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:56:13
    |
56  |             clap_generate::generate::<Fish, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------  ---------  ----------------- supplied 3 arguments
    |             |
    |             expected 4 arguments
    |
note: function defined here
   --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
    |
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
    |        ^^^^^^^^

error[E0599]: no variant or associated item named `ColorAuto` found for enum `AppSettings` in the current scope
  --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/main.rs:38:38
   |
38 |         .global_setting(AppSettings::ColorAuto)
   |                                      ^^^^^^^^^ variant or associated item not found in `AppSettings`

error[E0599]: no variant or associated item named `ColoredHelp` found for enum `AppSettings` in the current scope
  --> /Users/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/main.rs:39:38
   |
39 |         .global_setting(AppSettings::ColoredHelp)
   |                                      ^^^^^^^^^^^ variant or associated item not found in `AppSettings`

Some errors have detailed explanations: E0061, E0599.
For more information about an error, try `rustc --explain E0061`.
error: failed to compile `emplace v1.4.1`, intermediate artifacts can be found at `/var/folders/j6/q46zbprs12n5ds9z7zytq5mm0000gn/T/cargo-installXi08Ao`

Caused by:
  could not compile `emplace` due to 5 previous errors

[FEATURE] Support for package manager RUA

What is the name of the package manager you would like to see support for?

https://github.com/vn971/rua#rua----

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely: Arch-based distros
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

failed to `cargo install emplace`

Compiling emplace v1.4.2
error[E0433]: failed to resolve: could not find crate_version in clap
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:31:24
|
31 | .version(clap::crate_version!())
| ^^^^^^^^^^^^^ could not find crate_version in clap

error[E0433]: failed to resolve: could not find crate_authors in clap
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:32:23
|
32 | .author(clap::crate_authors!())
| ^^^^^^^^^^^^^ could not find crate_authors in clap

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:46:26
|
46 | .about("Don't prompt the user and try to install everything"),
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:53:18
|
53 | .about("The location of the configuration file")
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:76:8
|
76 | .about(
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:88:8
|
88 | .about("The command as entired in the terminal")
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:98:8
|
98 | .about("Path to shell history file")
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:105:26
|
105 | .about("Don't prompt the user and select everything"),
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:115:18
|
115 | .about("Create a new config")
| ^^^^^ method not found in Arg<'_>

error[E0599]: no method named about found for struct Arg in the current scope
--> /home/snick/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.2/src/main.rs:122:18
|
122 | .about("Print out path to config")
| ^^^^^ method not found in Arg<'_>

Some errors have detailed explanations: E0433, E0599.
For more information about an error, try rustc --explain E0433.
error: failed to compile emplace v1.4.2, intermediate artifacts can be found at /tmp/cargo-installZW0vWt

Caused by:
could not compile emplace due to 10 previous errors

[FEATURE] Support for package manager

What is the name of the package manager you would like to see support for?
Homebrew (https://brew.sh/)

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

[FEATURE] Support for Flatpak

What is the name of the package manager you would like to see support for?
Flatpak

What operating systems or derivative does this package manager support?

  • Linux

If Linux, is it only for a specific distro?

What type of package manager is this?

  • General purpose

Are administrator privileges required? (sudo, etc.)

  • Yes(ish)

[BUG]

Describe the bug
First run doesn't work.
It doesn't initialize .emplace file and painics after this.
To Reproduce
Steps to reproduce the behavior:
Do everything like in readme.
Note, emplace is modified for extended logging

16:57:37 [ INFO] Cloning repo "https://github.com/username/emplace_storage" to "/home/username/.local/share/emplace".
16:57:39 [ INFO] Config full path: "/home/username/.local/share/emplace/.emplace"
16:57:39 [ INFO] Config: Config { repo_directory: "/home/username/.local/share/emplace", repo: RepoConfig { url: "https://github.com/username/emplace_storage", branch: "master", file: ".emplace" } }
thread 'main' panicked at 'Could not read packages file from repository: failed opening Emplace mirrors file

It cannot read file, because it isn't created, because it's a first run.
Maybe it should manually create it and place empty vec to it, but it seems to be a strange design.

[BUG] emplace asks to mirror when starting a new shell while install in progress

Describe the bug
If an install is in progress in shell-1, creating a new shell will initiate the emplace mirror prompt in shell-2 before anything has been done.

To Reproduce
Steps to reproduce the behavior:

  1. shell-1: brew install qt-creator # which takes a long time to download
  2. open shell-2

Expected behavior
New shells should not prompt regarding actions started in a different shell

Desktop (please complete the following information):

  • OS: Linux
  • Shell: zsh

Machine information

Software version

emplace 1.4.0

Operating system

Darwin 20.3.0

Environment variables

SHELL=/run/current-system/sw/bin/zsh
EMPLACE_CONFIG='/Users/john.vandenberg/Library/Application Support/emplace.toml'

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[FEATURE] Support for package manager

What is the name of the package manager you would like to see support for?

pkg ("pkg install")

๐Ÿ’ก As it is used by all "FreeBSD" unix distros (theres alot!) and as an added bonus, its also the same for Termux on Android.
Thats two more for the price of one! ๐Ÿคฃ

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

Thank you!

[BUG] emplace install for scoop-packages fails

Describe the bug
Installing scoop-packages currently fails due to an incorrectly generated install-command [ERROR] "sudo scoop install package": The system cannot find the file specified. (os error 2)
returning false in scoop-mngrs needs_root imlementation generates the correct command, but still scoop is not being found:
[ERROR] "scoop install package": The system cannot find the file specified. (os error 2)

Desktop (please complete the following information):

  • OS: Windows 10
  • Shell: nushell

Additional context
the scoop command is not an executable, so maybe this is the problem here

[BUG] Catch is triggered when command fails

Describe the bug
When you call a command that fails catch is still triggered. This shouldn't happen.

To Reproduce

apt install test ; false

Expected behavior
Emplace should not be started.

Desktop:

  • OS: Linux
  • Shell: Bash

Additional context
Should be fixed in src/init.rs.

[FEATURE] Support for package manager Nixpkgs

What is the name of the package manager you would like to see support for?
Nixpkgs

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely: NixOS
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

[FEATURE] Support for port package manager

What is the name of the package manager you would like to see support for?
MacPorts
https://www.macports.org/

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

[FEATURE] Support for package manager DNF

What is the name of the package manager you would like to see support for?
Dandified YUM

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

[FEATURE] Support for package manager

What is the name of the package manager you would like to see support for?

golangs's go install

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

THANK YOU!

compiling errors on Android/Termux

Hi! I've never had any problems compiling this on Android via Termux but I get this error now:

error[E0308]: mismatched types
   --> /data/data/com.termux/files/home/.cargo/registry/src/github.com-1ecc6299db9ec823/sys-info-0.7.0/lib.rs:618:22
    |
618 | pub fn boottime() -> Result<timeval, Error> {
    |        --------      ^^^^^^^^^^^^^^^^^^^^^^ expected enum `std::result::Result`, found `()`
    |        |
    |        implicitly returns `()` as its body has no tail or `return` expression
    |
    = note:   expected enum `std::result::Result<timeval, Error>`
            found unit type `()`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
The following warnings were emitted during compilation:

warning: c/linux.c:96:11: warning: implicitly declaring library function 'index' with type 'char *(const char *, int)' [-Wimplicit-function-declaration]
warning:                 mount = index(procline, ' ');
warning:                         ^
warning: c/linux.c:96:11: note: include the header <strings.h> or explicitly provide a declaration for 'index'
warning: 1 warning generated.

error: could not compile `sys-info`

Caused by:
  process didn't exit successfully: `rustc --crate-name sys_info /data/data/com.termux/files/home/.cargo/registry/src/github.com-1ecc6299db9ec823/sys-info-0.7.0/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=8e4c9c41fb88bb44 -C extra-filename=-8e4c9c41fb88bb44 --out-dir /data/data/com.termux/files/home/emplace/target/release/deps -L dependency=/data/data/com.termux/files/home/emplace/target/release/deps --extern libc=/data/data/com.termux/files/home/emplace/target/release/deps/liblibc-90acee28a3686a67.rmeta --cap-lints allow -L native=/data/data/com.termux/files/home/emplace/target/release/build/sys-info-955860057669091d/out -l static=info` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Not sure if sys-info is a new lib? or perhaps it a new version of it causing the issue?

[BUG] Install on APT is broken

I get the following warning when I'm trying to use emplace install with an APT package:

WARNING: apt does not have stable CLI interface. Use with caution in script.

[FEATURE] Support for package manager pipx

What is the name of the package manager you would like to see support for?
pipx. If not as a manager, it should be an alias for the pip3 manager

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific: Python
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

[BUG] **emplace install**

emplace install
16:00:49 [ INFO] No configuration file found.
The URL of the git repository you (want to) store the mirrors in: link
values must be emitted before tables
16:00:52 [ERROR] Critical Emplace error while installing packages

Caused by:
values must be emitted before tables

[FEATURE] Support for package manager Portage

What is the name of the package manager you would like to see support for?
Portage

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely: Gentoo
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

[FEATURE] Support for package manager

What is the name of the package manager you would like to see support for?

Ruby's gem install

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

THANK YOU!

[BUG] PyPi manager should ignore requirements*.{txt,pip,in}

Spawned from #169 (comment)

Describe the bug
If the pip command is -rfilename, it should either be ignored, or its contents processed using a pip compliant parser and package names extracted.

Currently it will record an entry for package requirements.txt, which is not valid (c.f. https://pypi.org/project/requirements.txt/) , but it could be valid as that name complies with PyPI package name syntax.

To Reproduce
Steps to reproduce the behavior:

  1. echo foo > requirements.txt
  2. pip install -r requirements.txt
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement foo (from -r requirements.txt (line 1)) (from versions: none)
ERROR: No matching distribution found for foo (from -r requirements.txt (line 1))
Opening Emplace repo: "/Users/john.vandenberg/Library/Application Support/emplace".
Mirror this command?
- requirements.txt (Python Pip)

Expected behavior
Not add arguments to -r as a package name.

Desktop (please complete the following information):

  • OS: mac
  • Shell: zsh

Machine information

Software version

emplace 1.4.0

Operating system

Darwin 20.3.0

Environment variables

SHELL=/run/current-system/sw/bin/zsh
EMPLACE_CONFIG='/Users/john.vandenberg/Library/Application Support/emplace.toml'

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[BUG] Silent fails if other commits are added to the repo

Describe the bug
I manually added files to my emplace repo. emplace didnt detect its workarea is out of sync, and didnt report that it had failed to push the changes.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Github repo, add files manually
  2. Install something locally that emplace will try to submit to repo
  3. Check repo for new emplace addition

Expected behavior
emplace should either automatically detect that master has new changes, or fail so the user can manually rectify the conflict.

[FEATURE] Support for package manager: antigen

What is the name of the package manager you would like to see support for?
antigen

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely: zsh plugins

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No

[BUG] **fn needs_root needs clarification**

Describe the bug
N/A
N/A

Expected behavior
N/A

Desktop (please complete the following information):
N/A

Additional context
How does needs_root work? Does it try to install everything with sudo prefixed, or something else? What about a system without sudo, like a BSD derivitive? Would it use doas? And what about package managers like npm, pip, and brew, which can both use sudo and not use sudo?

Machine information
N//A

[BUG] sub_commands matches inside package names

Describe the bug
In #130 when attempting to add zypper support, I discovered that using the short form of install, in, the pattern will be removed from package names as well. I'm guessing a package with install in it would exhibit the same behavior.

To Reproduce
Steps to reproduce the behavior:

  1. Check out #130
  2. Attempt to install a package name that includes in. The tests do this as well.

Expected behavior
I'd expect in to match from the sub command, and the package names to not be modified.

Desktop (please complete the following information):
n/a

Additional context
n/a

[BUG] Capture brew tap invocation

Describe the bug
brew install depend on brew tap

To Reproduce
Steps to reproduce the behavior:

  1. brew tap foo
  2. brew install something_from_foo
  3. On a different machine, sync the updates

Expected behavior
brew taps should be added to the db so that they can be re-run on another machine before any installs which depend on them.

Desktop (please complete the following information):

  • OS: macos
  • Shell: zsh

[BUG] package_manager_impl.is_available() produces false negatives

Describe the bug
I am using emplace on Windows 10 currently. I want to manage npm, scoop and cargo packages.
Currently emplace does not recognize these managers, because is_available returns always false. I narrowed it down to is_executable returning false, when the commands-Vector does not include ".exe". For scoop there does not seem to be an executable in PATH (just a cmd file). is_executable does not seem to return true here neither.

Desktop (please complete the following information):

  • OS: Windows 10
  • Shell: nushell (same in cmd)

Perfomance improvement

Now, most of the time is spent in git related operations.
So i think, we need to rework this module.
Maybe make git operations async, or do not git pull on every command execution

[FEATURE] Import from package manager

A larger alternative to solve the same problem as #165 is to import the existing list of packages from the package manager. And an --all or multi-select would be very helpful.

[BUG] Multi-line commands not all captured

Describe the bug
Pasting a multi-line command containing two relevant commands only results in the first being captured.

To Reproduce

  1. Select "brew install pyenv
    brew install pyenv-virtualenv" to buffer
  2. Paste into terminal
  3. Press enter
$ brew install pyenv
    brew install pyenv-virtualenv
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
==> Updated Casks
Updated 2 casks.

==> Downloading https://homebrew.bintray.com/bottles/pyenv-1.2.24.1.big_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/721c9ad24c32daaff25202899be4a2d5aa877578d4004197eaf137cf5f353dae?response-content-disposition=attachment%3Bfilename%3D%22pyenv-1.2.24.1.big_sur.bottle.ta
######################################################################## 100.0%
==> Pouring pyenv-1.2.24.1.big_sur.bottle.tar.gz
๐Ÿบ  /usr/local/Cellar/pyenv/1.2.24.1: 742 files, 2.6MB
==> Downloading https://github.com/pyenv/pyenv-virtualenv/archive/v1.1.5.tar.gz
==> Downloading from https://codeload.github.com/pyenv/pyenv-virtualenv/tar.gz/v1.1.5
######################################################################## 100.0%
==> ./install.sh
==> Caveats
To enable auto-activation add to your profile:
  if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
==> Summary
๐Ÿบ  /usr/local/Cellar/pyenv-virtualenv/1.1.5: 22 files, 65.6KB, built in 9 seconds
Opening Emplace repo: "/Users/john.vandenberg/Library/Application Support/emplace".
Mirror this command?
- pyenv (Homebrew)
yes
Committing with message "Emplace - mirror package "pyenv"".
Pushing to remote.

Expected behavior
Each line of the multi-line command should be processed and result in a record being saved

Desktop (please complete the following information):

  • OS: macos
  • Shell: zsh

Machine information

Software version

emplace 1.4.0

Operating system

Darwin 20.3.0

Environment variables

SHELL=/run/current-system/sw/bin/zsh
EMPLACE_CONFIG='/Users/john.vandenberg/Library/Application Support/emplace.toml'

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[BUG] History multi-select list contains duplicates

Describe the bug
History multi-select list contains duplicates.

To Reproduce
Steps to reproduce the behavior:

  1. Run
    brew install docker-machine
    brew install docker-config
    brew install docker-config
    brew install docker-machine
    
  2. emplace history $HISTFILE
...
  [x] docker-machine (Homebrew)
  [x] docker-config (Homebrew)
  [x] docker-config (Homebrew)
  [x] docker-machine (Homebrew)
...

Expected behavior
Duplicates should be eliminated.

Desktop (please complete the following information):

  • OS: mac
  • Shell: zsh

Additional context
iirc , docker-config doesnt exist, but that is a separate problem

Machine information

Software version

emplace 1.3.1-alpha.0

Operating system

Darwin 20.3.0

Environment variables

SHELL=/usr/local/bin/zsh
EMPLACE_CONFIG='/Users/john.vandenberg/Library/Application Support/emplace.toml'

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

Use fern as the logging crate

It's easily tweakable using fern crate. We can leave info and create verbosity switcher to show messages with different priority.

Originally posted by @0xd34b33f in #57

[FEATURE] Support for package manager

What is the name of the package manager you would like to see support for?
jupyter nbextension

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Are administrator priviliges required? (sudo, etc.)

  • Yes
  • No
    If python packges are installed with --user, then no. Otherwise yes

[BUG] **Package Manager name matching isn't working well.**

Describe the bug
If I install something using bpkg, emplace prompts to save the package using pkg as the package manager.

To Reproduce
Steps to reproduce the behavior:

  1. Install bpkg.
  2. Try to install term by doing bpkg install term.

Expected behavior
I expected emplace to not do anything

Desktop (please complete the following information):

  • OS: macOS Mojave 10.14.2
  • Shell: ZSH

Additional context
I'm working on adding bpkg support, but I can't add it without this bug being fixed.

Machine information

Software version

emplace 1.2.0

Operating system

Darwin 18.2.0

Command-line

emplace bugreport

Environment variables

SHELL=/bin/zsh

Git version

> git --version
git version 2.30.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[FEATURE] emplace history bulk add

Describe the bug
I have started using emplace a few weeks after starting using a mac. My history has some of the software I have installed and it would be great to quickly add most of the entries emplace can detect.

Multi-select might be a bit tricky, in which case I would use an option for emplace to bulk add automatically, and then I can manually remove the few which shouldnt be there.

To Reproduce
Steps to reproduce the behavior:

  1. Do lots of brew install's
  2. Use emplace history $HISTFILE

Expected behavior
Multi-select or an --all flag

[BUG] Request to mirror an Unsuccessful brew install

Describe the bug
A failed attempt to install a package with brew should not initiate emplace.

To Reproduce

brew install pyflakes
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
Error: No available formula or cask with the name "pyflakes".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching taps on GitHub...
Error: No formulae found in taps.
Opening Emplace repo: "/Users/john.vandenberg/Library/Application Support/emplace".
Mirror this command?
- pyflakes (Homebrew)
no

Expected behavior
If the install was unsuccessful, it shouldnt be mirrored to other machines.

Machine information

Software version

emplace 1.2.2

Operating system

Darwin 20.3.0

Command-line

emplace bugreport

Environment variables

SHELL=/usr/local/bin/zsh

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[BUG] Handle local cargo installs better

Describe the bug
Installing a path of . shouldnt be registered as '.'.

To Reproduce

cargo install --path .
  Installing emplace v1.3.1-alpha.0 (/Users/john.vandenberg/osx/emplace)
    Updating crates.io index
   Compiling libc v0.2.89
   Compiling proc-macro2 v1.0.24
....
    Replaced package `emplace v1.3.0` with `emplace v1.3.1-alpha.0 (/Users/john.vandenberg/osx/emplace)` (executable `emplace`)
Opening Emplace repo: "/Users/john.vandenberg/Library/Application Support/emplace".
Mirror this command?
- . (Cargo Rust)
[y/n]

Expected behavior
Dont try to register '.' as an installable, or expand . to be a complete path, and even better would be to determine the git repo and hash to make it reproducible.

Desktop (please complete the following information):

  • OS: mac
  • Shell: zsh

Machine information

Software version

emplace 1.3.1-alpha.0

Operating system

Darwin 20.3.0

Environment variables

SHELL=/usr/local/bin/zsh
EMPLACE_CONFIG='/Users/john.vandenberg/Library/Application Support/emplace.toml'

Git version

> git --version
git version 2.31.0

Compile time information

  • Profile: release
  • Target triple: x86_64-apple-darwin
  • Family: unix
  • OS: macos
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2,sse3,ssse3
  • Host: x86_64-apple-darwin

[BUG] **Critical Emplace error while No such file or directory**

Describe the bug
Can't find directory when running it for the first time on an empty PC.

To Reproduce
Steps to reproduce the behavior:

  1. Install Emplace
  2. Add config to bashrc
  3. Open new shell

Expected behavior
A clear and concise description of what you expected to happen.

Desktop:

  • OS: Debian
  • Shell: Bash

Machine information

Software version

emplace 1.2.0

Operating system

Linux 5.10.0-3-amd64

Command-line

emplace bugreport 

Environment variables

SHELL=/bin/bash

Git version

Could not run command 'git': No such file or directory (os error 2)

Compile time information

  • Profile: release
  • Target triple: x86_64-unknown-linux-gnu
  • Family: unix
  • OS: linux
  • Architecture: x86_64
  • Pointer width: 64
  • Endian: little
  • CPU features: fxsr,sse,sse2
  • Host: x86_64-unknown-linux-gnu

[FEATURE] Support for package manager Yum

What is the name of the package manager you would like to see support for?
Yellowdog Updater, Modified

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

[BUG] Fail to compile

Describe the bug
cargo installation fails with the following errors:

Compiling emplace v1.4.1
error[E0061]: this function takes 4 arguments but 3 arguments were supplied
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:50:13
|
50 | clap_generate::generate::<Bash, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------- --------- ----------------- supplied 3 arguments
| |
| expected 4 arguments
|
note: function defined here
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
|
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
| ^^^^^^^^

error[E0061]: this function takes 4 arguments but 3 arguments were supplied
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:53:13
|
53 | clap_generate::generate::<Zsh, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------- --------- ----------------- supplied 3 arguments
| |
| expected 4 arguments
|
note: function defined here
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
|
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
| ^^^^^^^^

error[E0061]: this function takes 4 arguments but 3 arguments were supplied
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/init.rs:56:13
|
56 | clap_generate::generate::<Fish, _>(&mut public_clap_app(), "emplace", &mut io::stdout())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------- --------- ----------------- supplied 3 arguments
| |
| expected 4 arguments
|
note: function defined here
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/clap_generate-3.0.0-beta.5/src/lib.rs:239:8
|
239 | pub fn generate<G, S>(gen: G, app: &mut clap::App, bin_name: S, buf: &mut dyn Write)
| ^^^^^^^^

error[E0599]: no variant or associated item named ColorAuto found for enum AppSettings in the current scope
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/main.rs:38:38
|
38 | .global_setting(AppSettings::ColorAuto)
| ^^^^^^^^^ variant or associated item not found in AppSettings

error[E0599]: no variant or associated item named ColoredHelp found for enum AppSettings in the current scope
--> /home/jorpilo/.cargo/registry/src/github.com-1ecc6299db9ec823/emplace-1.4.1/src/main.rs:39:38
|
39 | .global_setting(AppSettings::ColoredHelp)
| ^^^^^^^^^^^ variant or associated item not found in AppSettings

Some errors have detailed explanations: E0061, E0599.
For more information about an error, try rustc --explain E0061.
error: failed to compile emplace v1.4.1, intermediate artifacts can be found at /tmp/cargo-installm8YwVw

Caused by:
could not compile emplace due to 5 previous error

To Reproduce
Steps to reproduce the behavior:

run "cargo install emplace"

Expected behavior
A clear and concise description of what you expected to happen.

emplace version 1.4.1 should be compiled and installed in the system

Desktop (please complete the following information):

  • OS: [e.g. Linux] Arch Linux
  • Shell: [e.g Bash] Fish

Additional context
cargo version 1.56.0 (4ed5d137b 2021-10-04)
rustc version 1.56.1 (59eed8a2a 2021-11-01)

Machine information
Print the contents of emplace bugreport here.

[FEATURE] Support for package manager Homebrew

What is the name of the package manager you would like to see support for?
Homebrew

What operating systems or derivative does this package manager support?

  • Windows
  • Mac
  • Linux
  • BSD
  • Redox
  • iOS
  • Android
  • Other, namely:

If Linux, is it only for a specific distro?

  • Yes, namely:
  • No

What type of package manager is this?

  • Programming language specific (e.g. Cargo for Rust)
  • General purpose (e.g. APT on Debian)
  • Other, namely:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.