Giter Club home page Giter Club logo

poise's Introduction

poise

The Erg package manager

This package manager is bundled with erg and is available via the erg pack subcommand. See here for information on how to use the command.

Requirements

  • Git
  • Github CLI (if you want to publish packages)

Bootstrap

erg src/main.er -- install

Alternatively, you can use ergup to install poise automatically.

Usage

Actually, poise is inspired by cargo (Rust's package manager) and has almost the same command options.

Create a new package

  • Creating a new package in the current directory
erg pack init
  • Making a new directory and creating a package
erg pack new package_name

Build a package

This generates the artifacts in the build directory.

erg pack build

Check a package

This does not generate the artifacts.

erg pack check

Run a package

erg pack run

Test a package

This runs the test subroutines (named with test_ prefix) in the tests directory.

erg pack test

Publish a package

This publishes the package to the registry.

erg pack publish

Install a package

  • Install the package from the current directory
erg pack install
  • Install the package from the registry
erg pack install package_name

Uninstall a package

  • Uninstall the package from the current directory
erg pack uninstall
  • Uninstall the package by specifying the name
erg pack uninstall package_name

Update dependencies

erg pack update

Display the package information

erg pack metadata
  • Display the package information with json format
erg pack metadata --format json

Clean the build directory

erg pack clean

poise's People

Contributors

mtshiba avatar

Stargazers

DJ::Ötzi avatar

Watchers

 avatar  avatar

poise's Issues

Panic with CPython 3.9

Reproducible command

poise init

Result

/Users/shiba/.erg/bin/poise: line 1: 33964 Segmentation fault: 11  python3 /Users/shiba/.erg/bin/poise.pyc $@

Version

CPython 3.9
Erg 0.6.31

Note

This may be the bug of the Erg code generator.

Secure execution of build scripts

The erg script specified in poise's pre-build can currently execute arbitrary code. Although this is unavoidable to some extent, it does pose a security risk.

https://blog.rust-lang.org/inside-rust/2023/09/01/crates-io-malware-postmortem.html

The following are some of the counterplans I can think of now:

  • Create a sandbox environment and only allow execution within it
  • Analyze the effects of build scripts to make it clear to the user whether the script is creating files or communicating externally, etc.

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.