{"id":17133986,"url":"https://github.com/shkm/frecli","last_synced_at":"2025-07-11T00:04:54.175Z","repository":{"id":56847689,"uuid":"47291533","full_name":"shkm/frecli","owner":"shkm","description":"⏰ A CLI for Freckle in Ruby.","archived":false,"fork":false,"pushed_at":"2022-10-24T12:04:08.000Z","size":108,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-03T12:57:07.317Z","etag":null,"topics":["cli","freckle","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shkm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-02T22:07:32.000Z","updated_at":"2019-09-17T12:38:18.000Z","dependencies_parsed_at":"2022-09-09T09:11:32.027Z","dependency_job_id":null,"html_url":"https://github.com/shkm/frecli","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/shkm/frecli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shkm%2Ffrecli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shkm%2Ffrecli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shkm%2Ffrecli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shkm%2Ffrecli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shkm","download_url":"https://codeload.github.com/shkm/frecli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shkm%2Ffrecli/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264696170,"owners_count":23650933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","freckle","ruby"],"created_at":"2024-10-14T19:43:29.978Z","updated_at":"2025-07-11T00:04:54.153Z","avatar_url":"https://github.com/shkm.png","language":"Ruby","readme":"# FreCLI\nFreckle CLI client in Ruby.\n\n[![Gem Version](https://badge.fury.io/rb/frecli.svg)](https://badge.fury.io/rb/frecli)\n[![Dependency Status](https://gemnasium.com/shkm/frecli.svg)](https://gemnasium.com/shkm/frecli)\n[![Build Status](https://travis-ci.org/shkm/frecli.svg)](https://travis-ci.org/shkm/frecli)\n[![Code Climate](https://codeclimate.com/github/shkm/frecli/badges/gpa.svg)](https://codeclimate.com/github/shkm/frecli)\n[![Test Coverage](https://codeclimate.com/github/shkm/frecli/badges/coverage.svg)](https://codeclimate.com/github/shkm/frecli/coverage)\n\n## What you can do with it right now\n\n- Basic time tracking (start, pause, log)\n\nI'd eventually like FreCLI to be a real alternative UI for interacting with Freckle, but have had to scale it down in the short-term due to time constraints. Currently, I'd like to get basic time tracking and logging nailed, as that's the most interesting functionality to me and those around me.\n\nHaving said that, I do intend to implement considerably more features. Also note that I'm working on the API client behind this, [freckle-api](https://github.com/shkm/freckle-api), as FreCLI is developed.\n\n\n## Commands\n\n### `frecli time project_name`\n\nStarts timing the specified project. Project name can be fuzzy.\n\ne.g., to time a project named FreCLI:\n\n```\nfrecli time frecli\nfrecli time frec\nfrecli time fc\n```\n\n### `frecli status`\n\nDisplays the time on the running timer, if there is one.\n\n### `frecli pause`\n\nPauses the running timer.\n\n### `frecli log [description]`\n\nLogs the current timer, adding a description if one is given.\n\n### `frecli projects`\n\nLists available projects.\n\n\n## TODO\n\n- ~~Project selection by name/alias/fuzzy~~\n- ~~Project list~~\n- Log timers of other projects\n- Caching\n  - ~~Basic caching implementation~~\n  - Cache status\n  - Cache everything (that we can)\n- Reports (e.g. daily, weekly, monthly)\n\n## Extras\nI've included a very simple Alfred workflow in `extras/`. You may need to modify it to point to your frecli bin once imported.\n\nAll it does is allow you to use FreCLI from anywhere, by typing `fr \u003cfrecli args\u003e`. If you want to help with auto-completion or something, feel free to make a PR, but I think we'll need some proper caching in FreCLI first.\n\n## Configuration\n\nThere are a couple of ways to configure FreCLI.\n\n### Global\n\nA 'global' configuration can be achieved through a `~/.frecli` file or directory. If `~/.frecli` is a file, FreCLI will parse it as YAML. If it's a directory, it will parse and merge settings for all files within.\n\n### Cascading\n\nfrecli configuration always cascades down to the current directory. This means that if you have the following directory structure:\n\n```bash\n$HOME/\n|-- .frecli # setting_one: foo, api_key: qwerty1234\n|-- repos/\n   |-- .frecli/\n       |-- settings.yml # setting_one: bar\n       |-- more_settings.yml # setting_two: 2 , api_key: asdf5678\n   |-- project/\n       |-- .frecli # project_setting: my_project\n\n```\n\nand you run FreCLI from `~/repos/project`, your settings will be as follows:\n\n```yml\nsetting_one: bar\nsetting_two: 2\napi_key: asdf5678\nproject_setting: my_project\n```\n\nThis will become rather powerful. For example, if you're working on the same project as a team, settings relevant to the project can be added to the project's repository, and everyone in the team will benefit. Such a setting may be the project's ID (though this is not currently implemented), allowing anyone on the team to clock their time on the relevant project when running FreCLI from that project's directory.\n\n### Settings\n\nThe following are available as settings.\n\n\n#### `api_key` *required*\nYour Freckle API key. You can get this from the [Freckle site](https://letsfreckle.com) under 'Integrations \u0026 apps' -\u003e 'Freckle API'. Just click on 'Settings' next to 'Personal Access Tokens' and create a token for FreCLI.\n\nIf you commit your FreCLI settings — with your dotfiles, for example — you can use a more secure approach:\n\n1. Set it as an environment variable: `export FRECKLE_API_KEY=\"YOURKEY\"` in a file which is in your repo's ignore list.\n2. Set it in a YAML file such as `~/.frecli/secrets.yml'`and add it to your repo's ignore list.\n\nNote that for security, you can also set this as an environment variable, which is recommended. Simply add the following to your environment:\n\n```\nexport FRECKLE_API_KEY=\"YOURKEY\"\n```\n\nI prefer to put sensitive env variables in `~/.secrets`, with the following in my ~/.profile:\n```\nif [ -f \"$HOME/.secrets\" ]; then\n  source $HOME/.secrets\nfi\n\n```\n\n#### `cache_path` *optional* (`'~/.frecli_cache'`)\nThe path to send cache. This will contain some serialized (JSON) FreckleApi stuff.\n\n#### `cache_ttl` *optional* (`1440`)\nThe number of minutes to wait before forcing a refresh on a cached file.\n\n## Thanks\n- My work, [Lico Innovations](http://lico.nl/) for using Freckle and employing the coolest kids in town (I'm the exception).\n- The awesome Freckle developers — Thomas Cannon in particular — who shared interest in this project and even gave me a free account for testing!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshkm%2Ffrecli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshkm%2Ffrecli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshkm%2Ffrecli/lists"}