first-run - Check if it's the first time the process is run

  •        34

Can be used to greet the user the first time they use your CLI app, show usage tip, initialize something, etc.The name used to identify it.


configstore : ^2.0.0
read-pkg-up : ^1.0.1



Related Projects

Supervisor - A Process Control System

  •    Python

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems. It shares some of the same goals of programs like launchd, daemontools, and runit. Unlike some of these programs, it is not meant to be run as a substitute for init as “process id 1”. Instead it is meant to be used to control processes related to a project or a customer, and is meant to start like any other program at boot time.

pg_cron - Run periodic jobs in PostgreSQL

  •    C

pg_cron can run multiple jobs in parallel, but it runs at most one instance of a job at a time. If a second run is supposed to start before the first one finishes, then the second run is queued and started as soon as the first run completes. An easy way to create a cron schedule is:

npm-windows-upgrade - :rocket: Upgrade npm on Windows

  •    Javascript

Upgrading npm on Windows requires manual steps to ensure that PowerShell/CMD find the new version of npm. This is a small tool made with ❤️ for npm and Node, reducing the process to a simple command. First, ensure that you can execute scripts on your system by running the following command from an elevated PowerShell. To run PowerShell as Administrator, click Start, search for PowerShell, right-click PowerShell and select Run as Administrator.

dumb-init - A minimal init system for Linux containers

  •    Python

dumb-init is a simple process supervisor and init system designed to run as PID 1 inside minimal container environments (such as Docker). It is deployed as a small, statically-linked binary written in C.Lightweight containers have popularized the idea of running a single process or service without normal init systems like systemd or sysvinit. However, omitting an init system often leads to incorrect handling of processes and signals, and can result in problems such as containers which can't be gracefully stopped, or leaking containers which should have been destroyed.

iD - The easy-to-use OpenStreetMap editor in JavaScript.

  •    Javascript

Note: Windows users should run these steps in a shell started with "Run as administrator". This is only necessary the first time so that the build process can create symbolic links. For guidance on building a packaged version, running tests, and contributing to development, see

android-yolo - Real-time object detection on Android using the YOLO network with TensorFlow

  •    C++

android-yolo is the first implementation of YOLO for TensorFlow on an Android device. It is compatible with Android Studio and usable out of the box. It can detect the 20 classes of objects in the Pascal VOC dataset: aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, dining table, dog, horse, motorbike, person, potted plant, sheep, sofa, train and tv/monitor. The network only outputs one predicted bounding box at a time for now. The code can and will be extended in the future to output several predictions. To use this demo first clone the repository. Download the TensorFlow YOLO model and put it in android-yolo/app/src/main/assets. Then open the project on Android Studio. Once the project is open you can run the project on your Android device using the Run 'app' command and selecting your device.

monod - :notebook: Our cool, secure, and offline-first Markdown editor.

  •    Javascript

Documentation can be found in the doc/ directory. We use this Dockerfile to run Monod in production (which runs npm run start from the Monod root directory).

crfs - CRFS: Container Registry Filesystem

  •    Go

