shenzhen-go

command module
v0.0.0-...-7342f7f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

README

"SHENZHEN GO" (working title)

Doc Status license

⚠ WARNING: This repository is currently unmaintained, and the project is not being worked on.

SHENZHEN GO (working title) is an experimental visual Go environment, inspired by programming puzzle games such as TIS-100 and SHENZHEN I/O.

SHENZHEN GO provides a UI for editing a "graph," where the nodes are goroutines and the arrows are channel reads and writes. (This is analogous to multiple "microcontrollers" communicating electrically in a circuit.) It can also convert a graph into pure Go source code, which can be compiled and run, or used as a library in a regular Go program.

SHENZHEN GO was unveiled at the linux.conf.au 2017 Open Source & Games Miniconf.

Read more at https://google.github.io/shenzhen-go/

Example Graph

Getting started

See the getting-started guides at https://google.github.io/shenzhen-go/

...for the impatient gopher

Choose one of:

git clone https://github.com/nk2ge5k/shenzhen-go && cd shenzhen-go && go install
git clone https://github.com/nk2ge5k/shenzhen-go && cd shenzhen-go && go install -tags webview
go get -u github.com/nk2ge5k/shenzhen-go
go get -u -tags webview github.com/nk2ge5k/shenzhen-go

Notes

This is not an official Google product.

This is an experimental project - expect plenty of rough edges and bugs, and no support.

For discussions, there is a Google Group and a Slack channel.

Acknowledgements

This project wouldn't be nearly as good as it is without the following:

Documentation

Overview

The shenzhen-go binary serves a visual Go environment.

Directories

Path Synopsis
The client script is for interacting with a graph in an SVG (via DOM).
The client script is for interacting with a graph in an SVG (via DOM).
controller
Package controller implements the view's controller interfaces.
Package controller implements the view's controller interfaces.
view
Package view implements the client.
Package view implements the client.
Package dom contains bits for making dealing with the DOM easier.
Package dom contains bits for making dealing with the DOM easier.
Package examples contains Shenzhen Go example programs.
Package examples contains Shenzhen Go example programs.
broadcast_gather
Package broadcast_gather was automatically generated by Shenzhen Go.
Package broadcast_gather was automatically generated by Shenzhen Go.
cache
The cache command was automatically generated by Shenzhen Go.
The cache command was automatically generated by Shenzhen Go.
demo
The demo command was automatically generated by Shenzhen Go.
The demo command was automatically generated by Shenzhen Go.
http_hammer
The http_hammer command was automatically generated by Shenzhen Go.
The http_hammer command was automatically generated by Shenzhen Go.
http_server
The http_server command was automatically generated by Shenzhen Go.
The http_server command was automatically generated by Shenzhen Go.
interrupt
The interrupt command was automatically generated by Shenzhen Go.
The interrupt command was automatically generated by Shenzhen Go.
keycount
The keycount command was automatically generated by Shenzhen Go.
The keycount command was automatically generated by Shenzhen Go.
queue
The queue command was automatically generated by Shenzhen Go.
The queue command was automatically generated by Shenzhen Go.
transform
The transform command was automatically generated by Shenzhen Go.
The transform command was automatically generated by Shenzhen Go.
zip
Package zip was automatically generated by Shenzhen Go.
Package zip was automatically generated by Shenzhen Go.
Package model has the model types: graph, channel, node...
Package model has the model types: graph, channel, node...
pin
Package pin has types for describing pins (connection points).
Package pin has types for describing pins (connection points).
Package parts contains various pre-made bits and pieces to combine into the graph.
Package parts contains various pre-made bits and pieces to combine into the graph.
proto
go
js
Package proto is a generated protocol buffer package.
Package proto is a generated protocol buffer package.
scripts
embed
The embed script wraps file contents with some Go to access it.
The embed script wraps file contents with some Go to access it.
Package server serves the user interface and API, and manages the data model.
Package server serves the user interface and API, and manages the data model.
view
Package view provides the user interface.
Package view provides the user interface.
Package source helps deal with Go source code.
Package source helps deal with Go source code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL