{"action":"created","comment":{"url":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments/71520260","id":71520260,"diff_hunk":"@@ -0,0 +1,1454 @@\n+# Snapcraft CLI reference\n+\n+## lifecycle and misc\n+\n+### version\n+\n+    $ snapcraft --version\n+    2.12.1\n+\n+### help\n+\n+    $ snapcraft help\n+    Usage:\n+      snapcraft [options] [--enable-geoip --no-parallel-build]\n+      snapcraft [options] init\n+      snapcraft [options] pull [<part> ...]  [--enable-geoip]\n+      snapcraft [options] build [<part> ...] [--no-parallel-build]\n+      snapcraft [options] stage [<part> ...]\n+      snapcraft [options] prime [<part> ...]\n+      snapcraft [options] strip [<part> ...]\n+      snapcraft [options] clean [<part> ...] [--step <step>]\n+      snapcraft [options] snap [<directory> --output <snap-file>]\n+      snapcraft [options] cleanbuild\n+      snapcraft [options] login\n+      snapcraft [options] logout\n+      snapcraft [options] register <snap-name>\n+      snapcraft [options] upload <snap-file>\n+      snapcraft [options] push <snap-file> [--release <channels>]\n+      snapcraft [options] release <snap-name> <revision> <channel>\n+      snapcraft [options] list-plugins\n+      snapcraft [options] tour [<directory>]\n+      snapcraft [options] update\n+      snapcraft [options] define <part-name>\n+      snapcraft [options] search [<query> ...]\n+      snapcraft [options] help (topics | <plugin> | <topic>) [--devel]\n+      snapcraft (-h | --help)\n+\n+\n+    $ snapcraft --help\n+    $ snapcraft -h\n+    snapcraft\n+\n+    Usage:\n+      snapcraft [options] [--enable-geoip --no-parallel-build]\n+      snapcraft [options] init\n+      snapcraft [options] pull [<part> ...]  [--enable-geoip]\n+      snapcraft [options] build [<part> ...] [--no-parallel-build]\n+      snapcraft [options] stage [<part> ...]\n+      snapcraft [options] prime [<part> ...]\n+      snapcraft [options] strip [<part> ...]\n+      snapcraft [options] clean [<part> ...] [--step <step>]\n+      snapcraft [options] snap [<directory> --output <snap-file>]\n+      snapcraft [options] cleanbuild\n+      snapcraft [options] login\n+      snapcraft [options] logout\n+      snapcraft [options] register <snap-name>\n+      snapcraft [options] upload <snap-file>\n+      snapcraft [options] list-plugins\n+      snapcraft [options] tour [<directory>]\n+      snapcraft [options] update\n+      snapcraft [options] define <part-name>\n+      snapcraft [options] search [<query> ...]\n+      snapcraft [options] help (topics | <plugin> | <topic>) [--devel]\n+      snapcraft (-h | --help)\n+      snapcraft --version\n+\n+    Options:\n+      -h --help                             show this help message and exit\n+      -v --version                          show program version and exit\n+      -d --debug                            print debug information while executing\n+                                            (including backtraces)\n+      --target-arch ARCH                    EXPERIMENTAL: sets the target\n+                                            architecture. Very few plugins support\n+                                            this.\n+\n+    Options specific to pulling:\n+      --enable-geoip         enables geoip for the pull step if stage-packages\n+                             are used.\n+\n+    Options specific to building:\n+      --no-parallel-build                   use only a single build job per part\n+                                            (the default number of jobs per part is\n+                                            equal to the number of CPUs)\n+\n+    Options specific to cleaning:\n+      -s <step>, --step <step>              only clean the specified step and those\n+                                            that depend upon it. <step> can be one\n+                                            of: pull, build, stage or strip.\n+\n+    Options specific to snapping:\n+      -o <snap-file>, --output <snap-file>  used in case you want to rename the\n+                                            snap.\n+\n+    The available commands are:\n+      help         Obtain help for a certain plugin or topic\n+      init         Initialize a snapcraft project.\n+      list-plugins List the available plugins that handle different types of part.\n+      login        Authenticate session against Ubuntu One SSO.\n+      logout       Clear session credentials.\n+      register     Register the package name in the store.\n+      tour         Setup the snapcraft examples tour in the specified directory,\n+                   or ./snapcraft-tour/.\n+      upload       Upload a snap to the Ubuntu Store.\n+\n+    The available lifecycle commands are:\n+      clean        Remove content - cleans downloads, builds or install artifacts.\n+      cleanbuild   Create a snap using a clean environment managed by lxd.\n+      pull         Download or retrieve artifacts defined for a part.\n+      build        Build artifacts defined for a part. Build systems capable of\n+                   running parallel build jobs will do so unless\n+                   \"--no-parallel-build\" is specified.\n+      stage        Stage the part's built artifacts into the common staging area.\n+      prime        Final copy and preparation for the snap.\n+      snap         Create a snap.\n+\n+    Parts ecosystem commands\n+      update       Updates the parts listing from the cloud.\n+      define       Shows the definition for the cloud part.\n+      search       Searches the remotes part cache for matching parts.\n+\n+    Calling snapcraft without a COMMAND will default to 'snap'\n+\n+    The cleanbuild command requires a properly setup lxd environment that\n+    can connect to external networks. Refer to the \"Ubuntu Desktop and\n+    Ubuntu Server\" section on\n+    https://linuxcontainers.org/lxd/getting-started-cli\n+    to get started.\n+\n+    For more help, visit the documentation:\n+    http://developer.ubuntu.com/snappy/snapcraft\n+\n+\n+    $ man snapcraft\n+    No manual entry for snapcraft\n+    See 'man 7 undocumented' for help when manual pages are not available.\n+\n+\n+    $ snapcraft help topics\n+    plugins\n+    sources\n+\n+\n+    $ snapcraft help plugins\n+    Snapcraft plugins drive different build systems\n+\n+    Each part has a build system . Most parts are built from source using one of\n+    a range of build systems such as CMake or Scons. Some parts are pre-built\n+    and just copied into place, for example parts that reuse existing binary\n+    packages.\n+\n+    You tell snapcraft which build system it must drive by specifying the\n+    snapcraft plugin for that part. Every part must specify a plugin explicitly\n+    (when you see a part that does not specify a plugin, thats because the\n+    actual part definition is in the cloud, where the plugin is specified!)\n+\n+    These plugins implement a lifecycle over the following steps:\n+\n+      - pull:   retrieve the source for the part from the specified location\n+      - build:  drive the build system determined by the choice of plugin\n+      - stage:  consolidate desireable files from all the parts in one tree\n+      - prime:  distill down to only the files which will go into the snap\n+      - snap:   compress the prime tree into the installable snap file\n+\n+    These steps correspond to snapcraft commands. So when you initiate a\n+    'snapcraft pull' you will invoke the respective plugin for each part in\n+    the snap, in sequence, to handle the source pull. Each part will then have a\n+    fully populated parts/<part-name>/src/ directory. Similarly, if you then say\n+    'snapcraft build' you will invoke the plugin responsible for each part in\n+    turn, to build the part.\n+\n+    # Snapcraft Lifecycle\n+\n+    ## Pull\n+\n+    In this first step, source material is retrieved from the specified\n+    location, whether that is a URL for a tarball, a local path to a source tree\n+    inside the snap, a revision control reference to checkout, or something\n+    specific to the plugin such as PyPI. The plugin might also download\n+    necessary artifacts, such as the Java SDK, which are not specific to the\n+    particular part but which are needed by the plugin to handle its type of\n+    build system.\n+\n+    All the downloaded content for each part goes into the\n+    `parts/<part-name>/src/` directory, which acts as a cache to prevent\n+    re-fetching content. You can clean that cache out with 'snapcraft clean'.\n+\n+    ## Build\n+\n+    Snapcraft calculates an appropriate sequence to build the parts, based on\n+    explicit 'after' references and the order of the parts in the\n+    snapcraft.yaml. Each part is built in the `parts/<part-name>/build`\n+    directory and installed into `parts/<part-name>/install`.\n+\n+    Note the install step - we might actually want to use built artifacts from\n+    one part in the build process of another, so the `parts/<part-name>/install`\n+    directory is useful as a 'working fresh install' of the part.\n+\n+    Between the plugin, the part defintion YAML, and the build system of the\n+    part, it is expected that the part can be built and installed in the right\n+    place.\n+\n+    At this point you have a tree under `parts/` with a subdirectory for every\n+    part, and underneath those, separate src, build and install trees for each\n+    part.\n+\n+    ## Stage\n+\n+    We now need to start consolidating the important pieces of each part into a\n+    single tree. We do this twice - once in a very sweeping way that will\n+    produce a lot of extraneous materials but is useful for debugging. This is\n+    the 'stage' step of the lifecycle, because we move a lot of the build output\n+    from each part into a consolidated tree under `stage/` which has the\n+    structure of a snap but has way too much extra information.\n+\n+    The important thing about the staging area is that it lets you get all the\n+    shared libraries in one place and lets you find overlapping content in the\n+    parts. You can also try this directory as if it were a snap, and you'll have\n+    all the debugging information in the tree, which is useful for developers.\n+\n+    Each part describes its own staging content - the files that should be\n+    staged. The part will often describe \"chunks\" of content, called filesets,\n+    so that they can be referred to as a useful set rather than having to call\n+    out individual files.\n+\n+    ## Prime\n+\n+    It is useful to have a directory tree which exactly mirrors the structure of\n+    the final snap. This is the `prime/` directory, and the lifecycle includes a\n+    'prime' step which copies only that final, required content from the\n+    `stage/` directory into the `prime/` directory.\n+\n+    So the `prime/` directory contains only the content that will be put into\n+    the final snap, unlike the staging area which may include debug and\n+    development files not destined for your snap.\n+\n+    The snap metadata will also be placed in `./prime/meta` during the prime\n+    step, so this `./prime` directory is useful for inspecting exactly what is\n+    going into your snap or to conduct any final post-processing on snapcraft's\n+    output.\n+\n+    ## Snap\n+\n+    The final step in the snapcraft lifecycle builds a snap out of the `prime/`\n+    directory. It will be in the top level directory, alongside snapcraft.yaml,\n+    called <name>-<version>-<arch>.snap\n+\n+\n+    # Standard part definition keywords\n+\n+    There are several builtin keywords which can be used in any part regardless\n+    of the choice of plugin.\n+\n+      - after: [part, part, part...]\n+\n+        Snapcraft will make sure that it builds all of the listed parts before\n+        it tries to build this part. Essentially these listed dependencies for\n+        this part, useful when the part needs a library or tool built by another\n+        part.\n+\n+        If such a dependency part is not defined in this snapcraft.yaml, it must\n+        be defined in the cloud parts library, and snapcraft will retrieve the\n+        definition of the part from the cloud. In this way, a shared library of\n+        parts is available to every snap author - just say 'after' and list the\n+        parts you want that others have already defined.\n+\n+      - build-packages: [deb, deb, deb...]\n+\n+        A list of Ubuntu packages to install on the build host before building\n+        the part. The files from these packages will not go into the final snap\n+        unless they are also explicitly described in stage-packages.\n+\n+      - stage-packages: [deb, deb, deb...]\n+\n+        A list of Ubuntu packages must be unpacked in the `stage/` directory.\n+        XXX before build? Before stage?\n+\n+      - organize: YAML\n+\n+        Snapcraft will rename files according to this YAML sub-section. The\n+        content of the 'organize' section consists of old path keys, and their\n+        new values after the renaming.\n+\n+        This can be used to avoid conflicts between parts that use the same\n+        name, or to map content from different parts into a common conventional\n+        file structure. For example:\n+\n+          organize:\n+            usr/oldfilename: usr/newfilename\n+            usr/local/share/: usr/share/\n+\n+        The key is the internal part filename, the value is the exposed filename\n+        that will be used during the staging process. You can rename whole\n+        subtrees of the part, or just specific files.\n+\n+        Note that the path is relative (even though it is \"usr/local\") because\n+        it refers to content underneath parts/<part-name>/install which is going\n+        to be mapped into the stage and prime areas.\n+\n+      - filesets: YAML\n+\n+        When we map files into the stage and prime areas on the way to putting\n+        them into the snap, it is convenient to be able to refer to groups of\n+        files as well as individual files.  Snapcraft lets you name a fileset\n+        and then use it later for inclusion or exclusion of those files from the\n+        resulting snap.\n+\n+        For example, consider man pages of header files.. You might want them\n+        in, or you might want to leave them out, but you definitely don't want\n+        to repeatedly have to list all of them either way.\n+\n+        This section is thus a YAML map of fileset names (the keys) to a list of\n+        filenames. The list is built up by adding individual files or whole\n+        subdirectory paths (and all the files under that path) and wildcard\n+        globs, and then pruning from those paths.\n+\n+        The wildcard * globs all files in that path. Exclusions are denoted by\n+        an initial `-`.\n+\n+        For example you could add usr/local/* then remove usr/local/man/*:\n+\n+          filesets:\n+            allbutman: [ usr/local/*, -usr/local/man/* ]\n+            manpages: [ usr/local/man ]\n+\n+        Filenames are relative to the part install directory in\n+        `parts/<part-name>/install`. If you have used 'organize' to rename files\n+        then the filesets will be built up from the names after organization.\n+\n+      - stage: YAML file and fileset list\n+\n+        A list of files from a part install directory to copy into `stage/`.\n+        Rules applying to the list here are the same as those of filesets.\n+        Referencing of fileset keys is done with a $ prefixing the fileset key,\n+        which will expand with the value of such key.\n+\n+        For example:\n+\n+          stage:\n+            - usr/lib/*   # Everything under parts/<part-name>/install/usr/lib\n+            - -usr/lib/libtest.so   # Excludng libtest.so\n+            - $manpages             # Including the 'manpages' fileset\n+\n+      - prime: YAML file and fileset list\n+\n+        A list of files from a part install directory to copy into `prime/`.\n+        This section takes exactly the same form as the 'stage' section  but the\n+        files identified here will go into the ultimate snap (because the\n+        `prime/` directory reflects the file structure of the snap with no\n+        extraneous content).\n+\n+\n+    $ snapcraft help sources\n+    Common 'source' options.\n+\n+    Unless the part plugin overrides this behaviour, a part can use these\n+    'source' keys in its definition. They tell snapcraft where to pull source\n+    code for that part, and how to unpack it if necessary.\n+\n+      - source: url-or-path\n+\n+        A URL or path to some source tree to build. It can be local\n+        ('./src/foo') or remote ('https://foo.org/...'), and can refer to a\n+        directory tree or a tarball or a revision control repository\n+        ('git:...').\n+\n+      - source-type: git, bzr, hg, svn, tar, or zip\n+\n+        In some cases the source string is not enough to identify the version\n+        control system or compression algorithim. The source-type key can tell\n+        snapcraft exactly how to treat that content.\n+\n+      - source-branch: <branch-name>\n+\n+        Snapcraft will checkout a specific branch from the source tree. This\n+        only works on multi-branch repositories from git and hg (mercurial).\n+\n+      - source-tag: <tag>\n+\n+        Snapcraft will checkout the specific tag from the source tree revision\n+        control system.\n+\n+      - source-subdir: path\n+\n+        Snapcraft will checkout the repository or unpack the archive referred to\n+        by the 'source' keyword into parts/<part-name>/src/ but it will only\n+        copy the specified subdirectory into parts/<part-name>/build/\n+\n+    Note that plugins might well define their own semantics for the 'source'\n+    keywords, because they handle specific build systems, and many languages\n+    have their own built-in packaging systems (think CPAN, PyPI, NPM). In those\n+    cases you want to refer to the help text for the specific plugin.\n+\n+      snapcraft help <plugin>\n+\n+\n+#### Plugins help\n+\n+    $ snapcraft help ant\n+    The ant plugin is useful for ant based parts.\n+\n+    The ant build system is commonly used to build Java projects.\n+    The plugin requires a build.xml in the root of the source tree.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+\n+    $ snapcraft help autotools\n+    The autotools plugin is used for autotools based parts.\n+\n+    Autotools based projects are the ones that have the usual\n+    `./configure && make && make install` instruction set.\n+\n+    The plugin tries to build using ./configure first, if it is not there\n+    it will run ./autogen and if autogen is not there it will run autoreconf.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    In additon, this plugin uses the following plugin-specific keywords:\n+\n+        - configflags:\n+          (list of strings)\n+          configure flags to pass to the build such as those shown by running\n+          './configure --help'\n+        - install-via:\n+          (enum, 'destdir' or 'prefix')\n+          Whether to install via DESTDIR or by using --prefix (default is\n+          'destdir')\n+\n+\n+    $ snapcraft help catkin\n+    The catkin plugin is useful for building ROS parts.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - catkin-packages:\n+          (list of strings)\n+          List of catkin packages to build.\n+        - source-space:\n+          (string)\n+          The source space containing Catkin packages. By default this is 'src'.\n+        - include-roscore:\n+          (boolean)\n+          Whether or not to include roscore with the part. Defaults to true.\n+\n+\n+    $ snapcraft help cmake\n+    The cmake plugin is useful for building cmake based parts.\n+\n+    These are projects that have a CMakeLists.txt that drives the build.\n+    The plugin requires a CMakeLists.txt in the root of the source tree.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - configflags:\n+          (list of strings)\n+          configure flags to pass to the build using the common cmake semantics.\n+\n+\n+    $ snapcraft help copy\n+    The copy plugin is useful for assets or other sources with no build system.\n+\n+    This plugin uses the common plugin keywords as well as those for 'sources'\n+    (though the 'source' keyword is optional). For more information check the\n+    'plugins' topic for the former and the 'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - files:\n+          (object)\n+          A dictionary of key-value pairs. The key is the current location of the\n+          file relative to snapcraft.yaml (unless `source` is specified, in which\n+          case it's relative to the root of the source). The value is where to\n+          place the file in-snap, and is relative to the root of the snap. This\n+          works like `cp -r <key> <value>`. Note that globbing is supported for the\n+          key, allowing one to use *, ?, and character ranges expressed with [].\n+\n+\n+    $ snapcraft help go\n+    The go plugin can be used for go projects using `go get`.\n+\n+    This plugin uses the common plugin keywords, for more information check the\n+    'plugins' topic.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - go-packages:\n+          (list of strings)\n+          Go packages to fetch, these must be a \"main\" package. Dependencies\n+          are pulled in automatically by `go get`.\n+          Packages that are not \"main\" will not cause an error, but would\n+          not be useful either.\n+\n+        - go-importpath:\n+          (string)\n+          This entry tells the checked out `source` to live within a certain path\n+          within `GOPATH`.\n+          This is not needed and does not affect `go-packages`.\n+\n+\n+    $ snapcraft help gulp\n+    This plugin is used for gulp.js, the streaming build system.\n+\n+    The plugin uses gulp to drive the build. It requires a gulpfile.js in\n+    the root of the source.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - gulp-tasks:\n+          (list)\n+          A list of gulp tasks to run.\n+        - node-engine:\n+          (string)\n+          The version of nodejs to use for the build.\n+\n+\n+    $ snapcraft help jdk\n+    The plugin has no documentation\n+\n+\n+    $ snapcraft help kbuild\n+    The kbuild plugin is used for building kbuild based projects as snapcraft\n+    parts.\n+\n+    This plugin is based on the snapcraft.BasePlugin and supports the properties\n+    provided by that plus the following kbuild specific options with semantics as\n+    explained above:\n+\n+        - kdefconfig:\n+          (list of kdefconfigs)\n+          defconfig target to use as the base configuration. default: \"defconfig\"\n+\n+        - kconfigfile:\n+          (filepath)\n+          path to file to use as base configuration. If provided this option wins\n+          over kdefconfig. default: None\n+\n+        - kconfigs\n+          (list of strings)\n+          explicit list of configs to force; this will override the configs that\n+          were set as base through kdefconfig and kconfigfile and dependent configs\n+          will be fixed using the defaults encoded in the kbuild config\n+          definitions.  If you don't want default for one or more implicit configs\n+          coming out of these, just add them to this list as well.\n+\n+    The plugin applies your selected defconfig first by running\n+\n+        make defconfig\n+\n+    and then uses the kconfigs flag to augment the resulting config by prepending\n+    the configured kconfigs values to the .config and running\n+\n+        \"yes\" \"\" | make oldconfig\n+\n+    to create an updated .config file.\n+\n+    If kconfigfile is provided this plugin will use the provided config file\n+    wholesale as the starting point instead of make $kdefconfig. In case user\n+    configures both a kdefconfig as well as kconfigfile, kconfigfile approach will\n+    be used.\n+\n+\n+    $ snapcraft help kernel\n+    The kernel plugin refines the generic kbuild plugin to allow building\n+    kernel snaps with all the bells and whistles in one shot...\n+\n+    WARNING: this plugin's API is unstable. The cross compiling support is\n+             experimental.\n+\n+    The following kernel specific options are provided by this plugin:\n+\n+        - kernel-image-target:\n+          (string; default: bzImage)\n+          the kernel image make target to build; maps to make target.\n+\n+        - kernel-initrd-modules:\n+          (array of string)\n+          list of modules to include in initrd; note that kernel snaps do not\n+          provide the core bootlogic which comes from snappy Ubuntu Core\n+          OS snap. Include all modules you need for mounting rootfs here.\n+\n+        - kernel-with-firmware:\n+          (boolean; default: True)\n+          use this flag to disable shipping binary firmwares\n+\n+        - kernel-initrd-firmware:\n+          (array of string)\n+          list of firmware files to include in the initrd; these need to be\n+          relative paths to .installdir and this option does not work if you\n+          disable building firmware\n+\n+        - kernel-initrd-compression:\n+          (string; default: gz)\n+          initrd compression to use; the only supported value now is 'gz'.\n+\n+        - kernel-device-trees:\n+          (array of string)\n+          list of device trees to build, the format is <device-tree-name>.dts.\n+\n+\n+    $ snapcraft help make\n+    The make plugin is useful for building make based parts.\n+\n+    Make based projects are projects that have a Makefile that drives the\n+    build.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keyword:\n+\n+        - makefile:\n+          (string)\n+          Use the given file as the makefile.\n+\n+        - make-parameters:\n+          (list of strings)\n+          Pass the given parameters to the make command.\n+\n+\n+    $ snapcraft help maven\n+    This plugin is useful for building parts that use maven.\n+\n+    The maven build system is commonly used to build Java projects.\n+    The plugin requires a pom.xml in the root of the source tree.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - maven-options:\n+          (list of strings)\n+          flags to pass to the build using the maven semantics for parameters.\n+\n+\n+    $ snapcraft help nil\n+    The nil plugin is useful for parts with no source.\n+\n+    Using this, parts can be defined purely by utilizing properties automatically\n+    included by Snapcraft, e.g. stage-packages.\n+\n+\n+    $ snapcraft help nodejs\n+    The nodejs plugin is useful for node/npm based parts.\n+\n+    The plugin uses node to install dependencies from `package.json`. It\n+    also sets up binaries defined in `package.json` into the `PATH`.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - node-packages:\n+          (list)\n+          A list of dependencies to fetch using npm.\n+        - node-engine:\n+          (string)\n+          The version of nodejs you want the snap to run on.\n+\n+\n+    $ snapcraft help python2\n+    The python2 plugin can be used for python 2 based parts.\n+\n+    The python2 plugin can be used for python 2 projects where you would\n+    want to do:\n+\n+        - import python modules with a requirements.txt\n+        - build a python project that has a setup.py\n+        - install sources straight from pip\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - requirements:\n+          (string)\n+          path to a requirements.txt file\n+        - python-packages:\n+          (list)\n+          A list of dependencies to get from PyPi\n+\n+\n+    $ snapcraft help python3\n+    The python3 plugin can be used for python 3 based parts.\n+\n+    The python3 plugin can be used for python 3 projects where you would\n+    want to do:\n+\n+        - import python modules with a requirements.txt\n+        - build a python project that has a setup.py\n+        - install sources straight from pip\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - requirements:\n+          (string)\n+          path to a requirements.txt file\n+        - python-packages:\n+          (list)\n+          A list of dependencies to get from PyPi\n+\n+\n+    $ snapcraft help qmake\n+    The qmake plugin is useful for building qmake-based parts.\n+\n+    These are projects that are built using .pro files.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - options:\n+          (list of strings)\n+          additional options to pass to the qmake invocation.\n+        - qt-version:\n+          (enum, 'qt4' or 'qt5')\n+          Version of Qt to use with qmake.\n+        - project-files:\n+          (list of strings)\n+          list of .pro files to pass to the qmake invocation.\n+\n+\n+    $ snapcraft help scons\n+    The scons plugin is useful for building parts that build with scons.\n+\n+    These are projects that have a SConstruct that drives the build.\n+\n+    This plugin uses the common plugin keywords as well as those for \"sources\".\n+    For more information check the 'plugins' topic for the former and the\n+    'sources' topic for the latter.\n+\n+    Additionally, this plugin uses the following plugin-specific keywords:\n+\n+        - scons-options:\n+          (list of strings)\n+          flags to pass to the build using the scons semantics for parameters.\n+\n+\n+    $ snapcraft help tar-content\n+    The plugin does not exist. Run `snapcraft list-plugins` to see the available plugins.\n+\n+\n+    $ snapcraft help tar_content\n+    The plugin has no documentation\n+\n+\n+### list-plugins\n+\n+    $ snapcraft list-plugins\n+    ant        catkin  copy  gulp  kbuild  make   nil     python2  qmake  tar-content\n+    autotools  cmake   go    jdk   kernel  maven  nodejs  python3  scons\n+\n+### init\n+\n+    $ snapcraft init\n+    Created snapcraft.yaml.\n+    Edit the file to your liking or run `snapcraft` to get started\n+\n+### pull\n+\n+Pull in a clean project:\n+\n+    $ snapcraft pull\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to pull part2\n+    Pulling part2\n+\n+Pull again:\n+\n+    $ snapcraft pull\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+\n+Add a part and pull again:\n+\n+    $ snapcraft pull\n+    Skipping pull part2 (already ran)\n+    Preparing to pull part3\n+    Pulling part3\n+    Skipping pull part1 (already ran)\n+\n+Add a part and pull again:\n+\n+    $ snapcraft pull part1\n+    Preparing to pull part1\n+    Pulling part1\n+\n+Pull again the part:\n+\n+    $ snapcraft pull part1\n+    Skipping pull part1 (already ran)\n+\n+### build\n+\n+Build in a clean project:\n+\n+    $ snapcraft build\n+    Preparing to pull part3\n+    Pulling part3\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to build part3\n+    Building part3\n+    Preparing to build part2\n+    Building part2\n+    Preparing to build part1\n+    Building part1\n+\n+Build after pull was executed:\n+\n+    $ snapcraft build\n+    Skipping pull part1 (already ran)\n+    Skipping pull part2 (already ran)\n+    Preparing to build part1\n+    Building part1\n+    Preparing to build part2\n+    Building part2\n+\n+Build again:\n+\n+    $ snapcraft build\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+\n+Add a part and build again:\n+\n+    $ snapcraft build\n+    Preparing to pull part3\n+    Pulling part3\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Preparing to build part3\n+    Building part3\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+\n+### stage\n+\n+Stage in a clean project:\n+\n+    $ snapcraft stage\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to build part2\n+    Building part2\n+    Preparing to build part1\n+    Building part1\n+    Staging part2\n+    Staging part1\n+\n+Stage after build was executed:\n+\n+    $ snapcraft stage\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Staging part2\n+    Staging part1\n+\n+Stage again:\n+\n+    $ snapcraft stage\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Skipping stage part1 (already ran)\n+\n+Add a part and stage again:\n+\n+    $ snapcraft stage\n+    Preparing to pull part3\n+    Pulling part3\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Preparing to build part3\n+    Building part3\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Staging part3\n+    Skipping stage part2 (already ran)\n+    Skipping stage part1 (already ran)\n+\n+### prime\n+\n+Prime in a clean project:\n+\n+    $ snapcraft prime\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to build part2\n+    Building part2\n+    Preparing to build part1\n+    Building part1\n+    Staging part2\n+    Staging part1\n+    Priming part2\n+    Priming part1\n+\n+Prime after stage was executed:\n+\n+    $ snapcraft prime\n+    Skipping pull part1 (already ran)\n+    Skipping pull part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping stage part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Priming part1\n+    Priming part2\n+\n+Prime again:\n+\n+    $ snapcraft prime\n+    Skipping pull part1 (already ran)\n+    Skipping pull part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping stage part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Skipping prime part1 (already ran)\n+    Skipping prime part2 (already ran)\n+\n+Add a part and prime again:\n+\n+    $ snapcraft prime\n+    Skipping pull part2 (already ran)\n+    Preparing to pull part3\n+    Pulling part3\n+    Skipping pull part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Preparing to build part3\n+    Building part3\n+    Skipping build part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Staging part3\n+    Skipping stage part1 (already ran)\n+    Skipping prime part2 (already ran)\n+    Priming part3\n+    Skipping prime part1 (already ran)\n+\n+### strip\n+\n+    $ snapcraft strip\n+    DEPRECATED: use 'prime' instead of 'strip'\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to build part1\n+    Building part1\n+    Preparing to build part2\n+    Building part2\n+    Staging part1\n+    Staging part2\n+    Priming part1\n+    Priming part2\n+\n+### clean\n+\n+Clean in a clean project:\n+\n+    $ snapcraft clean\n+    Skipping cleaning priming area for part2 (already clean)\n+    Skipping cleaning staging area for part2 (already clean)\n+    Skipping cleaning build for part2 (already clean)\n+    Skipping cleaning pulled source for part2 (already clean)\n+    Skipping cleaning priming area for part1 (already clean)\n+    Skipping cleaning staging area for part1 (already clean)\n+    Skipping cleaning build for part1 (already clean)\n+    Skipping cleaning pulled source for part1 (already clean)\n+\n+Clean after pull:\n+\n+     $ snapcraft clean\n+     Skipping cleaning priming area for part2 (already clean)\n+     Skipping cleaning staging area for part2 (already clean)\n+     Skipping cleaning build for part2 (already clean)\n+     Cleaning pulled source for part2\n+     Skipping cleaning priming area for part1 (already clean)\n+     Skipping cleaning staging area for part1 (already clean)\n+     Skipping cleaning build for part1 (already clean)\n+     Cleaning pulled source for part1\n+     Cleaning up parts directory\n+\n+Clean after build:\n+\n+    $ snapcraft clean\n+    Skipping cleaning priming area for part2 (already clean)\n+    Skipping cleaning staging area for part2 (already clean)\n+    Cleaning build for part2\n+    Cleaning pulled source for part2\n+    Skipping cleaning priming area for part1 (already clean)\n+    Skipping cleaning staging area for part1 (already clean)\n+    Cleaning build for part1\n+    Cleaning pulled source for part1\n+\n+Clean after stage:\n+\n+    $ snapcraft clean\n+    Skipping cleaning priming area for part2 (already clean)\n+    Cleaning staging area for part2\n+    Cleaning build for part2\n+    Cleaning pulled source for part2\n+    Skipping cleaning priming area for part1 (already clean)\n+    Cleaning staging area for part1\n+    Cleaning build for part1\n+    Cleaning pulled source for part1\n+\n+Clean after prime:\n+\n+    $ snapcraft clean\n+    Cleaning priming area for part2\n+    Cleaning staging area for part2\n+    Cleaning build for part2\n+    Cleaning pulled source for part2\n+    Cleaning priming area for part1\n+    Cleaning staging area for part1\n+    Cleaning build for part1\n+    Cleaning pulled source for part1\n+    Cleaning up snapping area\n+\n+Clean a part:\n+\n+    $ snapcraft clean part1\n+    Cleaning priming area for part1\n+    Cleaning staging area for part1\n+    Cleaning build for part1\n+    Cleaning pulled source for part1\n+\n+Clean a step:\n+\n+    $ snapcraft clean --step build\n+    Cleaning priming area for part2\n+    Cleaning staging area for part2\n+    Cleaning build for part2\n+    Cleaning priming area for part1\n+    Cleaning staging area for part1\n+    Cleaning build for part1\n+    Cleaning up snapping area\n+\n+### snap\n+\n+Snap in a clean directory:\n+\n+    $ snapcraft\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to build part1\n+    Building part1\n+    Preparing to build part2\n+    Building part2\n+    Staging part1\n+    Staging part2\n+    Priming part1\n+    Priming part2\n+    Snapping 'my-snap' /\n+    Snapped my-snap_0_amd64.snap\n+\n+Snap after prime:\n+\n+    $ snapcraft snap\n+    Skipping pull part1 (already ran)\n+    Skipping pull part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping stage part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Skipping prime part1 (already ran)\n+    Skipping prime part2 (already ran)\n+    Snapping 'my-snap' |\n+    Snapped my-snap_0_amd64.snap\n+\n+Snap again:\n+\n+    $ snapcraft snap\n+    Skipping pull part1 (already ran)\n+    Skipping pull part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Skipping build part2 (already ran)\n+    Skipping stage part1 (already ran)\n+    Skipping stage part2 (already ran)\n+    Skipping prime part1 (already ran)\n+    Skipping prime part2 (already ran)\n+    Snapping 'my-snap' |\n+    Snapped my-snap_0_amd64.snap\n+\n+Add a part and snap again:\n+\n+    $ snapcraft snap\n+    Preparing to pull part3\n+    Pulling part3\n+    Skipping pull part2 (already ran)\n+    Skipping pull part1 (already ran)\n+    Preparing to build part3\n+    Building part3\n+    Skipping build part2 (already ran)\n+    Skipping build part1 (already ran)\n+    Staging part3\n+    Skipping stage part2 (already ran)\n+    Skipping stage part1 (already ran)\n+    Priming part3\n+    Skipping prime part2 (already ran)\n+    Skipping prime part1 (already ran)\n+    Snapping 'my-snap' /\n+    Snapped my-snap_0_amd64.snap\n+\n+Snap a directory:\n+\n+     $ snapcraft snap prime\n+     Snapping 'my-snap' |\n+     Snapped my-snap_0_amd64.snap\n+\n+Snap specifying the output:\n+\n+    $ snapcraft snap prime --output /tmp/test.snap\n+    Snapping 'my-snap' /\n+    Snapped /tmp/test.snap\n+\n+### cleanbuild\n+\n+    $ snapcraft cleanbuild\n+    Creating snapcraft-insupportably-unrelative-annie\n+    Starting snapcraft-insupportably-unrelative-annie\n+    Setting up container with project assets\n+    ./\n+    ./snapcraft.yaml\n+    Waiting for a network connection...\n+    Network connection established\n+    Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease\n+    [...]\n+    Reading package lists... Done\n+    Building dependency tree\n+    Reading state information... Done\n+    The following additional packages will be installed:\n+    [...]\n+    Need to get 14.2 MB of archives.\n+    After this operation, 64.6 MB of additional disk space will be used.\n+    Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 sgml-base all 1.26+nmu4ubuntu1 [12.5 kB]\n+    [...]\n+    Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...\n+    Downloading parts list|\n+    Preparing to pull part3\n+    Pulling part3\n+    Preparing to pull part2\n+    Pulling part2\n+    Preparing to pull part1\n+    Pulling part1\n+    Preparing to build part3\n+    Building part3\n+    Preparing to build part2\n+    Building part2\n+    Preparing to build part1\n+    Building part1\n+    Staging part3\n+    Staging part2\n+    Staging part1\n+    Priming part3\n+    Priming part2\n+    Priming part1\n+    Snapping 'my-snap' |\n+    Snapped my-snap_0_amd64.snap\n+    Retrieved my-snap_0_amd64.snap\n+\n+### Full lifecycle in a real project\n+\n+    $ snapcraft/tour/00-SNAPCRAFT/01-easy-start$ snapcraft\n+    Preparing to pull gnu-hello\n+    Pulling gnu-hello\n+    Downloading 'hello-2.10.tar.gz'[=====================================================] 100%\n+    Preparing to build gnu-hello\n+    Building gnu-hello\n+    ./configure --prefix=\n+    checking for a BSD-compatible install... /usr/bin/install -c\n+    [...]\n+    make -j1\n+    [...]\n+    make[1]: Leaving directory '/home/elopio/workspace/canonical/snapcraft/tour/00-SNAPCRAFT/01-easy-start/parts/gnu-hello/build'\n+    Staging gnu-hello\n+    Priming gnu-hello\n+    Snapping 'hello' |\n+    Snapped hello_2.10_amd64.snap\n+\n+### Errors\n+\n+Try to run a command that doesn't exist:\n+\n+    $ snapcraft idontexist\n+    Usage:\n+      snapcraft [options] [--enable-geoip --no-parallel-build]\n+      snapcraft [options] init\n+      snapcraft [options] pull [<part> ...]  [--enable-geoip]\n+      snapcraft [options] build [<part> ...] [--no-parallel-build]\n+      snapcraft [options] stage [<part> ...]\n+      snapcraft [options] prime [<part> ...]\n+      snapcraft [options] strip [<part> ...]\n+      snapcraft [options] clean [<part> ...] [--step <step>]\n+      snapcraft [options] snap [<directory> --output <snap-file>]\n+      snapcraft [options] cleanbuild\n+      snapcraft [options] login\n+      snapcraft [options] logout\n+      snapcraft [options] register <snap-name>\n+      snapcraft [options] upload <snap-file>\n+      snapcraft [options] list-plugins\n+      snapcraft [options] tour [<directory>]\n+      snapcraft [options] update\n+      snapcraft [options] define <part-name>\n+      snapcraft [options] search [<query> ...]\n+      snapcraft [options] help (topics | <plugin> | <topic>) [--devel]\n+      snapcraft (-h | --help)\n+      snapcraft --version\n+\n+Try to show help for an unexisting topic:\n+\n+    $ snapcraft help idontexist\n+    The plugin does not exist. Run `snapcraft list-plugins` to see the available plugins.\n+\n+Try a lifecycle command without a yaml:\n+\n+    $ snapcraft\n+    Could not find snapcraft.yaml.  Are you sure you are in the right directory?\n+    To start a new project, use 'snapcraft init'\n+\n+Try to init in a directory with a snapcraft.yaml:\n+\n+    $ snapcraft init\n+    snapcraft.yaml already exists!\n+\n+Try to run a lifecycle command with an unexisting part:\n+\n+    $ snapcraft pull idontexist\n+    The part named 'idontexist' is not defined in 'snapcraft.yaml'\n+\n+Try to clean a part that doesn't exist:\n+\n+    $ snapcraft clean idontexist\n+    The part named 'idontexist' is not defined in 'snapcraft.yaml'\n+\n+Try to clean a step that doesn't exist:\n+\n+    $ snapcraft clean --step idontexist\n+    'idontexist' is not a valid step for part 'part3'\n+\n+Try cleanbuild without lxd:\n+\n+    $ snapcraft cleanbuild\n+    The lxd package is not installed, in order to use `cleanbuild` you must install lxd onto your system. Refer to the \"Ubuntu Desktop and Ubuntu Server\" section on https://linuxcontainers\n+    .org/lxd/getting-started-cli/#ubuntu-desktop-and-ubuntu-server to enable a proper setup.\n+\n+Try to snap a directory that doesn't exist:\n+\n+    $ snapcraft snap idontexist\n+    [Errno 2] No such file or directory: '/tmp/test/idontexist/meta/snap.yaml'\n+\n+## Store integration\n+\n+### login\n+\n+    $ snapcraft login\n+    Enter your Ubuntu One SSO credentials.\n+    Email: u1test@canonical.com\n+    Password:\n+    One-time password (just press enter if you don't use two-factor authentication):\n+    Authenticating against Ubuntu One SSO.\n+    Login successful.\n+\n+Login again will just overwrite the existing credentials, if any:\n+\n+    $ snapcraft login\n+    Enter your Ubuntu One SSO credentials.\n+    Email:\n+\n+### logout\n+\n+    $ snapcraft logout\n+    Clearing credentials for Ubuntu One SSO.\n+    Credentials cleared.\n+\n+Logout again does the same, no message about credentials not existing:\n+\n+    $ snapcraft logout\n+    Clearing credentials for Ubuntu One SSO.\n+    Credentials cleared.\n+\n+### register\n+\n+    $ snapcraft register snap-name\n+    Registering snap-name.\n+    Congratulations! You're now the publisher for 'snap-name'.\n+\n+### push\n+\n+    $ snapcraft push goodsnap_version_arch.snap\n+    Uploading goodsnap_version_arch.snap.\n+    Uploading integration_tests/snaps/basic/u1test20160920_0.1_all.snap [                  ]   0%\n+    Uploading integration_tests/snaps/basic/u1test20160920_0.1_all.snap [==================] 100%\n+    Ready to release!|\n+    Revision 1 of 'goodsnap' created.\n+\n+### release\n+\n+    $ snapcraft release pushedsnap 1 edge\n+    The 'edge' channel is now open.\n+\n+    Channel    Version    Revision\n+    ---------  ---------  ----------\n+    stable     -          -\n+    candidate  -          -\n+    beta       -          -\n+    edge       0.1        1\n+\n+### Errors\n+\n+Try a store command without login:\n+\n+    $ snapcraft register test\n+    Registering test.\n+    No valid credentials found. Have you run \"snapcraft login\"?\n+    Invalid credentials: [].\n+\n+Try to register a snap without signing the agreement:\n+\n+    $ snapcraft register test\n+    Registering test.\n+    Expecting value: line 1 column 1 (char 0)\n+\n+Try to register a snap without developer name or country: todo\n+\n+Try to register two snaps in a short period:\n+\n+    $ snapcraft register second-snap\n+    Registering second-snap.\n+    You must wait 152 seconds before trying to register your next snap.\n+\n+Try to register a reserved name:\n+\n+    $ snapcraft register bash\n+    Registering bash.\n+    The name 'bash' is reserved.\n+\n+    If you are the publisher most users expect for 'bash' then please claim the name at 'https://myapps.developer.ubuntu.com/dev/click-apps/register-name-dispute/?series=16&name=bash'\n+\n+Try to register a name already registered:\n+\n+    $ snapcraft register already-registered\n+    Registering already-registered.\n+    The name 'already-registered' is already taken.\n+\n+    We can if needed rename snaps to ensure they match the expectations of most users. If you are the publisher most users expect for 'already-registered' then claim the name at 'https://myapps.developer.ubuntu.com/dev/click-apps/register-name-dispute/?series=16&name=u1test201607183'\n+\n+Try to register a name with an invalid name:\n+\n+    $ snapcraft register _invalid   \n+    Registering _invalid.\n+    Registration failed.\n+\n+Try to push a file that doesn’t exist:\n+\n+    $ snapcraft push idontexist\n+    The file 'idontexist' does not exist.\n+\n+Try to push a file that’s not a snap:\n+\n+    $ snapcraft push imnotasnap\n+    Uploading imnotasnap.\n+    Read on filesystem failed because EOF\n+    Read on filesystem failed because EOF\n+    Can't find a SQUASHFS superblock on imnotasnap\n+    Command '['unsquashfs', '-d', '/tmp/tmphedels1u/squashfs-root', 'imnotasnap', '-e', 'meta/snap.yaml']' returned non-zero exit status 1\n+\n+Try to upload a snap not registered:\n+\n+    $ snapcraft push notregistered_version_arch.snap\n+    Uploading notregistered_version_arch.snap.\n+    Uploading notregistered_version_arch.snap [                                                 ]   0%\n+    Uploading notregistered_version_arch.snap [=================================================] 100%\n+    Sorry, try `snapcraft register notregistered` before pushing again.\n+\n+Upload a snap that requires a manual review:\n+\n+    $ snapcraft push manualreview_revision_architecture.snap\n+    Uploading manualreview_revision_architecture.snap.\n+    Uploading manualreview_revision_architecture.snap [                                      ]   0%\n+    Uploading manualreview_revision_architecture.snap [======================================] 100%\n+    Will need manual review...|\n+    Revision 1 of 'manualreview_revision_architecture' created.\n+    Publishing checks failed.\n+    To release this to stable channel please request a review on the snapcraft list.\n+    Use devmode in the edge or beta channels to disable confinement.\n+\n+Try to release a snap that doesn't exist:\n+\n+    $ snapcraft release idontexist 1 edge\n+    Sorry, try `snapcraft register idontexist` before trying to release or choose an existing revision.","path":"reference.md","position":1439,"original_position":1439,"commit_id":"b11f0ebe6bf31d391ca8b3105dd50205962eb291","original_commit_id":"b11f0ebe6bf31d391ca8b3105dd50205962eb291","user":{"login":"elopio","id":617831,"avatar_url":"https://avatars.githubusercontent.com/u/617831?v=3","gravatar_id":"","url":"https://api.github.com/users/elopio","html_url":"https://github.com/elopio","followers_url":"https://api.github.com/users/elopio/followers","following_url":"https://api.github.com/users/elopio/following{/other_user}","gists_url":"https://api.github.com/users/elopio/gists{/gist_id}","starred_url":"https://api.github.com/users/elopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elopio/subscriptions","organizations_url":"https://api.github.com/users/elopio/orgs","repos_url":"https://api.github.com/users/elopio/repos","events_url":"https://api.github.com/users/elopio/events{/privacy}","received_events_url":"https://api.github.com/users/elopio/received_events","type":"User","site_admin":false},"body":"I'm not sure why are we suggesting an existing revision. Shouldn't we suggest an existing snap instead?","created_at":"2016-07-20T13:07:32Z","updated_at":"2016-07-20T13:07:32Z","html_url":"https://github.com/snapcore/snapcraft/pull/674#discussion_r71520260","pull_request_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/674","_links":{"self":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments/71520260"},"html":{"href":"https://github.com/snapcore/snapcraft/pull/674#discussion_r71520260"},"pull_request":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/674"}}},"pull_request":{"url":"https://api.github.com/repos/snapcore/snapcraft/pulls/674","id":78100585,"html_url":"https://github.com/snapcore/snapcraft/pull/674","diff_url":"https://github.com/snapcore/snapcraft/pull/674.diff","patch_url":"https://github.com/snapcore/snapcraft/pull/674.patch","issue_url":"https://api.github.com/repos/snapcore/snapcraft/issues/674","number":674,"state":"open","locked":false,"title":"Add reference.md","user":{"login":"elopio","id":617831,"avatar_url":"https://avatars.githubusercontent.com/u/617831?v=3","gravatar_id":"","url":"https://api.github.com/users/elopio","html_url":"https://github.com/elopio","followers_url":"https://api.github.com/users/elopio/followers","following_url":"https://api.github.com/users/elopio/following{/other_user}","gists_url":"https://api.github.com/users/elopio/gists{/gist_id}","starred_url":"https://api.github.com/users/elopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elopio/subscriptions","organizations_url":"https://api.github.com/users/elopio/orgs","repos_url":"https://api.github.com/users/elopio/repos","events_url":"https://api.github.com/users/elopio/events{/privacy}","received_events_url":"https://api.github.com/users/elopio/received_events","type":"User","site_admin":false},"body":"Not to merge, just for a review.","created_at":"2016-07-20T07:32:52Z","updated_at":"2016-07-20T13:07:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"05aa55c2d1a76a07c9802e498472bc239a7f521d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/674/commits","review_comments_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/674/comments","review_comment_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments{/number}","comments_url":"https://api.github.com/repos/snapcore/snapcraft/issues/674/comments","statuses_url":"https://api.github.com/repos/snapcore/snapcraft/statuses/b11f0ebe6bf31d391ca8b3105dd50205962eb291","head":{"label":"elopio:reference","ref":"reference","sha":"b11f0ebe6bf31d391ca8b3105dd50205962eb291","user":{"login":"elopio","id":617831,"avatar_url":"https://avatars.githubusercontent.com/u/617831?v=3","gravatar_id":"","url":"https://api.github.com/users/elopio","html_url":"https://github.com/elopio","followers_url":"https://api.github.com/users/elopio/followers","following_url":"https://api.github.com/users/elopio/following{/other_user}","gists_url":"https://api.github.com/users/elopio/gists{/gist_id}","starred_url":"https://api.github.com/users/elopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elopio/subscriptions","organizations_url":"https://api.github.com/users/elopio/orgs","repos_url":"https://api.github.com/users/elopio/repos","events_url":"https://api.github.com/users/elopio/events{/privacy}","received_events_url":"https://api.github.com/users/elopio/received_events","type":"User","site_admin":false},"repo":{"id":45211576,"name":"snapcraft","full_name":"elopio/snapcraft","owner":{"login":"elopio","id":617831,"avatar_url":"https://avatars.githubusercontent.com/u/617831?v=3","gravatar_id":"","url":"https://api.github.com/users/elopio","html_url":"https://github.com/elopio","followers_url":"https://api.github.com/users/elopio/followers","following_url":"https://api.github.com/users/elopio/following{/other_user}","gists_url":"https://api.github.com/users/elopio/gists{/gist_id}","starred_url":"https://api.github.com/users/elopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elopio/subscriptions","organizations_url":"https://api.github.com/users/elopio/orgs","repos_url":"https://api.github.com/users/elopio/repos","events_url":"https://api.github.com/users/elopio/events{/privacy}","received_events_url":"https://api.github.com/users/elopio/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/elopio/snapcraft","description":"Snapcraft is a delightful packaging tool","fork":true,"url":"https://api.github.com/repos/elopio/snapcraft","forks_url":"https://api.github.com/repos/elopio/snapcraft/forks","keys_url":"https://api.github.com/repos/elopio/snapcraft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elopio/snapcraft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elopio/snapcraft/teams","hooks_url":"https://api.github.com/repos/elopio/snapcraft/hooks","issue_events_url":"https://api.github.com/repos/elopio/snapcraft/issues/events{/number}","events_url":"https://api.github.com/repos/elopio/snapcraft/events","assignees_url":"https://api.github.com/repos/elopio/snapcraft/assignees{/user}","branches_url":"https://api.github.com/repos/elopio/snapcraft/branches{/branch}","tags_url":"https://api.github.com/repos/elopio/snapcraft/tags","blobs_url":"https://api.github.com/repos/elopio/snapcraft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elopio/snapcraft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elopio/snapcraft/git/refs{/sha}","trees_url":"https://api.github.com/repos/elopio/snapcraft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elopio/snapcraft/statuses/{sha}","languages_url":"https://api.github.com/repos/elopio/snapcraft/languages","stargazers_url":"https://api.github.com/repos/elopio/snapcraft/stargazers","contributors_url":"https://api.github.com/repos/elopio/snapcraft/contributors","subscribers_url":"https://api.github.com/repos/elopio/snapcraft/subscribers","subscription_url":"https://api.github.com/repos/elopio/snapcraft/subscription","commits_url":"https://api.github.com/repos/elopio/snapcraft/commits{/sha}","git_commits_url":"https://api.github.com/repos/elopio/snapcraft/git/commits{/sha}","comments_url":"https://api.github.com/repos/elopio/snapcraft/comments{/number}","issue_comment_url":"https://api.github.com/repos/elopio/snapcraft/issues/comments{/number}","contents_url":"https://api.github.com/repos/elopio/snapcraft/contents/{+path}","compare_url":"https://api.github.com/repos/elopio/snapcraft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elopio/snapcraft/merges","archive_url":"https://api.github.com/repos/elopio/snapcraft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elopio/snapcraft/downloads","issues_url":"https://api.github.com/repos/elopio/snapcraft/issues{/number}","pulls_url":"https://api.github.com/repos/elopio/snapcraft/pulls{/number}","milestones_url":"https://api.github.com/repos/elopio/snapcraft/milestones{/number}","notifications_url":"https://api.github.com/repos/elopio/snapcraft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elopio/snapcraft/labels{/name}","releases_url":"https://api.github.com/repos/elopio/snapcraft/releases{/id}","deployments_url":"https://api.github.com/repos/elopio/snapcraft/deployments","created_at":"2015-10-29T21:26:41Z","updated_at":"2016-01-11T20:05:34Z","pushed_at":"2016-07-20T13:04:47Z","git_url":"git://github.com/elopio/snapcraft.git","ssh_url":"git@github.com:elopio/snapcraft.git","clone_url":"https://github.com/elopio/snapcraft.git","svn_url":"https://github.com/elopio/snapcraft","homepage":null,"size":5431,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"snapcore:master","ref":"master","sha":"84b4764b0a769ca223c98fc5a1fed865c39441b3","user":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"repo":{"id":45199136,"name":"snapcraft","full_name":"snapcore/snapcraft","owner":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/snapcore/snapcraft","description":"Snapcraft is a delightful packaging tool","fork":false,"url":"https://api.github.com/repos/snapcore/snapcraft","forks_url":"https://api.github.com/repos/snapcore/snapcraft/forks","keys_url":"https://api.github.com/repos/snapcore/snapcraft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/snapcore/snapcraft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/snapcore/snapcraft/teams","hooks_url":"https://api.github.com/repos/snapcore/snapcraft/hooks","issue_events_url":"https://api.github.com/repos/snapcore/snapcraft/issues/events{/number}","events_url":"https://api.github.com/repos/snapcore/snapcraft/events","assignees_url":"https://api.github.com/repos/snapcore/snapcraft/assignees{/user}","branches_url":"https://api.github.com/repos/snapcore/snapcraft/branches{/branch}","tags_url":"https://api.github.com/repos/snapcore/snapcraft/tags","blobs_url":"https://api.github.com/repos/snapcore/snapcraft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/snapcore/snapcraft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/snapcore/snapcraft/git/refs{/sha}","trees_url":"https://api.github.com/repos/snapcore/snapcraft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/snapcore/snapcraft/statuses/{sha}","languages_url":"https://api.github.com/repos/snapcore/snapcraft/languages","stargazers_url":"https://api.github.com/repos/snapcore/snapcraft/stargazers","contributors_url":"https://api.github.com/repos/snapcore/snapcraft/contributors","subscribers_url":"https://api.github.com/repos/snapcore/snapcraft/subscribers","subscription_url":"https://api.github.com/repos/snapcore/snapcraft/subscription","commits_url":"https://api.github.com/repos/snapcore/snapcraft/commits{/sha}","git_commits_url":"https://api.github.com/repos/snapcore/snapcraft/git/commits{/sha}","comments_url":"https://api.github.com/repos/snapcore/snapcraft/comments{/number}","issue_comment_url":"https://api.github.com/repos/snapcore/snapcraft/issues/comments{/number}","contents_url":"https://api.github.com/repos/snapcore/snapcraft/contents/{+path}","compare_url":"https://api.github.com/repos/snapcore/snapcraft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/snapcore/snapcraft/merges","archive_url":"https://api.github.com/repos/snapcore/snapcraft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/snapcore/snapcraft/downloads","issues_url":"https://api.github.com/repos/snapcore/snapcraft/issues{/number}","pulls_url":"https://api.github.com/repos/snapcore/snapcraft/pulls{/number}","milestones_url":"https://api.github.com/repos/snapcore/snapcraft/milestones{/number}","notifications_url":"https://api.github.com/repos/snapcore/snapcraft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/snapcore/snapcraft/labels{/name}","releases_url":"https://api.github.com/repos/snapcore/snapcraft/releases{/id}","deployments_url":"https://api.github.com/repos/snapcore/snapcraft/deployments","created_at":"2015-10-29T17:23:15Z","updated_at":"2016-07-19T08:48:06Z","pushed_at":"2016-07-20T13:04:47Z","git_url":"git://github.com/snapcore/snapcraft.git","ssh_url":"git@github.com:snapcore/snapcraft.git","clone_url":"https://github.com/snapcore/snapcraft.git","svn_url":"https://github.com/snapcore/snapcraft","homepage":null,"size":6296,"stargazers_count":187,"watchers_count":187,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":84,"mirror_url":null,"open_issues_count":27,"forks":84,"open_issues":27,"watchers":187,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/674"},"html":{"href":"https://github.com/snapcore/snapcraft/pull/674"},"issue":{"href":"https://api.github.com/repos/snapcore/snapcraft/issues/674"},"comments":{"href":"https://api.github.com/repos/snapcore/snapcraft/issues/674/comments"},"review_comments":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/674/comments"},"review_comment":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/674/commits"},"statuses":{"href":"https://api.github.com/repos/snapcore/snapcraft/statuses/b11f0ebe6bf31d391ca8b3105dd50205962eb291"}}}}
{"actor":{"display_login":"elopio"}}