npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@mariozechner/gccli

v0.1.2

Published

Minimal Google Calendar CLI

Downloads

299

Readme

gccli

Minimal Google Calendar CLI for listing calendars, managing events, and checking availability.

Install

npm install -g @mariozechner/gccli

Setup

Before adding an account, you need OAuth2 credentials from Google Cloud Console:

  1. Create a new project (or select existing)
  2. Enable the Google Calendar API
  3. Set app name in OAuth branding
  4. Add test users (all Gmail addresses you want to use with gccli)
  5. Create OAuth client:
    • Click "Create Client"
    • Application type: "Desktop app"
    • Download the JSON file

Then:

gccli accounts credentials ~/path/to/credentials.json
gccli accounts add [email protected]

Usage

gccli accounts <action>                Account management
gccli <email> <command> [options]      Calendar operations

Commands

accounts

gccli accounts credentials <file.json>   # Set OAuth credentials (once)
gccli accounts list                      # List configured accounts
gccli accounts add <email>               # Add account (opens browser)
gccli accounts add <email> --manual      # Add account (browserless, paste redirect URL)
gccli accounts remove <email>            # Remove account

calendars

List all calendars for an account.

gccli <email> calendars

Returns: ID, name, access role.

events

List events from a calendar.

gccli <email> events <calendarId> [options]

Options:

  • --from <datetime> - Start time (ISO 8601, default: now)
  • --to <datetime> - End time (ISO 8601, default: 1 week from now)
  • --max <n> - Max results (default: 10)
  • --page <token> - Page token for pagination
  • --query <q> - Free text search

Examples:

gccli [email protected] events primary
gccli [email protected] events primary --from 2024-01-01T00:00:00Z --max 50
gccli [email protected] events primary --query "meeting"

event

Get details for a specific event.

gccli <email> event <calendarId> <eventId>

create

Create a new event.

gccli <email> create <calendarId> --summary <s> --start <dt> --end <dt> [options]

Options:

  • --summary <s> - Event title (required)
  • --start <datetime> - Start time (required, ISO 8601)
  • --end <datetime> - End time (required, ISO 8601)
  • --description <d> - Event description
  • --location <l> - Event location
  • --attendees <emails> - Attendees (comma-separated)
  • --all-day - Create all-day event (use YYYY-MM-DD for start/end)

Examples:

gccli [email protected] create primary --summary "Meeting" --start 2024-01-15T10:00:00 --end 2024-01-15T11:00:00
gccli [email protected] create primary --summary "Vacation" --start 2024-01-20 --end 2024-01-25 --all-day
gccli [email protected] create primary --summary "Team Sync" --start 2024-01-15T14:00:00 --end 2024-01-15T15:00:00 --attendees [email protected],[email protected]

update

Update an existing event.

gccli <email> update <calendarId> <eventId> [options]

Options: same as create (all optional).

Example:

gccli [email protected] update primary abc123 --summary "Updated Meeting" --location "Room 2"

delete

Delete an event.

gccli <email> delete <calendarId> <eventId>

freebusy

Check free/busy status for calendars.

gccli <email> freebusy <calendarIds> --from <dt> --to <dt>

Calendar IDs are comma-separated.

Example:

gccli [email protected] freebusy primary,[email protected] --from 2024-01-15T00:00:00Z --to 2024-01-16T00:00:00Z

acl

List access control rules for a calendar.

gccli <email> acl <calendarId>

Returns: scope type, scope value, role.

Example:

gccli [email protected] acl primary

Data Storage

All data is stored in ~/.gccli/:

  • credentials.json - OAuth client credentials
  • accounts.json - Account tokens

Development

npm install
npm run build
npm run check

Publishing

# Update version in package.json and CHANGELOG.md
npm run build
npm publish --access public
git tag v<version>
git push --tags

License

MIT