nightrune / wrench Goto Github PK
View Code? Open in Web Editor NEWPreprocessor and Build Tools for the Electric Imp Platform
License: MIT License
Preprocessor and Build Tools for the Electric Imp Platform
License: MIT License
Create mock objects and functions for fixedfrequencydac
https://electricimp.com/docs/api/hardware/fixedfrequencydac/
Add support for manipulating devices.
Add support for pulling logs from a specific device. Ideally you'd be able to stream and pump this into somethign like less or a file.
make it easier to understand that its a json file, but users should know that its a json file.
These files should #define IMP_AGENT and IMP_DEVICE
These should be included so that a single library file can have device code and agent code as well. Implementers can then use this to share code between the two, but could still including different files as well.
A feature that Imp hasn't implemented yet is a way of accessing the model name/number and build number in Squirrel code. wrench could add these and other values like it as a dynamically generated #define's that could be accessed in the code. Other more basic ones could be a date string / time stamp of the build time.
Expose and support the build API's error reporting.
Add support for Build Entities using golangs built in json interpreter and structs for golang.
When you run wrench in a random directory (not the project's main directory) wrench creates a settings.wrench file. I assume this is designed to help you by creating a template but instead it just makes a mess.
It would be great to have a single build and run command.
Create a scheme for standard imp model definitions.
Example IMP_DEVICE_003, IMP_DEVICE_002
Create mock calls and objects for "device"
Add support for Build API manipulation of models.
To fully support testing device code we need to embed the squirrel vm into go. This would allow us to test deep sleep wakeup behavior as well as nvram behavior.
Build in git support to go for pulling libraries down into our libs folder. We could either use an external process or build support straight in. This would also need to define a structure for libraries that use it. It should probably be modeled off of golang. And it would likely be local to each setting file.
A basic windows binary installer.
Create mock calls for the agent api.
In some cases wrench does not deal with socket closes gracefully, or dealing with no internet connection.
A boolean flag (which defaults to false?) in the settings.wrench file that would enable the automatic deletion of the generated output files after successfully uploading them to imp.
Is it possible to change the date format to something local and simpler?
From 2016-01-15T10:35:33.518+00:00
to 2016-01-15 21:35:33
Current wrench doesn't support the string library for the squirrel vm.
Base squirrel didn't off the library it needs to be included when the vm is initialized. Add support for the blob library inside wrench.
Running the following code:
dummyData += "\x00";
through wrench removes the backslash and produces:
dummyData += "x00";
Support for a linux and unix package.
the following line still includes a file:
//#include "myfile.nut"
Add support for manipulating code revisions within the Build API.
I closed my laptop without shutting down wrench logs ... it wasn't too happy about that.
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x10 pc=0x407c6aa]
goroutine 1 [running]:
github.com/nightrune/wrench/ei.(*BuildClient)._complete_request(0xc20801e500, 0x4335530, 0x3, 0xc2082cf110, 0x65, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/ei/ei.go:163 +0x21a
github.com/nightrune/wrench/ei.(*BuildClient).ContinueDeviceLogs(0xc20801e500, 0xc208229180, 0x47, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/ei/ei.go:458 +0x16e
main.StartDeviceLogging(0xc20801e500, 0x7fff5fbffbf9, 0x10)
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/device.go:49 +0x52b
main.DeviceSubCommand(0x44b0ca0, 0xc20800a010, 0x3, 0x3)
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/device.go:122 +0x466
main.main()
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/wrench.go:209 +0xa39
goroutine 5 [syscall, 148 minutes]:
os/Signal.loop()
/opt/local/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/Signal.init·1
/opt/local/go/src/os/signal/signal_unix.go:27 +0x35
goroutine 6 [chan receive, 148 minutes]:
main.func·004()
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/wrench.go:187 +0x55
created by main.main
/Users/me/Sites/go.home/src/github.com/nightrune/wrench/wrench.go:191 +0x353
goroutine 17 [syscall, 148 minutes, locked to thread]:
runtime.goexit()
/opt/local/go/src/runtime/asm_amd64.s:2232 +0x1
When you upload a new model the devices and agents are not restarted. A "restart " command is pretty critical.
An additional useful feature to this command would be a "-l" flag to enable logging immediately after the restart.
Add build authorization for the Golang Build API. This should use the key from the .wrench settings file.
A new flag, -r or --restart which would cause the upload command to also restart all devices attached to the model.
The mock library should have primities to allow testing of any aspect of squirrel and support for expected calls and number of calls.
Talk to electric imp and see if they can open source thier blob library or write our own
I had to install on a different OSX machine today so I noted down the exact steps required for installation.
sudo port install gpp
sudo port install go
mkdir ~/Documents/go.home
cd ~/Documents/go.home
export GOPATH=~/Documents/go.home
go get github.com/nightrune/wrench
cd src/github.com/nightrune/wrench/squirrel/
tar xvfz ~/Downloads/squirrel_3_0_7_stable.tar.gz
cd SQUIRREL3
make
cd ../..
go build
ls -l wrench
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.