Git Product home page Git Product logo

smooth-build's People

Contributors

maciejmikosik avatar mikosik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

smooth-build's Issues

Find a way to write acceptance tests

Acceptance tests should use whole smooth-build release and test it as a black box. Data used by each test should be a whole project structure (build.smooth file, some source files, etc). Each test should assert that executing given smooth command in such project yields correct results. We need to assert error/success messages printed to console and artifacts produced by execution.

Workaround around bug in airline command line parser

$ smooth xxx
Exception in thread "main" org.smoothbuild.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [xxx]
at org.smoothbuild.airline.Cli.validate(Cli.java:148)
at org.smoothbuild.airline.Cli.parse(Cli.java:116)
at org.smoothbuild.airline.Cli.parse(Cli.java:97)
at org.smoothbuild.Main.main(Main.java:21)

tutorial on smooth-build.org should be generated automatically from doc/tutorial.md

Ideally it should happen automatically - site's html/javascript should fetch tutorial.md from github and convert it to html. In that case 'master' branch should contain version of tutorial.md that is valid for latest smooth release. To make everything work this way, whole development should happen on separate 'dev' branch which should be merged to 'master' when new release is done.

specify root directory of project

By default, smooth script in .smooth file assumes project's root directory is one where .smooth file is located.
Option to specify other directory explicitly would be useful.

improve calculating TaskWorker hashes

Hash of each TaskWorker should be based on:

  • native java method that implements its functionality
  • hash of jar file that contains bytecode of that method's class

Currently different implementation of TaskWorker use different algorithm for calculating hash.

Create document with glossary of all terms

basic terms to describe:

  • environment, machine, running machine
  • artifact
  • hash
  • hash calculation - of basic type, compound type (structures)
  • call
  • function
  • caching - in scope of single build, network access, forever
  • module/package
  • task, task input, task output
  • expression (is there difference between expression and task?)

remove all TODOs

Fix all TODOs in code.
For those that cannot be quickly fixed create issue in github tracker.
Make github tracker the only point of truth for project problems/bugs.

Calculation of Task hash should take into account OS/environment

Currently hash of any Computation does not take into account:

  • installed java jdk - for example zip() function uses jdk for zipping which might produce different results in different verions of jdk
  • external binaries - for example in case of java() function it doesn't take into account 'java' binary nor files/binaries it uses during execution. Such dependencies can transitively reach almost any binary on current machine or even files on different machines - for example results of linux 'nslookup' binary depends on state external to running machine.

In practice it's impossible to deal with state external to running machine.

State of the environment can be probably hashed if solution similar to docker is used. Smooth could use hash of docker image/config files as a hash of environment. Still it needs to be investigated whether docker image/config files are fully deterministic or at least can be made deterministic. I suspect that docker config may simply call 'nslookup' and based on results perform different actions - this way one config file (with given hash) can generate different environments.

The other solution is to use hash of the whole hard-disk device that machine is booting from. Asusming it is the only hard disk that machine is using.

test caching

Bring back CachedSmoothTest from git history. It should use to-be-created function that returns different result upon each call to check whether caching works correctly.

add JavaClassTree

Add JavaClassTree that encapsulates Map from binary class name to JavaFileObject representing java class file.

merging filesystem trees

I would like to have possibility of merging two filesystem trees, so I can have jar file with both: binaries and source code inside.

Consider renaming Param, Function, Signature, Name classes by adding "S" prefix

The same should be done to variables of mentioned types.
This should help avoiding ambiguity when block of code deals with java and smooth concepts at the same time. For example java parameter of java method that represents smooth parameter of smooth functions. They can be named jParam and sParam respectively to avoid confusion.

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.