imdone-cli 0.2.0 → 0.2.1

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.
@@ -462,7 +462,7 @@ ${Rw} It looks like you don't have your project ignored.
462
462
 
463
463
  Imdone will append the ${t} directory to the .gitignore file.
464
464
 
465
- Do you want to proceed?`,default:!1});return r}async function Xxe(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 bh.prompt(r);Object.assign(t,n)}catch{console.log("Configuration cancelled"),process.exit(1)}return t}var Iw=require("path");async function Qxe(e,{name:t,jiraUrl:r,jiraProjectKey:n,jiraUsername:u,jiraApiToken:i,jql:a}){let s={name:t,jiraUrl:r,jiraProjectKey:n,jql:a};await CY(e),await y7((0,Iw.dirname)(e),(0,Iw.basename)(e)),await y7(e,".env"),await Zhe(e,u,i),await zhe(e,"archive"),Ghe(e,s),he.info("Imdone project initialized successfully:",s)}var ebe={name:"imdone-cli",version:"0.2.0",author:"Jesse Piascik",description:"An imdone cli that automates your jira updates with markdown files.",license:"Proprietary",engines:{node:">=22.0.0"},main:"dist/index.min.cjs",type:"module",bin:{imdone:"dist/index.min.cjs","imdone-debug":"dist/index.cjs"},scripts:{prepublishOnly:"npm --prefix ../ install && npm --prefix ../ run build && npm i && npm test && npm run build",link:"npm link ../../imdone-core-2 ../../imdone-api",build:"node esbuild.config.js && cp public/* dist/",coverage:"vitest --run --coverage",test:"vitest --run","test-ci":"vitest --run"},dependencies:{chalk:"^5.4.1",commander:"^13.1.0",dotenv:"16.4.5","imdone-core":"^2.0.11",inquirer:"^12.5.2",jsonwebtoken:"^9.0.2",ora:"^8.2.0","simple-git":"^3.27.0"},devDependencies:{esbuild:"^0.25.2","esbuild-plugin-copy":"^2.1.1",vitest:"^3.1.1"}};var rbe=G(require("node:https"),1),{name:tbe,version:Mw,description:nbe}=ebe;async function dvt(e){return new Promise((t,r)=>{rbe.default.get(`https://registry.npmjs.org/${e}/latest`,n=>{let u="";n.on("data",i=>u+=i),n.on("end",()=>{try{let i=JSON.parse(u);t(i.version)}catch(i){r(i)}})}).on("error",r)})}async function m_(){try{let e=await dvt(tbe);e!==Mw&&(console.log(`Update available: ${e} (current: ${Mw})`),console.log(`Run 'npm install -g ${tbe}' to update.`))}catch(e){console.error("Error checking for updates:",e)}}he.setLevel(process.env.LOG_LEVEL||Li.ERROR);async function ube(){let e=pc("Pulling issues from Jira...").start();try{let{result:t}=await Vhe(process.cwd(),{...eI,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}`),he.info("error:",t.stack),process.exit(1)}}async function hvt(){let e=pc("Pushing changes to Jira...").start();try{let{result:t}=await Khe(process.cwd(),{...tI,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}`),he.info("error:",t.stack),process.exit(1)}}var _1=new zq;_1.name("imdone").description(nbe).version(Mw);_1.command("pull").description("Pull issues from Jira").action(async()=>{await m_(),await kq(),await ube()});_1.command("push").description("Push changes to Jira").action(async()=>{await m_(),await kq(),await ube(),await hvt()});_1.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=>{await m_();let t=process.cwd();try{(!await zxe(t)||!await Zxe(t)||!await Jxe(t)||!await Kxe(t))&&(console.log("Configuration cancelled"),process.exit(1))}catch(u){he.error("Imdone initialization failed:",u),process.exit(1)}let r=await Xxe(e),n=pc("Initializing imdone...").start();try{await Qxe(t,r),n.succeed(`Imdone initialization for "${r.name}" completed successfully`)}catch(u){n.fail(`Imdone initialization failed: ${u.message}`),he.error(u),process.exit(1)}});_1.command("license").description("Enter or update your Imdone license").option("--token [token]","License token").option("--show","Show current license information").action(async e=>{await m_();let t=process.cwd();if(e.show){let u=pc("Fetching license information...").start();try{let i=await YA(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}`),he.error(i)}return}let r=e.token;r||(r=await Vxe());let n=pc("Validating license...").start();try{let u=await YA(r);u.valid||(n.fail(`Invalid license: ${u.reason}`),process.exit(1)),await Xhe(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}`),he.error(u),process.exit(1)}});(async function(){_1.parse()})();
465
+ Do you want to proceed?`,default:!1});return r}async function Xxe(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 bh.prompt(r);Object.assign(t,n)}catch{console.log("Configuration cancelled"),process.exit(1)}return t}var Iw=require("path");async function Qxe(e,{name:t,jiraUrl:r,jiraProjectKey:n,jiraUsername:u,jiraApiToken:i,jql:a}){let s={name:t,jiraUrl:r,jiraProjectKey:n,jql:a};await CY(e),await y7((0,Iw.dirname)(e),(0,Iw.basename)(e)),await y7(e,".env"),await Zhe(e,u,i),await zhe(e,"archive"),Ghe(e,s),he.info("Imdone project initialized successfully:",s)}var ebe={name:"imdone-cli",version:"0.2.1",author:"Jesse Piascik",description:"An imdone cli that automates your jira updates with markdown files.",license:"Proprietary",engines:{node:">=22.0.0"},main:"dist/index.min.cjs",type:"module",bin:{imdone:"dist/index.min.cjs","imdone-debug":"dist/index.cjs"},files:["dist","docs","LICENSE","README.md"],scripts:{prepublishOnly:"npm --prefix ../ install && npm --prefix ../ run build && npm i && npm test && npm run build",link:"npm link ../../imdone-core-2 ../../imdone-api",build:"node esbuild.config.js && cp public/* dist/",coverage:"vitest --run --coverage",test:"vitest --run","test-ci":"vitest --run"},dependencies:{chalk:"^5.4.1",commander:"^13.1.0",dotenv:"16.4.5","imdone-core":"^2.0.11",inquirer:"^12.5.2",jsonwebtoken:"^9.0.2",ora:"^8.2.0","simple-git":"^3.27.0"},devDependencies:{esbuild:"^0.25.2","esbuild-plugin-copy":"^2.1.1",vitest:"^3.1.1"}};var rbe=G(require("node:https"),1),{name:tbe,version:Mw,description:nbe}=ebe;async function dvt(e){return new Promise((t,r)=>{rbe.default.get(`https://registry.npmjs.org/${e}/latest`,n=>{let u="";n.on("data",i=>u+=i),n.on("end",()=>{try{let i=JSON.parse(u);t(i.version)}catch(i){r(i)}})}).on("error",r)})}async function m_(){try{let e=await dvt(tbe);e!==Mw&&(console.log(`Update available: ${e} (current: ${Mw})`),console.log(`Run 'npm install -g ${tbe}' to update.`))}catch(e){console.error("Error checking for updates:",e)}}he.setLevel(process.env.LOG_LEVEL||Li.ERROR);async function ube(){let e=pc("Pulling issues from Jira...").start();try{let{result:t}=await Vhe(process.cwd(),{...eI,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}`),he.info("error:",t.stack),process.exit(1)}}async function hvt(){let e=pc("Pushing changes to Jira...").start();try{let{result:t}=await Khe(process.cwd(),{...tI,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}`),he.info("error:",t.stack),process.exit(1)}}var _1=new zq;_1.name("imdone").description(nbe).version(Mw);_1.command("pull").description("Pull issues from Jira").action(async()=>{await m_(),await kq(),await ube()});_1.command("push").description("Push changes to Jira").action(async()=>{await m_(),await kq(),await ube(),await hvt()});_1.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=>{await m_();let t=process.cwd();try{(!await zxe(t)||!await Zxe(t)||!await Jxe(t)||!await Kxe(t))&&(console.log("Configuration cancelled"),process.exit(1))}catch(u){he.error("Imdone initialization failed:",u),process.exit(1)}let r=await Xxe(e),n=pc("Initializing imdone...").start();try{await Qxe(t,r),n.succeed(`Imdone initialization for "${r.name}" completed successfully`)}catch(u){n.fail(`Imdone initialization failed: ${u.message}`),he.error(u),process.exit(1)}});_1.command("license").description("Enter or update your Imdone license").option("--token [token]","License token").option("--show","Show current license information").action(async e=>{await m_();let t=process.cwd();if(e.show){let u=pc("Fetching license information...").start();try{let i=await YA(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}`),he.error(i)}return}let r=e.token;r||(r=await Vxe());let n=pc("Validating license...").start();try{let u=await YA(r);u.valid||(n.fail(`Invalid license: ${u.reason}`),process.exit(1)),await Xhe(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}`),he.error(u),process.exit(1)}});(async function(){_1.parse()})();
466
466
  /*! Bundled license information:
467
467
 
468
468
  is-extendable/index.js: