mikosik / smooth-build Goto Github PK
View Code? Open in Web Editor NEWbuild tool with functional language
License: Apache License 2.0
build tool with functional language
License: Apache License 2.0
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.
$ 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)
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.
Checked exceptions have to go.
http://misko.hevery.com/2009/09/16/checked-exceptions-i-love-you-but-you-have-to-go/
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.
Hash of each TaskWorker should be based on:
Currently different implementation of TaskWorker use different algorithm for calculating hash.
file() and files() functions are not cacheable - during each build run they can returned different value for same arguments.
However during single build run they will return always the same value for given arguments so results can be cached in scope of single build.
I need task that interfaces with jarjar library
Move convert functions to funcs.jar so their hashes are calculated the same way as hashes of other functions.
basic terms to describe:
As separate plugin 'junit' function will contain content of junit.jar so it does not have to be added to smooth.jar
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.
Algorithm in DefinedFunctionsCreator.commonSuperType() method has hardcoded type hierarchy.
Smooth type hierarchy should be provided via some data structure so mentioned algorithm can be generic.
Currently hash of any Computation does not take into account:
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.
Describe:
Each Message extends RuntimeException so it contains stack trace.
Command line option is needed for printing such stack-trace along each Message.
Refactor Task executing code so BuildInterruptedException is no longer needed.
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 that encapsulates Map from binary class name to JavaFileObject representing java class file.
Improve CommandExecutor to collect sysout and syserr streams and add them to messages. Enums Message.STDOUT and Message.STDERR should be created.
This way they can reuse functionality for hash calculation and caching that is implemented for NativeFunctions
I would like to have possibility of merging two filesystem trees, so I can have jar file with both: binaries and source code inside.
Each smooth function should be implemented in java as public static java function.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.