<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 04:47:00 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[NPMCLI-149] create-app and create-content-type commands</title>
                <link>https://jira.magnolia-cms.com/browse/NPMCLI-149</link>
                <project id="13983" key="NPMCLI">Magnolia CLI</project>
                    <description>&lt;p&gt;As a developer I can quickly create content-types and apps, so that I can get started on a project quickly.&lt;/p&gt;

&lt;p&gt;Acceptance criteria&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;I can create a working app (based on a CT) with the CLI&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We should create two new commands to assist working with content types.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;mgnl create-content-type&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Create a standard content type following the conventions established by the &quot;create-component&quot; command. It does not need to be interactive, it can just create a good starting point for a developer.&lt;/p&gt;

&lt;p&gt;A &quot;-app&quot; and &quot;-a&quot; option should cause an app definition to be created as well which references the content type.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;mgnl create-app&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;It should work the same as the create-content-type command, but supply the &quot;-a&quot; option automatically.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Why two commands?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Some developers will be very focussed on creating an app. It needs to be obvious to them &#160;how to do that.&lt;/p&gt;

&lt;p&gt;On the other hand, creating a content type directly also makes sense, and in the future will include additional useful options - such as creating templates and restEndpoints. So it makes sense to have one command which can do all related tasks for you.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Suggestions for Prototypes:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;App&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
!content-type:__name__
name: __name__

# Optionally override any of the app configuration supplied by the content type.
# subApps:
#   detail:
#     editor:
#       form:
#         tabs:
#           &lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;:
#
#             fields:
#               - name: title
#                 rows: 5

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Content type&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
# Automatically generated contentType demonstrates usage of the common properties.
# Modify them to match your requirements.
datasource:
  workspace: __name__

# Optionally configure a custom namespace. (Replace [myNamespace] everywhere.) 
# This namespace can then be used below &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the nodetype.
# namespaces:
#   [myNamespace]: https:&lt;span class=&quot;code-comment&quot;&gt;//www.[myDomain.com]/jcr/1.0/[myNamespace]
&lt;/span&gt;  autoCreate: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;

model:
# Optionally supply a specific nodetype, otherwise &lt;span class=&quot;code-quote&quot;&gt;&apos;mgnl:content&apos;&lt;/span&gt; will be used.
# nodeType: [myNamespace]:__name__
  properties:
    - name: title
      label: Title
      type: &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;
      required: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
      i18n: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
    - name: birthday
      label: Birthday
      type: Date
    - name: member
      label: Is a member
      type: &lt;span class=&quot;code-object&quot;&gt;Boolean&lt;/span&gt;  #Types &lt;span class=&quot;code-quote&quot;&gt;&apos;Decimal&apos;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&apos;&lt;span class=&quot;code-object&quot;&gt;Long&lt;/span&gt;&apos;&lt;/span&gt; and &lt;span class=&quot;code-quote&quot;&gt;&apos;&lt;span class=&quot;code-object&quot;&gt;Double&lt;/span&gt;&apos;&lt;/span&gt; are also available.    

    - name: phoneNumbers
      label: Phone Numbers
      type: PhoneNumber
      multiple: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
    - name: billingAddress
      label: Billing Address
      type: Address
    - name: shippingAddress
      label: Shipping Address
      type: Address  

  subModels:    
    - name: PhoneNumber
      properties:
        - name: title
          label: Title
        - name: number
          label: &lt;span class=&quot;code-object&quot;&gt;Number&lt;/span&gt;    

    - name: Address
      properties:
        - name: street
          label: Street
        - name: city
          label: City
        - name: postalCode
          label: Postal Code
        - name: country
          label: Country
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="63282">NPMCLI-149</key>
            <summary>create-app and create-content-type commands</summary>
                <type id="2" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10891&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="mdivilek">Milan Divilek</assignee>
                                    <reporter username="czimmermann">Christopher Zimmermann</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Dec 2017 11:21:44 +0100</created>
                <updated>Thu, 16 May 2019 10:28:48 +0200</updated>
                            <resolved>Mon, 8 Apr 2019 10:07:14 +0200</resolved>
                                                    <fixVersion>3.1.0</fixVersion>
                                        <due></due>
                            <votes>3</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="152962" author="rgange" created="Wed, 13 Dec 2017 11:41:20 +0100"  >&lt;p&gt;Yes, good idea. Much better than the groovy script. &lt;/p&gt;</comment>
                            <comment id="152980" author="czimmermann" created="Wed, 13 Dec 2017 13:45:41 +0100"  >&lt;p&gt;Outdated&lt;/p&gt;

&lt;p&gt;&lt;del&gt;Unfortunately I dont think the command can setup &lt;b&gt;everything&lt;/b&gt; you need to get your app created yet. (Create workspace, Security...)&lt;/del&gt;&lt;/p&gt;</comment>
                            <comment id="152982" author="rgange" created="Wed, 13 Dec 2017 13:58:02 +0100"  >&lt;p&gt;True, but the groovy script really could not do those things either. It would create the workspace and node type, but you still had to move that by hand to the descriptor. &lt;/p&gt;</comment>
                            <comment id="185338" author="czimmermann" created="Wed, 17 Apr 2019 10:44:33 +0200"  >&lt;p&gt;As this ticket is introducing new features, it should get a new minor version -&amp;gt; 3.1&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                                                <inwardlinks description="is depended upon by">
                                        <issuelink>
            <issuekey id="73447">NPMCLI-209</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="73448">NPMCLI-210</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="76059">NPMCLI-218</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                            <outwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="73310">NPMCLI-204</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 13 Dec 2017 11:41:20 +0100</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12130" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Documentation update required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="13300"><![CDATA[Yes]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>MGNLCT-74</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>czimmermann</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 43 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>czimmermann</customfieldvalue>
            <customfieldvalue>mdivilek</customfieldvalue>
            <customfieldvalue>rgange</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|y013y4:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10220" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Release notes required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10490"><![CDATA[Yes]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="924">Features 8</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>