The dump plugin


#1

This plugin just dumps the content from a specified source.

In the cases where the content dumped needs some additional mangling or organizing
one would take advantage of the core functionalities available to plugins
such as: filesets, stage, snap and organize.

See common keywords for more information about these keywords.

Example

parts:
  my-part:
    source: local-source/
    plugin: dump
    organize:
      '*.png' : images/
      launch.wrapper: usr/bin/launcher
    prime:
      - -README*

More examples on GitHub


Snap Documentation (page deprecated)
Plugin documentation gone
Supported plugins
Snapcraft build, debug and publishing docs roadmap (page breakdown)
Snap documentation
Defining a command
#2

Since the target destination is never mentioned in these dump/organize examples, is it true that the target is the /root/prime virtual machine directory during the build process (which ends up as the root of the snap)?

Thus the dump command above copies the files from local-source/ into prime and the organize moves them into subdirs of prime, so that for example:

  • local-source/*.png ends up in /prime and then they all get moved into /prime/images/
  • local-source/launch.wrapper ends up in /prime and then gets moved into /prime/usr/bin/launcher/launch.wrapper

#3

It is true that the target will end up be placing at the root of the snap file hierachy, what is unnecessarily true that it will always match the /root/prime virtual machine directory since that’s a Snapcraft internal implementation details.

Also the plugins only affect what will be contained in the SNAPCRAFT_PART_INSTALL directory in the part’s build step, whether the file will end in SNAPCRAFT_PRIME directory will also be determined by the stage and prime step.


#4

I don’t understand this completely.

The presented options are:

  • fileset: filesets appear to be a way to group files and operate on the group at once.
  • stage: no clue what this does. “A list of files from to stage.” This tells me very little.
  • snap: I can’t find anything called snap in the common keywords link.
  • organize: I think I understand from the example that organize will rename files.

I am specifically here looking how to insert only a specific file into the snap. I just want foo/bar.sh included in my snap. I have learned from trial and error that source: ./foo will include ALL files from foo in the snap, dumped into the base directory of the snap. It would be nice to have this called out.

“This plugin just dumps the content from a specified source(directory, url, git link, etc) into the base directory of the resulting snap.”?

I then started to dig through the example and look things up. Looking up prime doesn’t result in any information about what it does. It just says “A list of files from to prime.” and prime links to a page that says “Migrate this part’s staged material into the final priming area”. What is my staged material? Where is the final priming area? Why do I need to know that? This doesn’t make sense unless you have a lot of internal knowledge about how snaps work.

I’m just trying to make a zip of my application here. I don’t need to know how zip works or what temporary directories are used. I’ve now clicked on 3 links going back and forth to try and decrypt how to say “copy random filename to snap”. It is very easy at this point for a potential user to be confused and give up at this point.

Could we add some more examples and document the one that is there? I assume ‘*.png’: images/ will move all png images into a img directory, but leave all jpg files for example. That stuff seems intuitive and maybe include this single file is as well, but unless it is shown I don’t see how a user can find it easily.