Giter VIP home page Giter VIP logo

octo's Introduction

Octo

O[din]C[code]T[transport]O[perator] is a bespoke package manager for Odin that is meant to be opinionated and comfortable (for me). The concept is to maintain grain control of the process with some ergonomics. The more barebones the better, and lots of loggin. The program is just doing what I would do manually without magic.

Limitations

  • Currently only supports MacOS (Should work in Linux too but haven't tested)
  • Not managing dependencies of dependencies. (Not sure I will)
  • Versions are not being tracked (yet)

Octo expects the following file structure:

  • octo.pkg
  • ols.json
  • src (optional, the default builder uses this if present)
  • libs (optional, the default builder uses this if present)
  • target (all builds get generated to this directory)

My custom is having all dependencies in a lib folder and my own logic in src

import "libs:<some dependency>"

Packages

Packages are downloaded to $HOME/.octo directory and then copied to your project libs. To avoid unnecessary files only odin source files or static/shared libraries are copied

Installation

git clone https://github.com/dvrd/octo
cd octo
make install

This will bootstrap the binary in the $HOME/.octo directory and add the registry.json (Which I haven't really done anything with yet)

You should add it to your path afterwards. I use zsh so I just append it to my .zshrc in the home directory

echo "PATH=$HOME/.octo:$PATH" >> "$HOME/.zshrc"

I like nerd-font-icons so if have them installed, if you want to see them you can set FAILZ_ICONS_ENABLED to true and they'll show up

Available commands

$ octo new <package_name>
$ octo init
$ octo run <BUILD_TARGET>
$ octo build <BUILD_TARGET>
$ octo release
$ octo install
$ octo ls
$ octo list
$ octo add <optional:SERVER>/<optional:OWNER>/<PKG>
$ octo update <PKG>
$ octo rm <PKG>

The build system works through the octo.pkg it only receives parameters that are available already in odin build. For example:

release: {
  src: "src",
  collections: {
    libs: "libs"
  },
  optim: "speed",
  separate_modules: true
}

translantes to:

odin build src -collection:libs=libs -o:speed -use-separate-modules -out:target/release/<name_of_the_app>

octo's People

Contributors

dvrd avatar

Watchers

 avatar

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.