Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
f4a63d2
Refactor Workato configuration handling and update related tests
j-madrone Sep 24, 2025
eaf264d
fix formatting
j-madrone Sep 24, 2025
5218113
pre-commit client generation
j-madrone Sep 24, 2025
b63ac2c
always run generate client
j-madrone Sep 24, 2025
05cb363
remove debug statements
j-madrone Sep 24, 2025
d66e338
Enhance GitHub Actions workflow and refactor API client configuration
j-madrone Sep 24, 2025
751ebea
refactor
j-madrone Sep 25, 2025
21ab938
refactor
j-madrone Sep 25, 2025
725c3d5
Refactor profile management and enhance error handling
j-madrone Sep 25, 2025
80fcde1
Refactor CLI commands and enhance initialization process
j-madrone Sep 26, 2025
637039f
Refactor tests for improved type hinting and mock usage
j-madrone Sep 26, 2025
07f2ed0
update ruff version
j-madrone Sep 26, 2025
ae390ca
fix line length warnings
j-madrone Sep 26, 2025
f77aeb5
exclude generated client
j-madrone Sep 26, 2025
f9757a3
update CI
j-madrone Sep 26, 2025
127ef63
update hooks
j-madrone Sep 26, 2025
3442eef
fix ruff checks
j-madrone Sep 26, 2025
6da9b34
Update linting configuration and ignore patterns
j-madrone Sep 26, 2025
bdba2f6
Refactor CLI structure and remove deprecated files
j-madrone Sep 26, 2025
f7e7f2f
Remove unit tests for the push command module
j-madrone Sep 26, 2025
06163d5
Enhance non-interactive mode validation and project listing functiona…
j-madrone Sep 26, 2025
1b4fae2
update test
j-madrone Sep 26, 2025
6c7442b
Update JSON output formatting in list_profiles command
j-madrone Sep 26, 2025
486b2b4
Refactor non-interactive mode validation in ConfigManager
j-madrone Sep 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install uv
uses: astral-sh/setup-uv@v3

- name: Set up Python
run: uv python install 3.11
- name: Set up Python
run: uv python install 3.11

- name: Install dependencies
run: uv sync --group dev
- name: Install dependencies
run: uv sync --group dev

- name: Run ruff check
run: uv run ruff check src/ tests/
- name: Run ruff check
run: uv run ruff check src/ tests/

- name: Run ruff format check
run: uv run ruff format --check src/ tests/
- name: Run ruff format check
run: uv run ruff format --check src/ tests/

- name: Run mypy
run: uv run mypy src/ tests/
- name: Run mypy
run: uv run mypy src/ tests/
30 changes: 26 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
pull_request:
branches: [main]

permissions:
contents: read
pull-requests: write

jobs:
test:
runs-on: ubuntu-latest
Expand All @@ -19,8 +23,26 @@ jobs:
- name: Install dependencies
run: uv sync --group dev

- name: Run tests
run: uv run pytest tests/ -v
- name: Run tests with coverage
run: uv run coverage run -m pytest tests/ -v

- name: Generate coverage report
run: |
uv run coverage report --format=markdown > coverage.md
uv run coverage report --fail-under=85
uv run coverage xml

- name: Check coverage
run: uv run coverage run -m pytest tests/ && uv run coverage report --fail-under=85
- name: Add coverage comment to PR
uses: MishaKav/pytest-coverage-comment@main
if: github.event_name == 'pull_request'
with:
pytest-xml-coverage-path: ./coverage.xml
coverage-path-prefix: src/
title: Coverage Report
badge-title: Coverage
hide-badge: false
hide-report: false
create-new-comment: false
hide-comment: false
report-only-changed-files: false
remove-link-from-badge: false
7 changes: 3 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,10 @@ target/

.DS_Store
.claude/
.workato/
.workatoenv
.vscode/
.mypy_cache
.ruff_cache

