GithubHelp home page GithubHelp logo

doit's Introduction

Do it

Just do it? Mkay

Was bored over summer holidays and decided to finally build the build system I had in my head. Think make but with bit more spice. Is mostly file based (So language agnostic) since my main use for make was compiling random scripts and tex files together for assignments.

This really is more of just a hobby thing for personal use so don't expect it to be too fancy

Basic usage

First make sure you have both Nim and nimble installed and then install doit by running nimble install https://github.com/ire4ever1190/doit

Then you create a file called doit.nim and put this basic structure in it

import doit/api

# targets and tasks go here

run()

You can write any Nim code in here but since you are using this you'll probably want to write some targets and tasks.

  • target: Code that takes in some requirement files and produces a target file
  • task: Code that always runs when its a requirement

A basic Nim project would look like this

import doit/api

target("program", ["program.nim", "other.nim"]):
  cmd "nim c program.nim"

task("clean"): # Just like .PHONY in make, means this always runs
  rm "./program"

run()

Running doit program will then compile the program (Running it again will do nothing since it detects no modification) and doit clean will remove it

Roadmap

  • Basic make like operations
  • Detecting cycles in operations
  • Expand the API
  • Documentation
  • Pattern matching
  • Lazy loading of dependencies
  • Automatic finding of dependencies for different file types (Maybe through some form of a hooks system for file extensions)

doit's People

Contributors

ire4ever1190 avatar

Watchers

 avatar  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.