GoodData as Filesystem (using FUSE)
For more information about GoodData Filesystem Structure see detailed documentation - root.
This is not official GoodData project neither is supported and/or recommended for production use. You have been warned.
- Binary size - 424 KB
- Real Memory Size - 5.3 MB
- Shared Memory Size - 228 KB
- Private Memory Size - 3.6 MB
Command
tree gd
...
15 directories, 49 files
Test account has access to 14 projects
otool -L ./target/debug/gooddata-fs
./target/debug/gooddata-fs:
/usr/local/lib/libosxfuse_i64.2.dylib (compatibility version 10.0.0, current version 10.3.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
/usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
Thanks to Rust language features gooddata-fs is immune to:
- Stack Overflow - occurs when a program writes to a memory address on the program's call stack outside of the intended data structure, which is usually a fixed-length buffer.
- Heap Overflow - type of buffer overflow that occurs in the heap data area.
- Integer Overflow - occurs when an arithmetic operation attempts to create a numeric value that is too large to be represented within the available storage space.
- Dangling Pointers - special cases of memory safety violations.
- Zero-cost abstractions
- Move semantics
- Guaranteed memory safety
- Threads without data races
- Trait-based generics
- Pattern matching
- Type inference
- Minimal runtime
Optional
Optional
git clone https://github.com/korczis/gooddata-fs
cd gooddata-fs
cargo build
cargo install
$ ./bin/gooddata-fs --help
GoodData as Filesystem 0.0.5
USAGE:
gooddata-fs [FLAGS] [OPTIONS] <username> <password> <mountpoint>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --cache-size <cache-size> LRU Cache Size [default: 32768]
-s, --server <server> Server to use [default: https://secure.gooddata.com]
-t, --token <token> Token for creating of projects
ARGS:
<username> GoodData Username
<password> GoodData Password
<mountpoint> Mount Point
# ./target/debug/gooddata-fs <USERNAME> <PASSWORD> <MOUNTPOINT>
RUST_BACKTRACE=1 RUST_LOG=debug ./target/debug/gooddata-fs [email protected] secretpassword /Users/joe.doe/gd
# gooddata-fs <USERNAME> <PASSWORD> <MOUNTPOINT>
RUST_BACKTRACE=1 RUST_LOG=debug gooddata-fs [email protected] secretpassword /Users/joe.doe/gd
.
├── projects
│ ├── $ocka
│ ├── Boot Camp 3 Exercises 01
│ ├── Date Dictionary
│ ├── GDC Git 0.2
│ ├── GoodDuty & Calendars
│ ├── GoodStatistics Demo
│ ├── MAQL Boot Camp 01
│ ├── MS ETL 3.0
│ ├── Ruby downloaders
│ └── Training March
└── user.json
Make the parent mount point 'shared'. For example, if the gooddata mountpoint
is /mnt/gd-fs, do:
sudo mount --make-shared $(df --output=target /mnt/gd-fs | tail -n1)
cd scripts/docker
./build-local.sh
Make sure you have openssl installed and linked.
brew install openssl
brew link --force openssl
cargo install racer
cargo install rustfmt
Show tree
tree -as gd/
Print all .json files
find gd/ -name '*.json' -exec cat {} \; | cat