CRFS is a read-only FUSE filesystem that lets you mount a container image, served directly from a container registry (such as, without pulling it all locally first. Go's continuous build system tests Go on many operating systems and architectures, using a mix of containers (mostly for Linux) and VMs (for other operating systems). We prioritize fast builds, targetting 5 minute turnaround for pre-submit tests when testing new changes. For isolation and other reasons, we run all our containers in a single-use fresh VMs. Generally our containers do start quickly, but some of our containers are very large and take a long time to start. To work around that, we've automated the creation of VM images where our heavy containers are pre-pulled. This is all a silly workaround. It'd be much better if we could just read the bytes over the network from the right place, without the all the hoops.

coffeescript-koans - Koans: learn CoffeeScript by doing it

  •    CoffeeScript

The goal of the CoffeeScript koans is to teach you CoffeeScript programming through actually doing it, in a test-first fashion. When you first run the Koans, you'll be presented with a run-time error and a stack trace indicating where the error occurred. Your goal is to make the error go away. As you fix each error, you should learn something about the CoffeeScript language and functional programming in general.

Broadway - A JavaScript H.264 decoder.

  •    C

A JavaScript H.264 decoder. The video player first needs to download the entire video before it can start playing, thus appearing to be a bit slow at first, so have patience. You can start the video by clicking on each player. The top left player runs on the main thread, the remaining players run in background worker threads.

InjectionIII - Re-write of Injection for Xcode in (mostly) Swift4

  •    Objective-C

This start-over implementation on Injection for Xcode has been built into an app: included in the repo which runs in the status bar. Code injection allows you to update the implementation of methods of a class incrementally in the iOS simulator without having to rebuild or restart your application saving developer time. You can avoid the complications of code signing by using the pre-built binary which is available to download here. For some reason you may need to take the app out of qurantine manually or it will report it as damaged when you run it: xattr -d ~/Downloads/ To use, copy/link it to /Applications and run the app. Injection also expects to find your current Xcode at path /Appplications/ Injection no longer requires you to change your project as for iOS is always available if you use the "Start Injection" menu (or type control-=) each time you start your app. Once injection is connected, a file watcher is started in the InjectionIII app and whenever you save a Swift or Objective-C source the target app is messaged to update the implementation. The file watcher can be disabled & enabled while the app is running using the status bar menu. If you inject a subclass of XCTest it will try running that individual test inside your application. When you run your application without rebuilding (^⌘R), recent injections will be re-applied.

Process Launcher


Simple software to start applications with some options. Like starting after timeout or after other process will be detected.

x11docker - Run GUI applications and desktops in docker. Focus on security.

  •    Shell

Graphical applications and desktops in docker are similar in usage to a Virtual Machine. They are isolated from host in several ways. It is possible to run applications that would not run on host due to missing dependencies. For example, you can run latest development versions or outdated versions of applications, or even multiple versions at the same time. Practical differences to a VM: Docker containers need much less resources. x11docker discardes containers after use. Persistant data and configuration storage is done with shared folders. Persistant container system changes can be done in Dockerfile. System changes in running containers are discarded after use.

einhorn - Einhorn: the language-independent shared socket manager

  •    Ruby

Let's say you have a server process which processes one request at a time. Your site is becoming increasingly popular, and this one process is no longer able to handle all of your inbound connections. However, you notice that your box's load number is low.So you start thinking about how to handle more requests. You could rewrite your server to use threads, but threads are a pain to program against (and maybe you're writing in Python or Ruby where you don't have true threads anyway). You could rewrite your server to be event-driven, but that'd require a ton of effort, and it wouldn't help you go beyond one core. So instead, you decide to just run multiple copies of your server process.

gitwatch - Watch a git repository for changes

  •    Shell

gitwatch lets you watch a git repository for changes and run a custom command per change. I wrote this to keep track of certain Cyanogenmod features. gitwatch runs grep ... once for each new change since the last time it was run. If it's the first time, it will only clone the repo without running the command. The command is fed the output of git diff. $GW_TO is the commit that introduced the change. Some other environmental variables are also set (see the comment on top of the script).

WinDynamicDesktop - Port of macOS Mojave Dynamic Desktop feature to Windows 10

  •    CSharp

The first time you run WinDynamicDesktop, it will automatically download the macOS Mojave wallpapers from here and here and extract them to your disk. I have not included the files directly in this repository for copyright reasons. If you want to select a different set of images, see the section below for how to do so. You will also need to input your location when running the program for the first time. This location is not used for any purpose other than to determine the times of sunrise and sunset where you live.

zgen - A lightweight and simple plugin manager for ZSH

  •    Shell

A lightweight plugin manager for Zsh inspired by Antigen. Keep your .zshrc clean and simple. Zgen provides you a few simple commands for managing plugins. It installs your plugins and generates a static init script that will source them for you every time you run the shell. We do this to save some startup time by not having to execute time consuming logic (plugin checking, updates, etc). This means that you have to manually check for updates (zgen update) and reset the init script (zgen reset) whenever you add or remove plugins.

Tennis-Refactoring-Kata - Starting code for a Refactoring Code Kata on the Tennis rules

  •    ABAP

Imagine you work for a consultancy company, and one of your colleagues has been doing some work for the Tennis Society. The contract is for 10 hours billable work, and your colleague has spent 8.5 hours working on it. Unfortunately he has now fallen ill. He says he has completed the work, and the tests all pass. Your boss has asked you to take over from him. She wants you to spend an hour or so on the code so she can bill the client for the full 10 hours. She instructs you to tidy up the code a little and perhaps make some notes so you can give your colleague some feedback on his chosen design. You should also prepare to talk to your boss about the value of this refactoring work, over and above the extra billable hours. There are three versions of this refactoring kata, each with their own design smells and challenges. I suggest you start with the first one, with the class "TennisGame1". The test suite provided is fairly comprehensive, and fast to run. You should not need to change the tests, only run them often as you refactor.

LBTAComponents - Lets Build That App Components - Useful components to quickly build out apps

  •    Swift

LBTAComponents is a very simple library of components I use to build out production applications. The ultimate goal of open sourcing this chunk of code is to speed up the teaching and recording process for all the tutorials on my YouTube channel LetsBuildThatApp. To run the example project, clone the repo, and run pod install from the Example directory first.

DBDebugToolkit - Set of easy to use debugging tools for iOS developers & QA engineers.

  •    Objective-C

DBDebugToolkit is a debugging library written in Objective-C. It is meant to provide as many easily accessible tools as possible while keeping the integration process seamless. To run the example project, clone the repo, and run pod install from the Example directory first. The example project is written in Objective-C. The code examples in this README are written in Swift 3.0.