Harvest CLI is a command-line interface tool designed to interact with the Harvest API, providing functionalities to manage and automate various tasks related to time tracking and invoicing.
- Authorization with the Harvest API.
- Configuration management for API keys and user settings.
- Command-line operations to interact with Harvest data.
- Utility functions for common operations.
harvest-cli-main/
│
├── .gitignore
├── README.md
├── authorization.py
├── cli.py
├── config.py
├── harvest_client.py
├── setup.py
├── util.py
└── .vscode/
└── launch.json
.gitignore
: Specifies files and directories to be ignored by Git.README.md
: Provides information about the project.authorization.py
: Handles authorization with the Harvest API.cli.py
: Contains the main command-line interface logic.config.py
: Manages configuration settings.harvest_client.py
: Implements the client for interacting with the Harvest API.setup.py
: Script for setting up the project.util.py
: Contains utility functions used throughout the project..vscode/launch.json
: Configuration file for VSCode debugging.
- Python 3.7+
- An active Harvest account with API access.
- Clone the repository:
git clone https://github.com/yourusername/harvest-cli.git
cd harvest-cli
- Install the required dependencies:
pip install .
Create a configuration file to store your Harvest API key and other settings.
You can use the config.py
module to manage your configurations.
The main entry point for using the CLI is the cli.py
file. You can run it
directly from the command line:
harvest init
harvest track
init
: Set up authorization with the Harvest API and select a project for the active repo.track
: Track time against the project.
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
poetry --version
pip install pytest-watch
[System.Environment]::SetEnvironmentVariable("Path", $env:Path + $env:APPDATA\Python\Scripts", [System.EnvironmentVariableTarget]::User)
ptw
This project is licensed under the MIT License. See the LICENSE file for details.
For questions or suggestions, please open an issue on GitHub or contact the project maintainer.