helmfile/docs/reference/cmd_diff.svg

188 lines
43 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1153px" preserveAspectRatio="none" style="width:1849px;height:1153px;" version="1.1" viewBox="0 0 1849 1153" width="1849px" zoomAndPan="magnify"><defs><filter height="300%" id="f2r6knu6hb5kl" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[d77ae2549ff11ae59699f76b7d8f7963]
cluster cmd--><polygon fill="#F5F5F5" filter="url(#f2r6knu6hb5kl)" points="104.32,24.5,140.32,24.5,147.32,49.5679,418.32,49.5679,418.32,141.5,104.32,141.5,104.32,24.5" style="stroke: #DDDDDD; stroke-width: 1.5;"/><line style="stroke: #DDDDDD; stroke-width: 1.5;" x1="104.32" x2="147.32" y1="49.5679" y2="49.5679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="30" x="108.32" y="41.4659">cmd</text><!--MD5=[697812e4ae8f6b7fc191ae167ed2a6cd]
cluster pkg/config--><polygon fill="#F5F5F5" filter="url(#f2r6knu6hb5kl)" points="27.32,470.5,109.32,470.5,116.32,495.5679,430.32,495.5679,430.32,913,27.32,913,27.32,470.5" style="stroke: #DDDDDD; stroke-width: 1.5;"/><line style="stroke: #DDDDDD; stroke-width: 1.5;" x1="27.32" x2="116.32" y1="495.5679" y2="495.5679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="76" x="31.32" y="487.4659">pkg/config</text><!--MD5=[05d1b45e8e92144bb914a76b3b93499c]
cluster pkg/app--><polygon fill="#F5F5F5" filter="url(#f2r6knu6hb5kl)" points="454.32,199.5,519.32,199.5,526.32,224.5679,1446.32,224.5679,1446.32,670,454.32,670,454.32,199.5" style="stroke: #DDDDDD; stroke-width: 1.5;"/><line style="stroke: #DDDDDD; stroke-width: 1.5;" x1="454.32" x2="526.32" y1="224.5679" y2="224.5679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="458.32" y="216.4659">pkg/app</text><!--MD5=[58194630d95fea166032843d5d45bce1]
cluster pkg/state--><polygon fill="#F5F5F5" filter="url(#f2r6knu6hb5kl)" points="658.32,721,732.32,721,739.32,746.0679,1290.32,746.0679,1290.32,1141,658.32,1141,658.32,721" style="stroke: #DDDDDD; stroke-width: 1.5;"/><line style="stroke: #DDDDDD; stroke-width: 1.5;" x1="658.32" x2="739.32" y1="746.0679" y2="746.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="68" x="662.32" y="737.9659">pkg/state</text><!--MD5=[5c53f3055b8da4a64e7f7ba4c7591ae4]
cluster pkg/helmexec--><polygon fill="#F5F5F5" filter="url(#f2r6knu6hb5kl)" points="28.32,964,133.32,964,140.32,989.0679,634.32,989.0679,634.32,1126,28.32,1126,28.32,964" style="stroke: #DDDDDD; stroke-width: 1.5;"/><line style="stroke: #DDDDDD; stroke-width: 1.5;" x1="28.32" x2="140.32" y1="989.0679" y2="989.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="99" x="32.32" y="980.9659">pkg/helmexec</text><!--MD5=[521817ab83e81da341a3f4b5e91bae41]
class Command--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="62.9819" id="Command" style="stroke: #A80036; stroke-width: 1.5;" width="282" x="120.32" y="62.5"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="282" x="120.32" y="62.5"/><ellipse cx="183.07" cy="78.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M186.0388,84.1406 Q185.4606,84.4375 184.82,84.5781 Q184.1794,84.7344 183.4763,84.7344 Q180.9763,84.7344 179.6481,83.0938 Q178.3356,81.4375 178.3356,78.3125 Q178.3356,75.1875 179.6481,73.5313 Q180.9763,71.875 183.4763,71.875 Q184.1794,71.875 184.82,72.0313 Q185.4763,72.1875 186.0388,72.4844 L186.0388,75.2031 Q185.4138,74.625 184.82,74.3594 Q184.2263,74.0781 183.6013,74.0781 Q182.2575,74.0781 181.57,75.1563 Q180.8825,76.2188 180.8825,78.3125 Q180.8825,80.4063 181.57,81.4844 Q182.2575,82.5469 183.6013,82.5469 Q184.2263,82.5469 184.82,82.2813 Q185.4138,82 186.0388,81.4219 L186.0388,84.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="148" x="203.57" y="83.156">Command (e.g. DiffCmd)</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="121.32" x2="401.32" y1="94.5" y2="94.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="121.32" x2="401.32" y1="102.5" y2="102.5"/><ellipse cx="131.32" cy="113.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="256" x="140.32" y="118.2589">RunE(cmd *cobra.Command, args []string): error</text><!--MD5=[445e29fabf7deb6468a94138abc739ef]
class ConfigProvider--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="122.9094" id="ConfigProvider" style="stroke: #A80036; stroke-width: 1.5;" width="185" x="229.82" y="508.5"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="185" x="229.82" y="508.5"/><ellipse cx="276.07" cy="524.5" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M271.9919,520.2656 L271.9919,518.1094 L279.3825,518.1094 L279.3825,520.2656 L276.9138,520.2656 L276.9138,528.3438 L279.3825,528.3438 L279.3825,530.5 L271.9919,530.5 L271.9919,528.3438 L274.4606,528.3438 L274.4606,520.2656 L271.9919,520.2656 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="84" x="296.57" y="529.156">ConfigProvider</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="230.82" x2="413.82" y1="540.5" y2="540.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="230.82" x2="413.82" y1="548.5" y2="548.5"/><ellipse cx="240.82" cy="559.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="111" x="249.82" y="564.2589">KubeContext(): string</text><ellipse cx="240.82" cy="574.4819" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104" x="249.82" y="579.2408">HelmBinary(): string</text><ellipse cx="240.82" cy="589.4638" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="159" x="249.82" y="594.2227">Logger(): *zap.SugaredLogger</text><ellipse cx="240.82" cy="604.4457" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="67" x="249.82" y="609.2046">Args(): string</text><ellipse cx="240.82" cy="619.4276" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="249.82" y="624.1865">...()</text><!--MD5=[51375d6d2c3816cfe5dda7d965bd3e45]
class DiffConfigProvider--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="122.9094" id="DiffConfigProvider" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="43.82" y="508.5"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="43.82" y="508.5"/><ellipse cx="65.57" cy="524.5" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M61.4919,520.2656 L61.4919,518.1094 L68.8825,518.1094 L68.8825,520.2656 L66.4138,520.2656 L66.4138,528.3438 L68.8825,528.3438 L68.8825,530.5 L61.4919,530.5 L61.4919,528.3438 L63.9606,528.3438 L63.9606,520.2656 L61.4919,520.2656 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="104" x="81.07" y="529.156">DiffConfigProvider</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="44.82" x2="193.82" y1="540.5" y2="540.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="44.82" x2="193.82" y1="548.5" y2="548.5"/><ellipse cx="54.82" cy="559.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="86" x="63.82" y="564.2589">DiffArgs(): string</text><ellipse cx="54.82" cy="574.4819" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="63.82" y="579.2408">DetailedExitcode(): bool</text><ellipse cx="54.82" cy="589.4638" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="63.82" y="594.2227">IncludeTests(): bool</text><ellipse cx="54.82" cy="604.4457" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="63.82" y="609.2046">SkipDiffOnInstall(): bool</text><ellipse cx="54.82" cy="619.4276" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="63.82" y="624.1865">...()</text><!--MD5=[4d1f48f7b85d3c1d39d866fe0a2163e4]
class DiffImpl--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="137.8913" id="DiffImpl" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="43.32" y="759"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="43.32" y="759"/><ellipse cx="93.07" cy="775" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M96.0388,780.6406 Q95.4606,780.9375 94.82,781.0781 Q94.1794,781.2344 93.4763,781.2344 Q90.9763,781.2344 89.6481,779.5938 Q88.3356,777.9375 88.3356,774.8125 Q88.3356,771.6875 89.6481,770.0313 Q90.9763,768.375 93.4763,768.375 Q94.1794,768.375 94.82,768.5313 Q95.4763,768.6875 96.0388,768.9844 L96.0388,771.7031 Q95.4138,771.125 94.82,770.8594 Q94.2263,770.5781 93.6013,770.5781 Q92.2575,770.5781 91.57,771.6563 Q90.8825,772.7188 90.8825,774.8125 Q90.8825,776.9063 91.57,777.9844 Q92.2575,779.0469 93.6013,779.0469 Q94.2263,779.0469 94.82,778.7813 Q95.4138,778.5 96.0388,777.9219 L96.0388,780.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="113.57" y="779.656">DiffImpl</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="44.32" x2="202.32" y1="791" y2="791"/><ellipse cx="54.32" cy="802" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="128" x="63.32" y="806.7589">GlobalImpl: *GlobalImpl</text><ellipse cx="54.32" cy="816.9819" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="63.32" y="821.7408">DiffOptions: *DiffOptions</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="44.32" x2="202.32" y1="828.9638" y2="828.9638"/><ellipse cx="54.32" cy="839.9638" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="63.32" y="844.7227">Concurrency(): int</text><ellipse cx="54.32" cy="854.9457" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="63.32" y="859.7046">IncludeNeeds(): bool</text><ellipse cx="54.32" cy="869.9276" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="67" x="63.32" y="874.6865">Set(): []string</text><ellipse cx="54.32" cy="884.9094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="63.32" y="889.6684">...()</text><!--MD5=[335f4d9be48430461c68bf6d6fdba145]
class App--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="167.8551" id="App" style="stroke: #A80036; stroke-width: 1.5;" width="215" x="656.82" y="237.5"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="215" x="656.82" y="237.5"/><ellipse cx="748.07" cy="253.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M751.0388,259.1406 Q750.4606,259.4375 749.82,259.5781 Q749.1794,259.7344 748.4763,259.7344 Q745.9763,259.7344 744.6481,258.0938 Q743.3356,256.4375 743.3356,253.3125 Q743.3356,250.1875 744.6481,248.5313 Q745.9763,246.875 748.4763,246.875 Q749.1794,246.875 749.82,247.0313 Q750.4763,247.1875 751.0388,247.4844 L751.0388,250.2031 Q750.4138,249.625 749.82,249.3594 Q749.2263,249.0781 748.6013,249.0781 Q747.2575,249.0781 746.57,250.1563 Q745.8825,251.2188 745.8825,253.3125 Q745.8825,255.4063 746.57,256.4844 Q747.2575,257.5469 748.6013,257.5469 Q749.2263,257.5469 749.82,257.2813 Q750.4138,257 751.0388,256.4219 L751.0388,259.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="24" x="768.57" y="258.156">App</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.82" x2="870.82" y1="269.5" y2="269.5"/><ellipse cx="667.82" cy="280.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="676.82" y="285.2589">OverrideKubeContext: string</text><ellipse cx="667.82" cy="295.4819" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="676.82" y="300.2408">OverrideHelmBinary: string</text><ellipse cx="667.82" cy="310.4638" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="676.82" y="315.2227">Logger: *zap.SugaredLogger</text><ellipse cx="667.82" cy="325.4457" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="9" x="676.82" y="330.2046">...</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.82" x2="870.82" y1="337.4276" y2="337.4276"/><ellipse cx="667.82" cy="348.4276" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="169" x="676.82" y="353.1865">New(conf ConfigProvider): *App</text><ellipse cx="667.82" cy="363.4094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="167" x="676.82" y="368.1684">Diff(c DiffConfigProvider): error</text><ellipse cx="667.82" cy="378.3913" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="189" x="676.82" y="383.1502">Apply(c ApplyConfigProvider): error</text><ellipse cx="667.82" cy="393.3732" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="676.82" y="398.1321">...()</text><!--MD5=[8c2f4329bae024304d629f7fadea7029]
class Run--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="167.8551" id="Run" style="stroke: #A80036; stroke-width: 1.5;" width="960" x="470.32" y="486"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="960" x="470.32" y="486"/><ellipse cx="934.07" cy="502" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M937.0387,507.6406 Q936.4606,507.9375 935.82,508.0781 Q935.1794,508.2344 934.4762,508.2344 Q931.9762,508.2344 930.6481,506.5938 Q929.3356,504.9375 929.3356,501.8125 Q929.3356,498.6875 930.6481,497.0313 Q931.9762,495.375 934.4762,495.375 Q935.1794,495.375 935.82,495.5313 Q936.4762,495.6875 937.0387,495.9844 L937.0387,498.7031 Q936.4137,498.125 935.82,497.8594 Q935.2262,497.5781 934.6012,497.5781 Q933.2575,497.5781 932.57,498.6563 Q931.8825,499.7188 931.8825,501.8125 Q931.8825,503.9063 932.57,504.9844 Q933.2575,506.0469 934.6012,506.0469 Q935.2262,506.0469 935.82,505.7813 Q936.4137,505.5 937.0387,504.9219 L937.0387,507.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="24" x="954.57" y="506.656">Run</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="471.32" x2="1429.32" y1="518" y2="518"/><ellipse cx="481.32" cy="529" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="490.32" y="533.7589">state: *state.HelmState</text><ellipse cx="481.32" cy="543.9819" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="490.32" y="548.7408">helm: helmexec.Interface</text><ellipse cx="481.32" cy="558.9638" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="490.32" y="563.7227">ctx: Context</text><ellipse cx="481.32" cy="573.9457" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="267" x="490.32" y="578.7046">ReleaseToChart: map[state.PrepareChartKey]string</text><ellipse cx="481.32" cy="588.9276" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="9" x="490.32" y="593.6865">...</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="471.32" x2="1429.32" y1="600.9094" y2="600.9094"/><ellipse cx="481.32" cy="611.9094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="934" x="490.32" y="616.6684">diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts): (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error)</text><ellipse cx="481.32" cy="626.8913" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="491" x="490.32" y="631.6502">withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()): error</text><ellipse cx="481.32" cy="641.8732" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="490.32" y="646.6321">...()</text><!--MD5=[f02403d9b64e736718a511ad30814969]
class HelmState--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="137.8913" id="HelmState" style="stroke: #A80036; stroke-width: 1.5;" width="600" x="674.32" y="759"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="600" x="674.32" y="759"/><ellipse cx="938.57" cy="775" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M941.5388,780.6406 Q940.9606,780.9375 940.32,781.0781 Q939.6794,781.2344 938.9763,781.2344 Q936.4763,781.2344 935.1481,779.5938 Q933.8356,777.9375 933.8356,774.8125 Q933.8356,771.6875 935.1481,770.0313 Q936.4763,768.375 938.9763,768.375 Q939.6794,768.375 940.32,768.5313 Q940.9763,768.6875 941.5388,768.9844 L941.5388,771.7031 Q940.9138,771.125 940.32,770.8594 Q939.7263,770.5781 939.1013,770.5781 Q937.7575,770.5781 937.07,771.6563 Q936.3825,772.7188 936.3825,774.8125 Q936.3825,776.9063 937.07,777.9844 Q937.7575,779.0469 939.1013,779.0469 Q939.7263,779.0469 940.32,778.7813 Q940.9138,778.5 941.5388,777.9219 L941.5388,780.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="63" x="959.07" y="779.656">HelmState</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="675.32" x2="1273.32" y1="791" y2="791"/><ellipse cx="685.32" cy="802" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="79" x="694.32" y="806.7589">FilePath: string</text><ellipse cx="685.32" cy="816.9819" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="694.32" y="821.7408">Releases: []ReleaseSpec</text><ellipse cx="685.32" cy="831.9638" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="9" x="694.32" y="836.7227">...</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="675.32" x2="1273.32" y1="843.9457" y2="843.9457"/><ellipse cx="685.32" cy="854.9457" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="559" x="694.32" y="859.7046">DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, ...): ([]ReleaseSpec, []error)</text><ellipse cx="685.32" cy="869.9276" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="574" x="694.32" y="874.6865">PrepareCharts(helm helmexec.Interface, dir string, concurrency int, ...): (map[PrepareChartKey]string, []error)</text><ellipse cx="685.32" cy="884.9094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="694.32" y="889.6684">...()</text><!--MD5=[1b3108b8a826cc6349a8de02c4c86f7d]
class DiffOpts--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="137.8913" id="DiffOpts" style="stroke: #A80036; stroke-width: 1.5;" width="101" x="1109.82" y="987"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="101" x="1109.82" y="987"/><ellipse cx="1132.47" cy="1003" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1135.4388,1008.6406 Q1134.8606,1008.9375 1134.22,1009.0781 Q1133.5794,1009.2344 1132.8763,1009.2344 Q1130.3763,1009.2344 1129.0481,1007.5938 Q1127.7356,1005.9375 1127.7356,1002.8125 Q1127.7356,999.6875 1129.0481,998.0313 Q1130.3763,996.375 1132.8763,996.375 Q1133.5794,996.375 1134.22,996.5313 Q1134.8763,996.6875 1135.4388,996.9844 L1135.4388,999.7031 Q1134.8138,999.125 1134.22,998.8594 Q1133.6263,998.5781 1133.0013,998.5781 Q1131.6575,998.5781 1130.97,999.6563 Q1130.2825,1000.7188 1130.2825,1002.8125 Q1130.2825,1004.9063 1130.97,1005.9844 Q1131.6575,1007.0469 1133.0013,1007.0469 Q1133.6263,1007.0469 1134.22,1006.7813 Q1134.8138,1006.5 1135.4388,1005.9219 L1135.4388,1008.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="1148.17" y="1007.656">DiffOpts</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1110.82" x2="1209.82" y1="1019" y2="1019"/><ellipse cx="1120.82" cy="1030" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="1129.82" y="1034.7589">Context: int</text><ellipse cx="1120.82" cy="1044.9819" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="75" x="1129.82" y="1049.7408">Output: string</text><ellipse cx="1120.82" cy="1059.9638" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="1129.82" y="1064.7227">Color: bool</text><ellipse cx="1120.82" cy="1074.9457" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="1129.82" y="1079.7046">NoColor: bool</text><ellipse cx="1120.82" cy="1089.9276" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="1129.82" y="1094.6865">Set: []string</text><ellipse cx="1120.82" cy="1104.9094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="9" x="1129.82" y="1109.6684">...</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1110.82" x2="1209.82" y1="1116.8913" y2="1116.8913"/><!--MD5=[db66ad2d5dd0df68339e493c2bcac0df]
class HelmExec--><rect fill="#E8F4F9" filter="url(#f2r6knu6hb5kl)" height="107.9276" id="HelmExec" style="stroke: #A80036; stroke-width: 1.5;" width="573" x="44.82" y="1002"/><rect fill="#5D8AA8" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="573" x="44.82" y="1002"/><ellipse cx="300.57" cy="1018" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M296.4919,1013.7656 L296.4919,1011.6094 L303.8825,1011.6094 L303.8825,1013.7656 L301.4138,1013.7656 L301.4138,1021.8438 L303.8825,1021.8438 L303.8825,1024 L296.4919,1024 L296.4919,1021.8438 L298.9606,1021.8438 L298.9606,1013.7656 L296.4919,1013.7656 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="321.07" y="1022.656">Interface</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="45.82" x2="616.82" y1="1034" y2="1034"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="45.82" x2="616.82" y1="1042" y2="1042"/><ellipse cx="55.82" cy="1053" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="64.82" y="1057.7589">SetExtraArgs(...string)</text><ellipse cx="55.82" cy="1067.9819" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="547" x="64.82" y="1072.7408">DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string): error</text><ellipse cx="55.82" cy="1082.9638" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="453" x="64.82" y="1087.7227">SyncRelease(context HelmContext, name, chart, namespace string, flags ...string): error</text><ellipse cx="55.82" cy="1097.9457" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="64.82" y="1102.7046">...()</text><path d="M437.82,53.5 L437.82,90 L402.38,94 L437.82,98 L437.82,134.3241 A0,0 0 0 0 437.82,134.3241 L616.82,134.3241 A0,0 0 0 0 616.82,134.3241 L616.82,63.5 L606.82,53.5 L437.82,53.5 A0,0 0 0 0 437.82,53.5 " fill="#FFF8DC" filter="url(#f2r6knu6hb5kl)" style="stroke: #DCDCAA; stroke-width: 1.0;"/><path d="M606.82,53.5 L606.82,63.5 L616.82,63.5 L606.82,53.5 " fill="#FFF8DC" style="stroke: #DCDCAA; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="443.82" y="72.397">Command Flow:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="443.82" y="90.103">1. Parse flags into DiffImpl</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="158" x="443.82" y="107.809">2. Create App with DiffImpl</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="92" x="443.82" y="125.5151">3. Call App.Diff()</text><path d="M1462.82,281 L1462.82,317.5 L872.16,321.5 L1462.82,325.5 L1462.82,361.8241 A0,0 0 0 0 1462.82,361.8241 L1677.82,361.8241 A0,0 0 0 0 1677.82,361.8241 L1677.82,291 L1667.82,281 L1462.82,281 A0,0 0 0 0 1462.82,281 " fill="#FFF8DC" filter="url(#f2r6knu6hb5kl)" style="stroke: #DCDCAA; stroke-width: 1.0;"/><path d="M1667.82,281 L1667.82,291 L1677.82,291 L1667.82,281 " fill="#FFF8DC" style="stroke: #DCDCAA; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="1468.82" y="299.897">App Flow:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="194" x="1468.82" y="317.603">1. ForEachState() loads state files</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="144" x="1468.82" y="335.309">2. Creates Run instances</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="1468.82" y="353.0151">3. Calls Run.diff()</text><path d="M1465.32,529.5 L1465.32,566 L1430.58,570 L1465.32,574 L1465.32,610.3241 A0,0 0 0 0 1465.32,610.3241 L1757.32,610.3241 A0,0 0 0 0 1757.32,610.3241 L1757.32,539.5 L1747.32,529.5 L1465.32,529.5 A0,0 0 0 0 1465.32,529.5 " fill="#FFF8DC" filter="url(#f2r6knu6hb5kl)" style="stroke: #DCDCAA; stroke-width: 1.0;"/><path d="M1747.32,529.5 L1747.32,539.5 L1757.32,539.5 L1747.32,529.5 " fill="#FFF8DC" style="stroke: #DCDCAA; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="1471.32" y="548.397">Run Flow:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="237" x="1471.32" y="566.103">1. withPreparedCharts() prepares charts</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="241" x="1471.32" y="583.809">2. diff() plans and executes diff operation</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="271" x="1471.32" y="601.5151">3. Uses HelmState.DiffReleases() for actual diff</text><path d="M1515.32,787.5 L1515.32,868.3241 L1837.32,868.3241 L1837.32,797.5 L1827.32,787.5 L1515.32,787.5 " fill="#FFF8DC" filter="url(#f2r6knu6hb5kl)" style="stroke: #DCDCAA; stroke-width: 1.0;"/><path d="M1827.32,787.5 L1827.32,797.5 L1837.32,797.5 L1827.32,787.5 " fill="#FFF8DC" style="stroke: #DCDCAA; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="1521.32" y="806.397">HelmState Flow:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="301" x="1521.32" y="824.103">1. prepareDiffReleases() prepares flags and options</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="283" x="1521.32" y="841.809">2. DiffReleases() executes helm diff via helmexec</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="227" x="1521.32" y="859.5151">3. Returns affected releases and errors</text><!--MD5=[eac166ee4337b57753b79854500ce21e]
link Command to DiffImpl--><path d="M232.67,125.79 C179.5,185.29 67.24,322.58 26.32,462.5 C-0.56,554.43 -0.93,586.18 26.32,678 C34.3,704.88 48.83,731.45 64.26,754.54 " fill="none" id="Command-&gt;DiffImpl" style="stroke: #5D8AA8; stroke-width: 1.0;"/><polygon fill="#5D8AA8" points="67.15,758.81,65.4244,749.1135,64.3502,754.6674,58.7963,753.5932,67.15,758.81" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="35.32" y="450.397">creates</text><!--MD5=[203f2267a0fd9fb391d43c3995febe16]
link Command to App--><path d="M329.42,125.53 C412.11,162.6 552.77,225.66 651.69,270.01 " fill="none" id="Command-&gt;App" style="stroke: #5D8AA8; stroke-width: 1.0;"/><polygon fill="#5D8AA8" points="656.37,272.1,649.7936,264.7685,651.8075,270.0547,646.5212,272.0685,656.37,272.1" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="453.32" y="179.397">creates and uses</text><!--MD5=[8f7975d040952430958affce3272cb1d]
reverse link DiffConfigProvider to DiffImpl--><path d="M120.58,651.74 C121.12,686.1 121.74,725.76 122.26,758.64 " fill="none" id="DiffConfigProvider&lt;-DiffImpl" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="113.58,651.78,120.27,631.67,127.58,651.56,113.58,651.78" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="122.32" y="700.897">implements</text><!--MD5=[b1f163e4cdc03674f8502a8706bab05f]
reverse link ConfigProvider to DiffImpl--><path d="M262.56,647.89 C235.17,683.11 202.99,724.52 176.46,758.64 " fill="none" id="ConfigProvider&lt;-DiffImpl" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="257.36,643.16,275.16,631.67,268.42,651.75,257.36,643.16" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="229.32" y="700.897">implements</text><!--MD5=[02166b72ecafb9c344e124d13567d6cd]
link App to Run--><path d="M827.04,405.61 C845.48,430.05 865.71,456.86 884.35,481.57 " fill="none" id="App-&gt;Run" style="stroke: #5D8AA8; stroke-width: 1.0;"/><polygon fill="#5D8AA8" points="887.57,485.83,885.3535,476.2338,884.5631,481.8352,878.9618,481.0448,887.57,485.83" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="863.32" y="450.397">creates and uses</text><!--MD5=[d8c3f02165bc1697e43c1e6e8fed86c3]
link App to DiffConfigProvider--><path d="M656.56,330.72 C539.61,343.81 351.02,377.33 212.32,462.5 C194.58,473.39 178.39,488.76 164.66,504.44 " fill="none" id="App-&gt;DiffConfigProvider" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#5D8AA8" points="161.23,508.43,170.132,504.2164,164.491,504.6398,164.0677,498.9988,161.23,508.43" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="27" x="253.32" y="450.397">uses</text><!--MD5=[d40a88a16d673be9712b499086484335]
link Run to HelmState--><path d="M958.12,654.12 C961.12,686.13 964.52,722.44 967.43,753.49 " fill="none" id="Run-&gt;HelmState" style="stroke: #5D8AA8; stroke-width: 1.0;"/><polygon fill="#5D8AA8" points="967.93,758.83,971.0915,749.5024,967.4735,753.8509,963.1249,750.2328,967.93,758.83" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="72" x="963.32" y="700.897">operates on</text><!--MD5=[e67fc43786232131a26dc9f54ef4be8d]
link Run to HelmExec--><path d="M580.89,654.06 C551.46,670.32 524.01,689.76 500.32,713 C430.7,781.31 475.41,834.5 430.32,921 C416.42,947.68 397.47,974.81 379.86,997.61 " fill="none" id="Run-&gt;HelmExec" style="stroke: #5D8AA8; stroke-width: 1.0;"/><polygon fill="#5D8AA8" points="376.6,1001.81,385.2782,997.1529,379.6658,997.8602,378.9585,992.2477,376.6,1001.81" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="156" x="501.32" y="833.397">executes helm commands</text><!--MD5=[be2802304d893811a3a293a00df0c117]
link Run to DiffOpts--><path d="M1233.96,654.01 C1256.67,670.29 1276.8,689.74 1292.32,713 C1343.65,789.89 1327.38,835.46 1292.32,921 C1276.63,959.3 1244.11,992.53 1215.28,1016.32 " fill="none" id="Run-&gt;DiffOpts" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#5D8AA8" points="1211.05,1019.76,1220.5574,1017.1891,1214.9306,1016.607,1215.5127,1010.9802,1211.05,1019.76" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="1325.32" y="833.397">configures diff options</text><!--MD5=[0be320758c838b5b268dddc91d02acbc]
link HelmState to HelmExec--><path d="M780.53,897.11 C686.62,930.12 575.36,969.23 487.06,1000.26 " fill="none" id="HelmState-&gt;HelmExec" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#5D8AA8" points="482.34,1001.92,492.1572,1002.709,487.0571,1000.2619,489.5042,995.1617,482.34,1001.92" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="672.32" y="943.897">uses for helm operations</text><!--MD5=[c2be6acc0b323c4ba1b7374fdda531c6]
link HelmState to DiffOpts--><path d="M1030.38,897.11 C1054.54,926.47 1082.67,960.65 1106.57,989.69 " fill="none" id="HelmState-&gt;DiffOpts" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#5D8AA8" points="1109.76,993.56,1107.1128,984.0736,1106.576,989.7049,1100.9446,989.168,1109.76,993.56" style="stroke: #5D8AA8; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="153" x="1068.32" y="943.897">uses for diff configuration</text><!--MD5=[5ef8f279ed897d70af8f554f536e399b]
link HelmState to GMN36--><path d="M1093.68,758.97 C1194.55,709.52 1342.66,657.77 1470.82,695.5 C1531.5,713.37 1591.16,755.32 1630.43,787.27 " fill="none" id="HelmState-GMN36" style="stroke: #5D8AA8; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><!--MD5=[78d7418abfd67adae1e9ac55877ca46d]
@startuml "Helmfile Command Flow"
skinparam {
ClassBackgroundColor #E8F4F9
ClassHeaderBackgroundColor #5D8AA8
ClassFontColor #000000
ClassStereotypeFontColor #FFFFFF
ClassAttributeFontColor #000000
ClassFontStyle bold
PackageBackgroundColor #F5F5F5
PackageBorderColor #DDDDDD
NoteBackgroundColor #FFF8DC
NoteBorderColor #DCDCAA
ArrowColor #5D8AA8
}
package "cmd" {
class "Command (e.g. DiffCmd)" as Command {
+RunE(cmd *cobra.Command, args []string): error
}
}
package "pkg/config" {
interface "ConfigProvider" as ConfigProvider {
+KubeContext(): string
+HelmBinary(): string
+Logger(): *zap.SugaredLogger
+Args(): string
+...()
}
interface "DiffConfigProvider" as DiffConfigProvider {
+DiffArgs(): string
+DetailedExitcode(): bool
+IncludeTests(): bool
+SkipDiffOnInstall(): bool
+...()
}
class "DiffImpl" as DiffImpl {
+GlobalImpl: *GlobalImpl
+DiffOptions: *DiffOptions
+Concurrency(): int
+IncludeNeeds(): bool
+Set(): []string
+...()
}
}
package "pkg/app" {
class "App" as App {
+OverrideKubeContext: string
+OverrideHelmBinary: string
+Logger: *zap.SugaredLogger
+...
+New(conf ConfigProvider): *App
+Diff(c DiffConfigProvider): error
+Apply(c ApplyConfigProvider): error
+...()
}
class "Run" as Run {
+state: *state.HelmState
+helm: helmexec.Interface
+ctx: Context
+ReleaseToChart: map[state.PrepareChartKey]string
+...
+diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts): (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error)
+withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()): error
+...()
}
}
package "pkg/state" {
class "HelmState" as HelmState {
+FilePath: string
+Releases: []ReleaseSpec
+...
+DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, ...): ([]ReleaseSpec, []error)
+PrepareCharts(helm helmexec.Interface, dir string, concurrency int, ...): (map[PrepareChartKey]string, []error)
+...()
}
class "DiffOpts" as DiffOpts {
+Context: int
+Output: string
+Color: bool
+NoColor: bool
+Set: []string
+...
}
}
package "pkg/helmexec" {
interface "Interface" as HelmExec {
+SetExtraArgs(...string)
+DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string): error
+SyncRelease(context HelmContext, name, chart, namespace string, flags ...string): error
+...()
}
}
Command - -> DiffImpl : creates
Command - -> App : creates and uses
DiffConfigProvider <|.. DiffImpl : implements
ConfigProvider <|.. DiffImpl : implements
App - -> Run : creates and uses
App ..> DiffConfigProvider : uses
Run - -> HelmState : operates on
Run - -> HelmExec : executes helm commands
Run ..> DiffOpts : configures diff options
HelmState ..> HelmExec : uses for helm operations
HelmState ..> DiffOpts : uses for diff configuration
note right of Command
Command Flow:
1. Parse flags into DiffImpl
2. Create App with DiffImpl
3. Call App.Diff()
end note
note right of App
App Flow:
1. ForEachState() loads state files
2. Creates Run instances
3. Calls Run.diff()
end note
note right of Run
Run Flow:
1. withPreparedCharts() prepares charts
2. diff() plans and executes diff operation
3. Uses HelmState.DiffReleases() for actual diff
end note
note right of HelmState
HelmState Flow:
1. prepareDiffReleases() prepares flags and options
2. DiffReleases() executes helm diff via helmexec
3. Returns affected releases and errors
end note
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 21.0.6+7-Ubuntu-124.04.1
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>