{
  "name": "gource",
  "description": "Gource is an OpenGL-based 3D visualisation tool for source control repositories",
  "options": [
    {
      "names": [
        "-h",
        "--help"
      ],
      "description": "Help ('-H' for extended help)"
    },
    {
      "names": [
        "--viewport"
      ],
      "description": "Set the viewport size. If -f is also supplied, will attempt to set the video mode to this also. Add `!` to make the window non-resizable",
      "args": [
        {
          "name": "size",
          "description": "The size of the viewport (e.g. WIDTHxHEIGHT)",
          "suggestions": [
            "3840x2160",
            "2560x1440",
            "1920x1080",
            "1280x720",
            "800x600"
          ]
        }
      ]
    },
    {
      "names": [
        "-f"
      ],
      "description": "Fullscreen"
    },
    {
      "names": [
        "--screen"
      ],
      "description": "Set the number of the screen to display on",
      "args": [
        {
          "name": "screen",
          "description": "The number of the screen to display on",
          "generators": [
            {
              "script": [
                "system_profiler",
                "SPDisplaysDataType",
                "-json"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--high-dpi"
      ],
      "description": "Request a high DPI display when creating the window. On some platforms such as MacOS, the window resolution is specified in points instead of pixels. The --high-dpi flag may be required to access some higher resolutions. E.g. requesting a high DPI 800x600 window may produce a window that is 1600x1200 pixels"
    },
    {
      "names": [
        "--window-position"
      ],
      "description": "Initial window position on your desktop which may be made up of multiple monitors. This will override the screen setting so don't specify both",
      "args": [
        {
          "name": "position",
          "description": "The initial window position on your desktop (e.g. XxY)"
        }
      ]
    },
    {
      "names": [
        "--frameless"
      ],
      "description": "Frameless window"
    },
    {
      "names": [
        "--transparent"
      ],
      "description": "Make the background transparent. Only really useful for screenshots"
    },
    {
      "names": [
        "--start-date"
      ],
      "description": "Start with the first entry after the supplied date and optional time. If a time zone offset isn't specified the local time zone is used. Example accepted formats: 'YYYY-MM-DD', 'YYYY-MM-DD hh:mm', 'YYYY-MM-DD hh:mm:ss +tz'",
      "args": [
        {
          "name": "date",
          "description": "The start date and optional time"
        }
      ]
    },
    {
      "names": [
        "--stop-date"
      ],
      "description": "Stop at the last entry prior to the supplied date and optional time. Uses the same format as --start-date",
      "args": [
        {
          "name": "date",
          "description": "The stop date and optional time"
        }
      ]
    },
    {
      "names": [
        "-p",
        "--start-position"
      ],
      "description": "Begin at some position in the log (between 0.0 and 1.0 or 'random')",
      "args": [
        {
          "name": "position",
          "description": "The start position in the log",
          "suggestions": [
            "random",
            "0.0",
            "0.1",
            "0.2",
            "0.3",
            "0.4",
            "0.5",
            "0.6",
            "0.7",
            "0.8",
            "0.9",
            "1.0"
          ]
        }
      ]
    },
    {
      "names": [
        "--stop-position"
      ],
      "description": "Stop (exit) at some position in the log (does not work with STDIN)",
      "args": [
        {
          "name": "position",
          "description": "The stop position in the log",
          "suggestions": [
            "random",
            "0.0",
            "0.1",
            "0.2",
            "0.3",
            "0.4",
            "0.5",
            "0.6",
            "0.7",
            "0.8",
            "0.9",
            "1.0"
          ]
        }
      ]
    },
    {
      "names": [
        "-t",
        "--stop-at-time"
      ],
      "description": "Stop (exit) after a specified number of seconds",
      "args": [
        {
          "name": "seconds",
          "description": "The number of seconds to wait before stopping"
        }
      ]
    },
    {
      "names": [
        "--stop-at-end"
      ],
      "description": "Stop (exit) at the end of the log / stream"
    },
    {
      "names": [
        "--loop"
      ],
      "description": "Loop back to the start of the log when the end is reached"
    },
    {
      "names": [
        "--loop-delay-seconds"
      ],
      "description": "Seconds to delay before looping",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "-a",
        "--auto-skip-seconds"
      ],
      "description": "Automatically skip to next entry if nothing happens for a specified number of seconds",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "-s",
        "--seconds-per-day"
      ],
      "description": "Speed of simulation in seconds per day",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "--realtime"
      ],
      "description": "Realtime playback speed"
    },
    {
      "names": [
        "--no-time-travel"
      ],
      "description": "Use the time of the last commit if the time of a commit is in the past"
    },
    {
      "names": [
        "-c",
        "--time-scale"
      ],
      "description": "Change simulation time scale"
    },
    {
      "names": [
        "-i",
        "--file-idle-time"
      ],
      "description": "Time in seconds files remain idle before they are removed or 0 for no limit"
    },
    {
      "names": [
        "--file-idle-time-at-end"
      ],
      "description": "Time in seconds files remain idle at the end before they are removed",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "-e",
        "--elasticity"
      ],
      "description": "Elasticity of nodes",
      "args": [
        {
          "name": "elasticity",
          "description": "Elasticity of nodes"
        }
      ]
    },
    {
      "names": [
        "-b",
        "--background-colour"
      ],
      "description": "Background colour in hex",
      "args": [
        {
          "name": "colour"
        }
      ]
    },
    {
      "names": [
        "--background-image"
      ],
      "description": "Set a background image",
      "args": [
        {
          "name": "image file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--title"
      ],
      "description": "Set a title",
      "args": [
        {
          "name": "title"
        }
      ]
    },
    {
      "names": [
        "--font-file"
      ],
      "description": "Specify the font. Should work with most font file formats supported by FreeType, such as TTF and OTF, among others",
      "args": [
        {
          "name": "font file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--font-scale"
      ],
      "description": "Scale the size of all fonts",
      "args": [
        {
          "name": "scale",
          "description": "Font scale"
        }
      ]
    },
    {
      "names": [
        "--font-size"
      ],
      "description": "Font size used by the date and title",
      "args": [
        {
          "name": "size",
          "description": "Font size"
        }
      ]
    },
    {
      "names": [
        "--file-font-size"
      ],
      "description": "Font size of filenames",
      "args": [
        {
          "name": "size",
          "description": "Font size"
        }
      ]
    },
    {
      "names": [
        "--dir-font-size"
      ],
      "description": "Font size of directory names",
      "args": [
        {
          "name": "size",
          "description": "Font size"
        }
      ]
    },
    {
      "names": [
        "--user-font-size"
      ],
      "description": "Font size of user names",
      "args": [
        {
          "name": "size",
          "description": "Font size"
        }
      ]
    },
    {
      "names": [
        "--font-colour"
      ],
      "description": "Font colour used by the date and title in hex",
      "args": [
        {
          "name": "colour",
          "description": "Font colour"
        }
      ]
    },
    {
      "names": [
        "--key"
      ],
      "description": "Show file extension key"
    },
    {
      "names": [
        "--logo"
      ],
      "description": "Logo to display in the foreground",
      "args": [
        {
          "name": "image file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--logo-offset"
      ],
      "description": "Offset position of the logo",
      "args": [
        {
          "name": "offset",
          "description": "Logo offset"
        }
      ]
    },
    {
      "names": [
        "--date-format"
      ],
      "description": "Specify display date string (strftime format)",
      "args": [
        {
          "name": "format",
          "description": "Date format"
        }
      ]
    },
    {
      "names": [
        "--log-command"
      ],
      "description": "Show the log command used by gource (git,svn,hg,bzr,cvs2cl)",
      "args": [
        {
          "name": "command",
          "description": "Log command",
          "suggestions": [
            "git",
            "svn",
            "hg",
            "bzr",
            "cvs2cl"
          ]
        }
      ]
    },
    {
      "names": [
        "--log-format"
      ],
      "description": "Specify format of the log being read (git,svn,hg,bzr,cvs2cl,custom). Required when reading from STDIN",
      "args": [
        {
          "name": "format",
          "description": "Log format",
          "suggestions": [
            "git",
            "svn",
            "hg",
            "bzr",
            "cvs2cl",
            "custom"
          ]
        }
      ]
    },
    {
      "names": [
        "--git-branch"
      ],
      "description": "Get the git log of a branch other than the current one",
      "args": [
        {
          "name": "branch"
        }
      ]
    },
    {
      "names": [
        "--follow-user"
      ],
      "description": "Have the camera automatically follow a particular user",
      "args": [
        {
          "name": "username",
          "description": "Name of user to follow"
        }
      ]
    },
    {
      "names": [
        "--highlight-dirs"
      ],
      "description": "Highlight the names of all directories"
    },
    {
      "names": [
        "--highlight-user"
      ],
      "description": "Highlight the names of a particular user",
      "args": [
        {
          "name": "username",
          "description": "Name of user to highlight"
        }
      ]
    },
    {
      "names": [
        "--highlight-users"
      ],
      "description": "Highlight the names of all users"
    },
    {
      "names": [
        "--highlight-colour"
      ],
      "description": "Font colour for highlighted users in hex",
      "args": [
        {
          "name": "colour",
          "description": "Font colour (HEX)"
        }
      ]
    },
    {
      "names": [
        "--selection-colour"
      ],
      "description": "Font colour for selected users and files",
      "args": [
        {
          "name": "colour",
          "description": "Font colour (HEX)"
        }
      ]
    },
    {
      "names": [
        "--filename-colour"
      ],
      "description": "Font colour for filenames",
      "args": [
        {
          "name": "colour",
          "description": "Font colour (HEX)"
        }
      ]
    },
    {
      "names": [
        "--dir-colour"
      ],
      "description": "Font colour for directories",
      "args": [
        {
          "name": "color",
          "description": "Dir colour (HEX)"
        }
      ]
    },
    {
      "names": [
        "--dir-name-depth"
      ],
      "description": "Draw names of directories down to a specific depth in the tree",
      "args": [
        {
          "name": "depth"
        }
      ]
    },
    {
      "names": [
        "--dir-name-position"
      ],
      "description": "Position along edge of the directory name (between 0.1 and 1.0, default is 0.5)",
      "args": [
        {
          "name": "position",
          "suggestions": [
            "0.1",
            "0.2",
            "0.3",
            "0.4",
            "0.5",
            "0.6",
            "0.7",
            "0.8",
            "0.9",
            "1.0"
          ]
        }
      ]
    },
    {
      "names": [
        "--filename-time"
      ],
      "description": "Duration to keep filenames on screen (>= 2.0)",
      "args": [
        {
          "name": "time"
        }
      ]
    },
    {
      "names": [
        "--file-extensions"
      ],
      "description": "Show filename extensions only"
    },
    {
      "names": [
        "--file-extension-fallback"
      ],
      "description": "Use filename as extension if the extension is missing or empty"
    },
    {
      "names": [
        "--file-filter"
      ],
      "description": "Filter out file paths matching the specified regular expression",
      "args": [
        {
          "name": "regex"
        }
      ]
    },
    {
      "names": [
        "--file-show-filter"
      ],
      "description": "Show only file paths matching the specified regular expression",
      "args": [
        {
          "name": "regex"
        }
      ]
    },
    {
      "names": [
        "--user-filter"
      ],
      "description": "Filter usernames matching the specified regular expression",
      "args": [
        {
          "name": "regex"
        }
      ]
    },
    {
      "names": [
        "--user-show-filter"
      ],
      "description": "Show only usernames matching the specified regular expression",
      "args": [
        {
          "name": "regex"
        }
      ]
    },
    {
      "names": [
        "--user-image-dir"
      ],
      "description": "Directory containing .jpg or .png images of users (eg 'Full Name.png') to use as avatars",
      "args": [
        {
          "name": "directory",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--default-user-image"
      ],
      "description": "Path of .jpg to use as the default user image",
      "args": [
        {
          "name": "User image",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--fixed-user-size"
      ],
      "description": "Forces the size of the user image to remain fixed throughout"
    },
    {
      "names": [
        "--colour-images"
      ],
      "description": "Colourize user images"
    },
    {
      "names": [
        "--crop"
      ],
      "description": "Crop view on an axis (vertical,horizontal)",
      "args": [
        {
          "name": "axis"
        }
      ]
    },
    {
      "names": [
        "--padding"
      ],
      "description": "Camera view padding",
      "args": [
        {
          "name": "padding"
        }
      ]
    },
    {
      "names": [
        "--multi-sampling"
      ],
      "description": "Enable multi-sampling"
    },
    {
      "names": [
        "--no-vsync"
      ],
      "description": "Disable vsync"
    },
    {
      "names": [
        "--bloom-multiplier"
      ],
      "description": "Adjust the amount of bloom",
      "args": [
        {
          "name": "multiplier"
        }
      ]
    },
    {
      "names": [
        "--bloom-intensity"
      ],
      "description": "Adjust the intensity of the bloom",
      "args": [
        {
          "name": "intensity"
        }
      ]
    },
    {
      "names": [
        "--max-files"
      ],
      "description": "Set the maximum number of files or 0 for no limit. Excess files will be discarded",
      "args": [
        {
          "name": "number"
        }
      ]
    },
    {
      "names": [
        "--max-file-lag"
      ],
      "description": "Max time files of a commit can take to appear. Use -1 for no limit",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "--max-user-speed"
      ],
      "description": "Max speed users can travel per second",
      "args": [
        {
          "name": "units"
        }
      ]
    },
    {
      "names": [
        "--user-friction"
      ],
      "description": "Time users take to come to a halt",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "--user-scale"
      ],
      "description": "Change scale of user avatars",
      "args": [
        {
          "name": "scale"
        }
      ]
    },
    {
      "names": [
        "--camera-mode"
      ],
      "description": "Camera mode (overview,track)",
      "args": [
        {
          "name": "mode",
          "suggestions": [
            "overview",
            "track"
          ]
        }
      ]
    },
    {
      "names": [
        "--disable-auto-rotate"
      ],
      "description": "Disable automatic camera rotation"
    },
    {
      "names": [
        "--disable-input"
      ],
      "description": "Disable keyboard and mouse input"
    },
    {
      "names": [
        "--hide"
      ],
      "description": "Hide one or more display elements from the list below: bloom - bloom effect date - current date dirnames - names of directories files - file icons filenames - names of files mouse - mouse cursor progress - progress bar widget root - root directory of the tree tree - animated tree structure users - user avatars usernames - names of users",
      "args": [
        {
          "name": "element",
          "description": "Element to hide (Separate multiple elements with commas (eg \"mouse,progress\"))",
          "isVariadic": true,
          "suggestions": [
            "bloom",
            "date",
            "dirnames",
            "files",
            "filenames",
            "mouse",
            "progress",
            "root",
            "tree",
            "users",
            "usernames"
          ]
        }
      ]
    },
    {
      "names": [
        "--hash-seed"
      ],
      "description": "Change the seed of hash function",
      "args": [
        {
          "name": "seed"
        }
      ]
    },
    {
      "names": [
        "--caption-file"
      ],
      "description": "Caption file (see Caption Log Format)",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--caption-size"
      ],
      "description": "Caption size",
      "args": [
        {
          "name": "size"
        }
      ]
    },
    {
      "names": [
        "--caption-colour"
      ],
      "description": "Caption colour in hex",
      "args": [
        {
          "name": "colour",
          "description": "Colour in hex (eg #ff0000)"
        }
      ]
    },
    {
      "names": [
        "--caption-duration"
      ],
      "description": "Caption duration",
      "args": [
        {
          "name": "seconds"
        }
      ]
    },
    {
      "names": [
        "--caption-offset"
      ],
      "description": "Caption horizontal offset (0 to centre captions)",
      "args": [
        {
          "name": "offset"
        }
      ]
    },
    {
      "names": [
        "-o",
        "--output-ppm-stream"
      ],
      "description": "Output a PPM image stream to a file ('-' for STDOUT). This will automatically hide the progress bar initially and enable 'stop-at-end' unless other behaviour is specified",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "-r",
        "--output-framerate"
      ],
      "description": "Framerate of output (25,30,60). Used with --output-ppm-stream",
      "args": [
        {
          "name": "fps",
          "suggestions": [
            "25",
            "30",
            "60",
            "120"
          ]
        }
      ]
    },
    {
      "names": [
        "--output-custom-log"
      ],
      "description": "Output a custom format log file ('-' for STDOUT)",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--load-config"
      ],
      "description": "Load a config file",
      "args": [
        {
          "name": "config file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--save-config"
      ],
      "description": "Save a config file with the current options",
      "args": [
        {
          "name": "config file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--path"
      ],
      "description": "Either a supported version control directory, a pre-generated log file (see log commands or the custom log format), a Gource conf file or '-' to read STDIN",
      "args": [
        {
          "name": "path",
          "template": "filepaths"
        }
      ]
    }
  ],
  "args": [
    {
      "name": "path",
      "description": "A version control directory, a log file or - for STDIN. Leave empty for the current directory.",
      "isOptional": true,
      "template": "filepaths"
    }
  ]
}
