Dalamud icon indicating copy to clipboard operation
Dalamud copied to clipboard

DIP17/DalamudPackager: update to generate JSON + archives from csproj

Open philpax opened this issue 2 years ago • 0 comments

This issue assumes https://github.com/goatcorp/DIPs/pull/38 is merged.

All plugin developers will be required to make DalamudPackager the final step of their build process, and to move their existing pluginname.json metadata into the project, like so:

<ProjectExtensions>
    <DalamudPlugin>
        <ApiLevel>6</ApiLevel>
        <Author>Ottermandias</Author>
        <Name>GatherBuddy</Name>
        <Punchline>Simplify Gathering and Fishing.</Punchline>
        <Description>Adds commands to simplify gathering by finding nodes and fish and their locations via item name and a UI to keep track of special uptime and weather conditions.</Description>
        <IconUrl>https://raw.githubusercontent.com/Ottermandias/GatherBuddy/main/images/icon.png</IconUrl>
        <Tags>
            <Tag>Gathering</Tag>
            <Tag>Fishing</Tag>
            <Tag>Miner</Tag>
            <Tag>Botanist</Tag>
            <Tag>Weather</Tag>
            <Tag>Alarms</Tag>
            <Tag>Timer</Tag>
        </Tags>
        <Hidden>False</Hidden>
    </DalamudPlugin>
</ProjectExtensions>

DalamudPackager will then read these properties, as well as additional properties from the csproj and other sources, and produce a plugin.json which it then combines with the plugin itself to produce a $pluginname.zip.

This $pluginname.zip can then be consumed by both Dalamud (see #868) and published to the DalamudPlugins repo. It contains everything required to load the plugin, which should simplify both development and deployment.

DalamudPackager already produces a zip; the primary changes will be to make the zip the primary mode of output, and for the packager itself to generate the JSON, instead of the developer.

philpax avatar Jun 02 '22 23:06 philpax