PHPackages                             exed/beanstalk-satis-gen - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. exed/beanstalk-satis-gen

ActiveLibrary

exed/beanstalk-satis-gen
========================

Beanstalk Satis Generator

0.2.1(10y ago)123MITPHPPHP &gt;=5.4.0

Since Apr 19Pushed 10y ago1 watchersCompare

[ Source](https://github.com/sbesselsen/beanstalk-satis-gen)[ Packagist](https://packagist.org/packages/exed/beanstalk-satis-gen)[ RSS](/packages/exed-beanstalk-satis-gen/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (7)Used By (0)

Beanstalk Satis Generator
=========================

[](#beanstalk-satis-generator)

A simple tool that allows you to add repositories to a Satis JSON file by reading repositories from your Beanstalk account and adding all repositories that are Composer packages.

You can use the tool by calling the included PHP classes directly, but the main use case is by building a phar and calling that.

Installation
------------

[](#installation)

To install you can clone or download the repository and build a .phar using [box](http://box-project.org). A box config is present so using `box build` in the root of this project is enough to build the .phar. The .phar will be created in `bin/satis-update.phar`

Usage example
-------------

[](#usage-example)

```
bin/satis-update.phar generate config.json satis.json

```

**config.json:**

```
{
  "subdomain": "demo",     # list repositories on the https://demo.beanstalkapp.com/ account
  "username":  "demouser", # log in with the demouser account
  "token":     "..."       # use this access token
}

```

**satis.json:**

```
{
  "name": "My Package repository",
  "repositories": []
}

```

### Result

[](#result)

This will scan all Git repositories that the specified user can access under the specified account. If the main branch of the repository has a composer.json file in the root, and that composer.json file signals that it should be in satis, then the repository will be added to the satis.json:

```
{"type": "vcs", "url": "the-repository-url"}

```

Only repositories that weren't already present are added, so it's safe to run the script several times. Existing repository definitions will be left alone: the script does not delete or update them.

After the generate command is done the hash of the last changeset will be safed so future parsings won't take as long. When updating an already complete satis.json the update command should be used:

```
bin/satis-update.phar update config.json satis.json

```

This command will read all changesets since the saved hash (parsed\_to in the config.json) and parse these changes to see if a new composer.json has been added or one has been edited to include the required signals.

Package signals
---------------

[](#package-signals)

For a repository to end up in the satis.json the following requirements have to be met:

- A `composer.json` must be present.
- The `name` field in the composer.json must not be empty
- The `type` field is one that absolutely implies a package or a `satis-package` key is present and true in the `extra` field, like this:

    ```
    {
        "extra": {
            "satis-package": true
        }
    }

    ```

Advanced usage
--------------

[](#advanced-usage)

You can add a filter to your `config.json` file:

```
{
  "subdomain": "demo",
  "username":  "demouser",
  "token":     "...",
  "repository_filters": {
    "last_commit_within": "1 week"
  }
}

```

This will only scan repositories that have been committed to within the last week. This is useful for running the script as a cron job, since scanning many repositories for the composer.json file can get a little slow.

### Filters

[](#filters)

The `last_commit_within` is currently the only filter. Its value is evaluated as a strtotime offset from the current time, so all strtotime offsets are valid:

- `"1 month"`
- `"2 hours"`
- etc.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 79.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Total

6

Last Release

3994d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/151181?v=4)[Sebastiaan Besselsen](/maintainers/sbesselsen)[@sbesselsen](https://github.com/sbesselsen)

---

Top Contributors

[![atimmer](https://avatars.githubusercontent.com/u/584693?v=4)](https://github.com/atimmer "atimmer (35 commits)")[![sbesselsen](https://avatars.githubusercontent.com/u/151181?v=4)](https://github.com/sbesselsen "sbesselsen (8 commits)")[![adrenth-mixcom](https://avatars.githubusercontent.com/u/7677777?v=4)](https://github.com/adrenth-mixcom "adrenth-mixcom (1 commits)")

### Embed Badge

![Health badge](/badges/exed-beanstalk-satis-gen/health.svg)

```
[![Health](https://phpackages.com/badges/exed-beanstalk-satis-gen/health.svg)](https://phpackages.com/packages/exed-beanstalk-satis-gen)
```

###  Alternatives

[phpro/soap-client

A general purpose SoapClient library

8885.6M46](/packages/phpro-soap-client)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19562.3M1.3k](/packages/drupal-core)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[laravel/nightwatch

The official Laravel Nightwatch package.

3526.1M13](/packages/laravel-nightwatch)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[guikingone/scheduler-bundle

A Symfony bundle that allows to schedule and create repetitive tasks

114217.4k](/packages/guikingone-scheduler-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
