First, install Go and set up your Go workspace by following these instructions. In short:
mkdir ~/go
echo "export GOPATH=$HOME/go" >> ~/.bashrc
echo "export PATH=$GOPATH/bin:$PATH" >> ~/.bashrcNext, clone this repo:
mkdir -p ~/go/src/gitlab.engr.illinois.edu/sp-box
git clone git@gitlab.engr.illinois.edu:sp-box/boxsync.git ~/go/src/gitlab.engr.illinois.edu/sp-box/boxsyncTo build:
cd ~/go/src/gitlab.engr.illinois.edu/sp-box/boxsync
go install ./... # Build all main packages underneath the current directory and install in $GOPATH/bin
# Same as `go install gitlab.engr.illinois.edu/sp-box/boxsync/cmd/boxsync` in this caseTo run, just run boxsync because $GOPATH/bin is in your $PATH.
We will use govendor for vendoring.
To add dependencies, a proper usage is like:
govendor fetch github.com/fsnotify/fsnotify
In general, conform to the style guidelines described here and configure your text editor to run gofmt on save. Project-specific code style guidelines are described below.
Imports should be organized into the following three groups, with blank lines between them.
import (
// Standard library packages
"testing"
"time"
// External (vendor) packages
"github.com/stretchr/testify/assert"
"golang.org/x/oauth2"
// Internal packages
"gitlab.engr.illinois.edu/sp-box/boxsync/auth/mocks"
)Imports in each group should be alphabetized; gofmt will do this automatically.
You can put anything you want for commit message. But, in general, conform to a simple "subject-body" format, and use key action word as the first word for "subject". For example:
fixed/refactored/updated/removed/changed/released/merged/... subsytem x for blab
subsystem x has a problem ..., and I did ... to fix...
more details...
I found following plugins can come handy for vim.
(1) Install Vundle for vim(https://github.com/VundleVim/Vundle.vim.git).
(2) Install YouCompleteMe for go (https://github.com/Valloric/YouCompleteMe.git).
(3) Install vim-go for go (https://github.com/fatih/vim-go.git).
(4) Install screen tool tmux.
(5) Install tagging tool gotags.
Don't forget to configure ~/.vimrc, various configurations can be found online.
After building boxcl, command line tool is ready to use.
For more help information, --help is available for quick check.
$ boxcl [command_name] --help
Use command line example:
$ boxcl [command_name] [arguments...(will specify in following list)]
user - Allow user to login with OAuth for initialization. It will print the user id after login successes.
dir - Check for the availability of $HOME/Box Sync and make it the default sync folder. Print out the folder id.
dlA - Download all contents from cloud Box Sync folder.
up [file_id] - Upload file to Box root directory.
up [file_id] [parent_folder_ id] - Upload file to specific parent folder.
upN [file_id] [file_local_src_path] - Replace a specific file with new version.
wE - Output event stream in real time.
mkdir [folder_name] - Create folder with [folder_name] in Box root directory.
mkdir [folder_name] [parent_folder_ id] - Create folder with [folder_name] in specific parent folder.
rm [fild_id] - Delete file.
rmdir [folder_id] - Delete folder recursively.
ls - List all files & folders in Box root directory.
ls [parent_folder_id] - List all files & folders in the parent folder.