projects/*/workato/
projects/
workato/

src/workato_platform/_version.py
11 changes: 10 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ repos:
rev: v0.13.0
hooks:
- id: ruff
args: [--fix]
exclude: ^(client/|src/workato_platform/client/)
- id: ruff-format
exclude: ^(client/|src/workato_platform/client/)
Expand Down Expand Up @@ -51,3 +50,13 @@ repos:
hooks:
- id: pip-audit
args: [--format=json]

# Local hooks for project-specific tasks
- repo: local
hooks:
- id: generate-client
name: Generate OpenAPI client
entry: make generate-client
language: system
always_run: true
pass_filenames: false
2 changes: 1 addition & 1 deletion docs/COMMAND_REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@ workato connections get-oauth-url --id 789
- Valid Workato account and API token
- Network access to Workato API endpoints

For setup and installation issues, see [DEVELOPER_GUIDE.md](DEVELOPER_GUIDE.md).
For setup and installation issues, see [DEVELOPER_GUIDE.md](DEVELOPER_GUIDE.md).
2 changes: 1 addition & 1 deletion docs/DEVELOPER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,4 @@ python -m pytest # Run tests
flake8 src/workato_platform/ # Check code style
```

These commands are for CLI maintainers and contributors, not for developers using the CLI to build Workato integrations.
These commands are for CLI maintainers and contributors, not for developers using the CLI to build Workato integrations.
2 changes: 1 addition & 1 deletion docs/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@

---

**Need help?** Start with [QUICK_START.md](QUICK_START.md) and refer to other guides as needed.
**Need help?** Start with [QUICK_START.md](QUICK_START.md) and refer to other guides as needed.
4 changes: 2 additions & 2 deletions docs/QUICK_START.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ workato --help
# List your recipes
workato recipes list

# List your connections
# List your connections
workato connections list

# Check project status
Expand All @@ -81,4 +81,4 @@ workato push
workato pull
```

You're ready to go!
You're ready to go!
2 changes: 1 addition & 1 deletion docs/USE_CASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,4 +203,4 @@ Perfect for:
- **Developers**: Local-first development with validation and testing
- **Teams**: Collaborative workflows with version control integration
- **Enterprises**: Scalable automation with governance and monitoring
- **AI Agents**: Automated assistance with recipe development and troubleshooting
- **AI Agents**: Automated assistance with recipe development and troubleshooting
34 changes: 17 additions & 17 deletions docs/examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@ All examples are now **CLI-compatible** and ready for deployment. Each recipe fo
### Basic Patterns

### [basic-sync-recipe.json](basic-sync-recipe.json)
**Pattern:** Real-time data synchronization
**Use Case:** Sync Salesforce contacts to database
**Pattern:** Real-time data synchronization
**Use Case:** Sync Salesforce contacts to database
**Key Features:**
- Object trigger (new/updated records)
- Database upsert operation
- Field mapping and transformation

### [webhook-api-recipe.json](webhook-api-recipe.json)
**Pattern:** Webhook processing with API calls
**Use Case:** Process incoming orders and notify external systems
**Pattern:** Webhook processing with API calls
**Use Case:** Process incoming orders and notify external systems
**Key Features:**
- Webhook trigger
- HTTP API calls with authentication
- Email notifications

### [batch-processing-recipe.json](batch-processing-recipe.json)
**Pattern:** Scheduled batch processing
**Use Case:** Daily customer data sync with error handling
**Pattern:** Scheduled batch processing
**Use Case:** Daily customer data sync with error handling
**Key Features:**
- Scheduled trigger
- Batch processing with loops
Expand All @@ -35,44 +35,44 @@ All examples are now **CLI-compatible** and ready for deployment. Each recipe fo
### Advanced Patterns

### [advanced-data-transformation-recipe.json](advanced-data-transformation-recipe.json)
**Pattern:** Complex data transformation and cleansing
**Use Case:** Transform and enrich Salesforce account data with quality scoring
**Pattern:** Complex data transformation and cleansing
**Use Case:** Transform and enrich Salesforce account data with quality scoring
**Key Features:**
- Advanced field transformations (phone formatting, address parsing)
- Data quality scoring and conditional processing
- Revenue/employee tier categorization
- Dual-path processing (high quality vs issues)

### [multi-application-workflow-recipe.json](multi-application-workflow-recipe.json)
**Pattern:** Multi-system workflow orchestration
**Use Case:** Support ticket workflow from Salesforce to Slack to Jira
**Pattern:** Multi-system workflow orchestration
**Use Case:** Support ticket workflow from Salesforce to Slack to Jira
**Key Features:**
- Cross-platform workflow (Salesforce → Slack → Jira → Email)
- Priority-based conditional routing
- Enterprise account escalation logic
- Automatic ticket creation and linking

### [file-processing-recipe.json](file-processing-recipe.json)
**Pattern:** File processing with validation pipeline
**Use Case:** Process CSV files from SFTP with comprehensive validation
**Pattern:** File processing with validation pipeline
**Use Case:** Process CSV files from SFTP with comprehensive validation
**Key Features:**
- SFTP file monitoring and processing
- Row-by-row data validation and cleansing
- File archiving and error reporting
- Size limits and processing controls

### [real-time-bidirectional-sync-recipe.json](real-time-bidirectional-sync-recipe.json)
**Pattern:** Bidirectional synchronization with conflict resolution
**Use Case:** Real-time sync between Salesforce and HubSpot contacts
**Pattern:** Bidirectional synchronization with conflict resolution
**Use Case:** Real-time sync between Salesforce and HubSpot contacts
**Key Features:**
- Sync loop prevention and timestamp comparison
- Conflict detection and automatic resolution
- Orphaned record linking and duplicate handling
- Manual intervention workflows for complex conflicts

### [api-first-integration-recipe.json](api-first-integration-recipe.json)
**Pattern:** Enterprise API integration with resilience patterns
**Use Case:** Paginated API consumption with rate limiting and circuit breakers
**Pattern:** Enterprise API integration with resilience patterns
**Use Case:** Paginated API consumption with rate limiting and circuit breakers
**Key Features:**
- Pagination handling with state management
- Rate limiting compliance and backoff strategies
Expand Down Expand Up @@ -195,4 +195,4 @@ Use proper CLI data pill syntax:

- See [COMMAND_REFERENCE.md](../COMMAND_REFERENCE.md) for all CLI commands
- See [USE_CASES.md](../USE_CASES.md) for more complex scenarios
- Visit [Workato Docs](https://docs.workato.com) for complete recipe reference
- Visit [Workato Docs](https://docs.workato.com) for complete recipe reference
2 changes: 1 addition & 1 deletion docs/examples/advanced-data-transformation-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,4 @@
}
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/api-first-integration-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -599,4 +599,4 @@
}
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/basic-sync-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,4 @@
}
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/batch-processing-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,4 @@
"account_id": null
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/file-processing-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -345,4 +345,4 @@
}
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/multi-application-workflow-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -165,4 +165,4 @@
"account_id": null
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/real-time-bidirectional-sync-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -595,4 +595,4 @@
}
}
]
}
}
2 changes: 1 addition & 1 deletion docs/examples/webhook-api-recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,4 @@
"account_id": null
}
]
}
}
13 changes: 10 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ dependencies = [
"cbor2>=5.7.0",
"certifi>=2025.8.3",
"keyring>=25.6.0",
"ruff==0.13.0",
]

[project.optional-dependencies]
Expand Down Expand Up @@ -98,8 +99,7 @@ exclude = [
"dist",
"node_modules",
"venv",
"client", # Exclude generated API client
"src/workato_platform/_version.py", # Exclude generated version file
"src/workato_platform/client/",
]

[tool.ruff.lint]
Expand All @@ -122,6 +122,7 @@ ignore = [

[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["B011", "S101", "S105", "S106"]
"src/workato_platform/_version.py" = ["ALL"]

# Ruff isort configuration
[tool.ruff.lint.isort]
Expand All @@ -132,12 +133,16 @@ known-first-party = ["workato_platform"]
known-third-party = ["workato_api"]
section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]

# Ruff formatter (replaces Black)
# Ruff formatter
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
exclude = [
"src/workato_platform/_version.py",
"src/workato_platform/client/"
]

# MyPy configuration
[tool.mypy]
Expand Down Expand Up @@ -201,6 +206,7 @@ source = ["src/workato_platform"]
omit = [
"tests/*",
"src/workato_platform/client/*",
"src/workato_platform/_version.py",
]

[tool.coverage.report]
Expand Down Expand Up @@ -229,6 +235,7 @@ dev = [
"build>=1.3.0",
"hatch-vcs>=0.5.0",
"mypy>=1.17.1",
"openapi-generator-cli>=7.15.0",
"pip-audit>=2.9.0",
"pre-commit>=4.3.0",
"pytest>=7.0.0",
Expand Down
Loading