From 7ab10834767b06e4df87b6ad12729acb9b3b16fd Mon Sep 17 00:00:00 2001 From: Jake Clayton Date: Sun, 25 May 2025 09:06:06 +1000 Subject: [PATCH] feat: initialise Go module and directory structure Closes #1 --- .gitignore | 85 +++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 53 +++++++++++++++++++++++ LICENSE | 21 +++++++++ README.md | 47 +++++++++++++++++++- build/.gitkeep | 0 cmd/aws-local-sync/main.go | 7 +++ docs/.gitkeep | 0 go.mod | 3 ++ internal/config/.gitkeep | 0 internal/providers/.gitkeep | 0 internal/sync/.gitkeep | 0 11 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 build/.gitkeep create mode 100644 cmd/aws-local-sync/main.go create mode 100644 docs/.gitkeep create mode 100644 go.mod create mode 100644 internal/config/.gitkeep create mode 100644 internal/providers/.gitkeep create mode 100644 internal/sync/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..02a0a83 --- /dev/null +++ b/.gitignore @@ -0,0 +1,85 @@ +################# +## Common +################# + +# env files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# Editor/IDE +.idea/ +.vscode/ +.vscode-test + +# AI +.claude/ +CLAUDE.md +.roo/ +.rooignore +.roorules + +# TEMP: Project planning documents +docs/tasks/ + +################# +## GoLang +################# + +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Code coverage profiles and other test artifacts +*.out +coverage.* +*.coverprofile +profile.cov + +# Go workspace file +go.work +go.work.sum + +################# +## Node.js +################# + +# Logs +logs +*.log +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..847478b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contributing to aws-local-sync + +Thanks for your interest in contributing to **aws-local-sync**! This guide outlines the basics for setting up your development environment, understanding the project structure, and contributing effectively. + +## Development Setup + +1. **Clone the repo** + + ```sh + git clone https://github.com/jakec-dev/aws-local-sync.git + cd aws-local-sync + ``` + +2. **Build the CLI** + + ```sh + go build -o bin/aws-local-sync ./cmd/aws-local-sync + ``` + +3. **Run it** + + ```sh + ./bin/aws-local-sync + ``` + +4. **Run tests** + + (Test suite coming soon) + +## Contributing Guidelines + +- Feature requests and bug reports are welcome via GitHub Issues. +- Follow idiomatic Go and ensure your code passes go fmt. +- Use semantic commits (e.g., feat: add support for S3 source). +- Prefer small, focused pull requests with clear descriptions. + +## Project Structure + +```text +cmd/aws-local-sync/ # CLI entry point (main.go) using Cobra +internal/ # Core logic (sync engine, providers, targets) + ├── sync/ # Sync manager and orchestration + ├── providers/ # AWS service-specific data exporters + ├── targets/ # Local import destinations (e.g. Docker, dir) + └── config/ # YAML parsing, validation, and discovery +pkg/ # Optional: shared libraries (exported APIs) +scripts/ # Dev scripts and tooling +testdata/ # Synthetic data for testing +``` + +## Thanks! + +Your contributions help make aws-local-sync better for everyone. Whether it's fixing bugs, suggesting features, or improving docs — you're appreciated. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..15ea7ba --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Jake Clayton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 6d592cf..25f965b 100644 --- a/README.md +++ b/README.md @@ -1 +1,46 @@ -# aws-local-sync \ No newline at end of file +# aws-local-sync + +**aws-local-sync** is a high-performance CLI tool that syncs data from AWS services into your local development environment. It's designed to be **simple**, **fast**, **reliable**, and **developer-friendly**, with support for plugins, caching, and seamless workflow integration. + +Key features: + +- ⚡ Zero-config for common syncs +- 🔁 Reliable with retries, caching, and recovery +- 🔌 Extensible architecture (providers & targets) +- 🧠 Developer-friendly CLI with helpful commands +- 📦 Node.js wrapper for easy cross-platform installs + +> This project is currently in active development. Expect rapid iteration, breaking changes, and new modules as core components are implemented. + +## Getting Started + +### Option 1: Install with Go + +```sh +go install github.com/jakec-dev/aws-local-sync/cmd/aws-local-sync@latest + +# Then use it from anywhere: +aws-local-sync +``` + +### Option 2: Run from source + +```sh +# Clone the repo +git clone https://github.com/jakec-dev/aws-local-sync.git +cd aws-local-sync + +# Build the CLI +go build -o bin/aws-local-sync ./cmd/aws-local-sync + +# Run the CLI +./bin/aws-local-sync +``` + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines. + +## License + +This project is licensed under the [MIT License](LICENSE). diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cmd/aws-local-sync/main.go b/cmd/aws-local-sync/main.go new file mode 100644 index 0000000..e8d84e6 --- /dev/null +++ b/cmd/aws-local-sync/main.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("Placeholder") +} \ No newline at end of file diff --git a/docs/.gitkeep b/docs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1bf9234 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/jakec-dev/aws-local-sync + +go 1.24.3 diff --git a/internal/config/.gitkeep b/internal/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/internal/providers/.gitkeep b/internal/providers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/internal/sync/.gitkeep b/internal/sync/.gitkeep new file mode 100644 index 0000000..e69de29