imdone-cli 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.cjs +1 -1
- package/dist/index.min.cjs.map +1 -1
- package/package.json +2 -2
- package/dist/index.cjs +0 -102973
- package/dist/index.cjs.map +0 -7
- package/src/adapters/__tests__/create-jwt.sh +0 -11
- package/src/adapters/__tests__/jwt-private.pem +0 -28
- package/src/adapters/__tests__/jwt-public.pem +0 -9
- package/src/adapters/__tests__/license.spec.js +0 -27
- package/src/adapters/env.js +0 -21
- package/src/adapters/git.js +0 -113
- package/src/adapters/imdone-config-template.js +0 -79
- package/src/adapters/imdone.js +0 -76
- package/src/adapters/license.js +0 -83
- package/src/bin.js +0 -173
- package/src/index.js +0 -3
- package/src/ui/prompt.js +0 -192
- package/src/usecases/__tests__/headless-pull-from-jira.spec.js +0 -60
- package/src/usecases/__tests__/test-project/.imdone/config.yml +0 -100
- package/src/usecases/headless-pull-from-jira.js +0 -58
- package/src/usecases/headless-push-to-jira.js +0 -42
- package/src/usecases/init.js +0 -27
package/dist/index.min.cjs
CHANGED
@@ -462,7 +462,7 @@ ${kw} It looks like you don't have your project ignored.
|
|
462
462
|
|
463
463
|
Imdone will append the backlog directory to the .gitignore file.
|
464
464
|
|
465
|
-
Do you want to proceed?`,default:!1});return t}async function Jxe(e){let t={...e},r=[];if(t.name||r.push({type:"input",name:"name",message:"Project name:",validate:n=>n?!0:"Name is required"}),t.jiraUrl||r.push({type:"input",name:"jiraUrl",message:"Jira URL (e.g. https://yourcompany.atlassian.net):",validate:n=>n.startsWith("http")?!0:"URL must start with http:// or https://"}),t.jiraProjectKey||r.push({type:"input",name:"jiraProjectKey",message:"Jira project key (e.g. ABC):",validate:n=>n?!0:"Project key is required"}),t.jiraUsername||r.push({type:"input",name:"jiraUsername",message:"Jira username (email):",validate:n=>n.includes("@")?!0:"Please enter a valid email address"}),t.jiraApiToken||r.push({type:"password",name:"jiraApiToken",message:"Jira API token:",validate:n=>n?!0:"API token is required"}),t.jql||r.push({type:"input",name:"jql",default:"Sprint in openSprints() and status != 'Done'",message:"JQL query (e.g. Sprint in openSprints() and status != 'Done'):",validate:n=>n?!0:"JQL query is required"}),r.length>0)try{let n=await xh.prompt(r);Object.assign(t,n)}catch{console.log("Configuration cancelled"),process.exit(1)}return t}var Pw=require("path");async function Zxe(e,{name:t,jiraUrl:r,jiraProjectKey:n,jiraUsername:u,jiraApiToken:i,jql:a}){let s={name:t,jiraUrl:r,jiraProjectKey:n,jql:a};await _Y(e),await F7((0,Pw.dirname)(e),(0,Pw.basename)(e)),await F7(e,".env"),await Vhe(e,u,i),await Yhe(e,"archive"),Whe(e,s),me.info("Imdone project initialized successfully:",s)}var Xxe="0.1.
|
465
|
+
Do you want to proceed?`,default:!1});return t}async function Jxe(e){let t={...e},r=[];if(t.name||r.push({type:"input",name:"name",message:"Project name:",validate:n=>n?!0:"Name is required"}),t.jiraUrl||r.push({type:"input",name:"jiraUrl",message:"Jira URL (e.g. https://yourcompany.atlassian.net):",validate:n=>n.startsWith("http")?!0:"URL must start with http:// or https://"}),t.jiraProjectKey||r.push({type:"input",name:"jiraProjectKey",message:"Jira project key (e.g. ABC):",validate:n=>n?!0:"Project key is required"}),t.jiraUsername||r.push({type:"input",name:"jiraUsername",message:"Jira username (email):",validate:n=>n.includes("@")?!0:"Please enter a valid email address"}),t.jiraApiToken||r.push({type:"password",name:"jiraApiToken",message:"Jira API token:",validate:n=>n?!0:"API token is required"}),t.jql||r.push({type:"input",name:"jql",default:"Sprint in openSprints() and status != 'Done'",message:"JQL query (e.g. Sprint in openSprints() and status != 'Done'):",validate:n=>n?!0:"JQL query is required"}),r.length>0)try{let n=await xh.prompt(r);Object.assign(t,n)}catch{console.log("Configuration cancelled"),process.exit(1)}return t}var Pw=require("path");async function Zxe(e,{name:t,jiraUrl:r,jiraProjectKey:n,jiraUsername:u,jiraApiToken:i,jql:a}){let s={name:t,jiraUrl:r,jiraProjectKey:n,jql:a};await _Y(e),await F7((0,Pw.dirname)(e),(0,Pw.basename)(e)),await F7(e,".env"),await Vhe(e,u,i),await Yhe(e,"archive"),Whe(e,s),me.info("Imdone project initialized successfully:",s)}var Xxe="0.1.6";me.setLevel(process.env.LOG_LEVEL||Li.ERROR);async function Qxe(){let e=pc("Pulling issues from Jira...").start();try{let{result:t}=await Hhe(process.cwd(),{...ZR,feedback:e}),{existing:r,added:n}=t,u=r.length>0||n.length>0?`Pulled ${r.length} existing and ${n.length} new issues from Jira`:"No issues to pull from Jira";e.succeed(u)}catch(t){e.fail(`Failed to pull issues from Jira: ${t.message}`),me.error(t.stack),process.exit(1)}}async function svt(){let e=pc("Pushing changes to Jira...").start();try{let{result:t}=await Ghe(process.cwd(),{...XR,feedback:pc}),r=t.length>0?`Pushed ${t.length} changes to Jira`:"No changes to push to Jira";e.succeed(r),t.forEach(n=>{console.log(n.url)})}catch(t){e.fail(`Failed to push changes to Jira: ${t.message}`),me.error(t.stack),process.exit(1)}}var E1=new Wq;E1.name("imdone").description("Imdone CLI to pull from and push to Jira").version(Xxe);E1.command("pull").description("Pull issues from Jira").action(async()=>{await Sq(),await Qxe()});E1.command("push").description("Push changes to Jira").action(async()=>{await Sq(),await Qxe(),await svt()});E1.command("init").description("Initialize Jira integration").option("--name [name]","Project name").option("--jira-url [jiraUrl]","Jira URL (e.g., https://your-domain.atlassian.net)").option("--jira-project-key [jiraProjectKey]","Jira project key (e.g., ABC)").option("--jira-username [jiraUsername]","Jira username (email)").option("--jira-api-token [jiraApiToken]","Jira API token").option("--jql [jql]",'JQL query to fetch issues (e.g., Sprint in openSprints() and status != "Done")').action(async e=>{let t=process.cwd();try{(!await Hxe(t)||!await Kxe(t)||!await Vxe(t)||!await zxe(t))&&(console.log("Configuration cancelled"),process.exit(1))}catch(u){me.error("Imdone initialization failed:",u),process.exit(1)}let r=await Jxe(e),n=pc("Initializing imdone...").start();try{await Zxe(t,r),n.succeed(`Imdone initialization for "${r.name}" completed successfully`)}catch(u){n.fail(`Imdone initialization failed: ${u.message}`),me.error(u),process.exit(1)}});E1.command("license").description("Enter or update your Imdone license").option("--token [token]","License token").option("--show","Show current license information").action(async e=>{let t=process.cwd();if(e.show){let u=pc("Fetching license information...").start();try{let i=await UA(process.env.IMDONE_LICENSE);if(i.valid){let{name:a,email:s,expires:c}=i.data;u.succeed(`Current license: ${a} (${s}) - Expires: ${c.toLocaleDateString()}`)}else u.fail(`Invalid or expired license: ${i.reason}`)}catch(i){u.fail(`Failed to fetch license information: ${i.message}`),me.error(i)}return}let r=e.token;r||(r=await Gxe());let n=pc("Validating license...").start();try{let u=await UA(r);u.valid||(n.fail(`Invalid license: ${u.reason}`),process.exit(1)),await Khe(t,r);let{name:i,email:a,expires:s}=u.data;n.succeed(`License accepted for ${i} (${a}) - Expires: ${s.toLocaleDateString()}`)}catch(u){n.fail(`Failed to validate or store license: ${u.message}`),me.error(u),process.exit(1)}});(async function(){await Jhe(process.cwd()),E1.parse()})();
|
466
466
|
/*! Bundled license information:
|
467
467
|
|
468
468
|
is-extendable/index.js:
|